[PR] Niechce mi się ciągle klikać ... ]:->

0

Troche nietypowa nazwa wątku, ale odzwierciedla ona mój problem..

Mianowicie chciałbym aby procedura 'OnMouseDown' w SpeedButtonie była wykonywana tak długo, aż nie puszcze tego przycisku. No a niestety wykonuje sie ona tylko jeden raz, potem musze puścić i wcisnąć SpeedButtona jeszcze raz. głupio troche :-)

//jak ktoś jeszcze nie zajarzył co ja wygaduje to przykład wszystko wyjaśni:
załóżmy np że zrobiłem swojego SpinEdita, składa sie on z Edit'a i dwóch SpeedButtonów, jeden dodaje wartość do Edita, drugi odejmuje, wiadomo - tak jak to robi SpinEdit, no ale niestety gdy będę chciał żeby wartość Edit'a wynosiła '1000' to będę musiał 1000 razy kliknąć na ktoregoś ze SpeedButtonów :-8, no i chciałbym osiągnąć takie coś, że jak trzymam tego SpeedButtona, to sie samo będzie dodawało, do momentu aż nie puszcze przycisku myszy, rozumiecie.

Wiem że mógłbym do tego celu użyć Timera, ale to tak troche głupio...

każda wskazówka mile widziana [browar]

0

Może stwórz sobie wątek, który będzie sprawdzał, czy SpeedButton1.Down, a jeśli tak, to bedzie coś tam robił, i tak w kółko.

0

timer na 1, onmousedown timer.enabled := true; onmouseup timer.enabled := false;

0

timer na 1, onmousedown timer.enabled := true; onmouseup timer.enabled := false;

1 => 1000 razy na sekundę??? chyba oszalałeś :|
poza tym Japcok pisze, że nie chce tego na timerze (aczkolwiek tak na pewno będzie najłatwiej).

Japcok: masz do wyboru dwie opcje - albo na timerze, albo na wątkach. inaczej nie pójdzie. Na wątkach będzie dużo trudniej, ale za to dużo fajniej [peace]

0

1000s: timer robi zwykle ort!, i jego czas jest uzalezniony od CPU. Poza tym to jest tylko przyklad i w zaleznosci do czego to jest potrzebne interval'a mozna se zmienic

<$---

co do tego, ze napisal, ze nie chce timera to rzeczywiscie - jest mi glupio

0

Oki dzieki za odpowiedzi. użyje tego nieszczęsnego Timera, bo nie chce mi sie za bardzo uczyć tych wątków, artykuł jest taki długi... :-P zresztą łatwiej będzie Timerem, jak już pisał Łukasz Fronczyk, po co mam se utrudniać taką błahostke.

kiedys se te wątki oblukam bo to ważna rzecz jest [tak]

[<font color="blue">Dopisane</span>:]
DO IKARI pod spodem:
no comments... posty se nabijasz czy co ? przecież już te rozwiązanie napisał ktoś wyżej.

0

Bez Timera też możesz:

zadeklaruj zmieną globalną np:
...
private
koniec : Boolean ;
...

a w on down i up :

procedure TForm1.SpeedButton1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
koniec := True ;
While koniec do
begin
  Application.ProcessMessages ;
  sleep(100) ;
  Edit1.Text:=IntToStr(StrToInt(Edit1.Text)+1) ;
End;
end;

procedure TForm1.SpeedButton1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
koniec := False ;
end;
0

że też o tym nie pomyślałem [glowa]

Mirekpil WIELKIE dzięki [browar]

1 użytkowników online, w tym zalogowanych: 0, gości: 1