X
ďťż

Ładny brzuch

WITAM I HLP ME!

No wiec tak: programuję w Delphi7 i na formie mam VLE (ValueListEditor), i dwa buttony. Opcje VLE są tak skonfigurowane, że po kliknięciu zaznaczona jest cała linijka (linijka = nazwa + wartość).

buttony:
button1.Caption := i 'pozycja w górę'; button2.Caption := '1 pozycja w dół';

Chodzi i to, że po kliknięciu na button, zaznaczona przez myszkę linijka przesuwa się o jedną pozycję w górę lub w dół.

Prosiłbym o pomoc + kodziki

DJ Prog




WITAM I HLP ME!
Chodzi i to, że po kliknięciu na button, zaznaczona przez myszkę linijka przesuwa się o jedną pozycję w górę lub w dół.
Prosiłbym o pomoc + kodziki
DJ Prog


Heh ja bym poszedl na proscizne, i wczytywal do 4 zmiennych sasiadujace ze soba wartosci (tzn. nazwa+wartosc zaznaczona i nazwa+wartosc nad zaznaczeniem) i po prostu zamienial miejscami wartosci :) Troszke lame, no ale...


Ja mam troche mniej pamieciozerne rozwiązanie:

a aby przesunąć w góre to analogicznie :).



Programisto1101, po kodzie piszesz 'w górę analogicznie'. To jak jest to slowo po angielsku? Kombinowalem i nic!

Bo:
pred - predecessor - poprzednik

A jak jest odwrotnie??? I jakbym mogl 'zabezpieczyc' sie przed bledem aplikacji (gdy dojdzie do ostatniej linijki to program ma Errora) przykladowo ShowMessagiem ???

Pomozcie!

DJ ProG


Programisto1101, po kodzie piszesz 'w górę analogicznie'. To jak jest to slowo po angielsku? Kombinowalem i nic!

Bo:
pred - predecessor - poprzednik

A jak jest odwrotnie??? I jakbym mogl 'zabezpieczyc' sie przed bledem aplikacji (gdy dojdzie do ostatniej linijki to program ma Errora) przykladowo ShowMessagiem ???
Pomozcie!

DJ ProG

Analogią do Pred() jest Succ().

Pred(10) = 9
Succ(10) = 11

Nie należy mylić z Inc() i Dec();

co do tego zabezpieczenia:
migajek: nie ma czegoś takiego jak vle.Items.Count ;)
if vle.Row = Pred(vle.RowCount) then   showmessage('błąd');
Użytkownik programista1101 edytował ten post 21 maj 2005, 13:17

migajek: nie ma czegoś takiego jak vle.Items.Count ;)

Dobra. o juz sie pogubilem. Probowalem z tym Succ (chodzilo mi o odwrotnosc Pred) i succ przesuwa do góry druga (czy trzecia) pozycje od zaznaczonej (w dol).

A i co z tym zabezpieczeniem???

Prosze, pomozcie !! DJ ProG
Użytkownik DJ_ProG edytował ten post 25 maj 2005, 17:31

Dobra. o juz sie pogubilem. Probowalem z tym Succ (chodzilo mi o odwrotnosc Pred) i succ przesuwa do góry druga (czy trzecia) pozycje od zaznaczonej (w dol).

A i co z tym zabezpieczeniem???

Prosze, pomozcie !!  DJ ProG


imho lepiej uzywac +1 i -1 jest czytelniej.
jakim zabezpieczeniem?

Jakos kodzik nie chodzi. Taki blad wyskakuje w debuggerze:
Project Project1.exe raised exception class EStringListError with message 'List index out of bounds (ostatnia linijka)'. Process stopped. use Step or Run to continue.

Gdy (liczac ze gorna belka VLE jest 0) to przerobilem kod na if vle.Row = Pred(Pred(vle.RowCount)) then  showmessage('błąd'); i jesli przesune przedostatnia wartosc o 1 w dol to sie pokaze, ale jak ostatnia probuje na tamtym kodzie (bez jednego pred) to wyskakuje powyzszy kod. I co ? Nie wiem co dalej... HLP ME!

Aha no i Succ mi nie chodzi - Pred przesuwa w dol zaznaczona pozycje, a suc przesuwaa w gore druga pozycje pod zaznaczona, a nie zaznaczony row...

HLP ME!!! DJ ProG
Użytkownik DJ_ProG edytował ten post 26 maj 2005, 15:09
Już się pogubiłem.
Masz tu w pelni działający kod na DOWN i UP wraz z zabezpieczeniem:

DOWN:

var tmp: string; begin if vle.row < Pred(VLE.RowCount) then begin tmp := vle.Strings[Pred(vle.row)]; vle.Strings[Pred(vle.Row)] := vle.Strings[vle.row]; vle.Strings[vle.row] := tmp; end else showmessage('nie da rady nizej!'); end;

UP:
var tmp: string; begin if vle.row > 1 then begin tmp := vle.Strings[Pred(Pred(vle.row))]; vle.Strings[Pred(Pred(vle.row))] := vle.Strings[Pred(vle.Row)]; vle.Strings[Pred(vle.Row)] := tmp; end else   showmessage('nie da rady wyzej!'); end;

A rzeczywiście chodzi!
DZIĘKI!!!

Sorry, za zamieszanie...

Pozdrawiam, DJ ProG

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •  

    Drogi uzytkowniku!

    W trosce o komfort korzystania z naszego serwisu chcemy dostarczac Ci coraz lepsze uslugi. By moc to robic prosimy, abys wyrazil zgode na dopasowanie tresci marketingowych do Twoich zachowan w serwisie. Zgoda ta pozwoli nam czesciowo finansowac rozwoj swiadczonych uslug.

    Pamietaj, ze dbamy o Twoja prywatnosc. Nie zwiekszamy zakresu naszych uprawnien bez Twojej zgody. Zadbamy rowniez o bezpieczenstwo Twoich danych. Wyrazona zgode mozesz cofnac w kazdej chwili.

     Tak, zgadzam sie na nadanie mi "cookie" i korzystanie z danych przez Administratora Serwisu i jego partnerow w celu dopasowania tresci do moich potrzeb. Przeczytalem(am) Polityke prywatnosci. Rozumiem ja i akceptuje.

     Tak, zgadzam sie na przetwarzanie moich danych osobowych przez Administratora Serwisu i jego partnerow w celu personalizowania wyswietlanych mi reklam i dostosowania do mnie prezentowanych tresci marketingowych. Przeczytalem(am) Polityke prywatnosci. Rozumiem ja i akceptuje.

    Wyrazenie powyzszych zgod jest dobrowolne i mozesz je w dowolnym momencie wycofac poprzez opcje: "Twoje zgody", dostepnej w prawym, dolnym rogu strony lub poprzez usuniecie "cookies" w swojej przegladarce dla powyzej strony, z tym, ze wycofanie zgody nie bedzie mialo wplywu na zgodnosc z prawem przetwarzania na podstawie zgody, przed jej wycofaniem.