Ĺadny brzuch
Witam, robie program z kilkoma animowanymi panelami (TPanel) wsyzstko opiera sie na IF...THEN i pętli for
Wsyzstkie procedury wyglądają tak samo tylko różnią się nazwami paneli:
procedure TGlowna.Sys; var x:integer; begin if system.Top=128 then for x:=system.Top to 168 do begin Application.ProcessMessages; system.top:=system.Top+1; end else system.Top:=128; if system.Width=121 then for x:=system.Width to glowna.Width-system.Width do begin Application.ProcessMessages; system.width:=system.width+1; end else system.width:=121; if system.Height=33 then for x:=system.Height to glowna.Height-top.Height-100 do begin Application.ProcessMessages; system.height:=system.height+1; end else system.height:=33; glowna.Refresh; end;
Potem jest wywołanie przy buttonie i problem.
Jeżeli nacisnę dwa razy buttona to procedura wywołuje sie dwa razy...
Czy mogę zrobić coś takiego, aby zatrzymać wykonywanie powyższej procedury jeśli ozstanie wywołana inna...?
Może bardziej polódzku:
Koleś kliknął w buttona, pomylił się. Kliknął ten obok. Animują się teraz dwa panele na raz... Jak to zatrzymać?
Zrób tą animację w wątku. Buttonem odpalaj lub (jeżeli animacja jest odpalona) zatrzymuj. Bez większych problemów możesz to zrobić.
Wątki -->> czy do tego przyda mi się komponent IDThread coś tam :> ?
Nie :> Poczytaj to: http://4programmers....Rozdzia%C5%82_8
Ale to musze tworzyć każdy wątek dla jednej procedury?
//Dobra jużdoczytałemsie tego :)\dzięi
Użytkownik DJ Mentos edytował ten post 24 maj 2007, 19:33
Możesz całość upchnąć w jednej procedurze (w parametrze przekazywać wskaźnik do panela). Poza wątkami możesz też stworzyć sobie zmienną globalną Boolean, która będzie przyjmowała wartość True na stracie procedury, i False po jej zakończeniu. Wtedy na starcie dodajesz warunek sprawdzający, czy zmienna jest False, jeśli nie to wychodzisz z procedury, ale to droga na około. Wybrałbym wątki.
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Wsyzstkie procedury wyglądają tak samo tylko różnią się nazwami paneli:
procedure TGlowna.Sys; var x:integer; begin if system.Top=128 then for x:=system.Top to 168 do begin Application.ProcessMessages; system.top:=system.Top+1; end else system.Top:=128; if system.Width=121 then for x:=system.Width to glowna.Width-system.Width do begin Application.ProcessMessages; system.width:=system.width+1; end else system.width:=121; if system.Height=33 then for x:=system.Height to glowna.Height-top.Height-100 do begin Application.ProcessMessages; system.height:=system.height+1; end else system.height:=33; glowna.Refresh; end;
Potem jest wywołanie przy buttonie i problem.
Jeżeli nacisnę dwa razy buttona to procedura wywołuje sie dwa razy...
Czy mogę zrobić coś takiego, aby zatrzymać wykonywanie powyższej procedury jeśli ozstanie wywołana inna...?
Może bardziej polódzku:
Koleś kliknął w buttona, pomylił się. Kliknął ten obok. Animują się teraz dwa panele na raz... Jak to zatrzymać?
Zrób tą animację w wątku. Buttonem odpalaj lub (jeżeli animacja jest odpalona) zatrzymuj. Bez większych problemów możesz to zrobić.
Wątki -->> czy do tego przyda mi się komponent IDThread coś tam :> ?
Nie :> Poczytaj to: http://4programmers....Rozdzia%C5%82_8
Ale to musze tworzyć każdy wątek dla jednej procedury?
//Dobra jużdoczytałemsie tego :)\dzięi
Użytkownik DJ Mentos edytował ten post 24 maj 2007, 19:33
Możesz całość upchnąć w jednej procedurze (w parametrze przekazywać wskaźnik do panela). Poza wątkami możesz też stworzyć sobie zmienną globalną Boolean, która będzie przyjmowała wartość True na stracie procedury, i False po jej zakończeniu. Wtedy na starcie dodajesz warunek sprawdzający, czy zmienna jest False, jeśli nie to wychodzisz z procedury, ale to droga na około. Wybrałbym wątki.