Wywoływanie Button.Click co określony czas

0

Cześć.
Jak zrobić wywołanie zdarzenia Button1Click Drugim Buttonem
w powtarzającej się sekwencji co x sekund (button1Click)
o określonej z góry ilości powtórzeń
gdzie odstępy czasowe oraz ilość powtórzeń podajemy z Edit1 oraz Edit2

0

Jak zrobić wywołanie zdarzenia Button1Click Drugim Buttonem

procedure TForm1.Button2Click(Sender: TObject);
begin
  Button1.Click();
end;

w powtarzającej się sekwencji co x sekund (button1Click)

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Button2.Click();
end;

o określonej z góry ilości powtórzeń

Przechowuj ją w TTimer.Tag;

gdzie odstępy czasowe oraz ilość powtórzeń podajemy z Edit1 oraz Edit2

Timer1.Interval := StrToInt(Edit1.Text);
Timer1.Tag := StrToInt(Edit2.Text);

Nie wnikam po co Ci takie kombinacje.

0

Wielkie Dzięki :)

0

Przystosuję nieco odpowiedź przedpiścy.
Button1Click to zwykła procedura z jednym parametrem. Można ją wywołać w dowolnym miejscu kodu. Parametr Sender jest używany do przekazania tej procedurze kto ją zawołał. Jeśli nie używasz w niej tego parametru, to przy wywołaniu możesz podać nawet nil. Czyli możesz położyć komponent TTimer na formę i ustawić mu Enabled na false. Wtedy będzie nieaktywny.
Tag w Timer to takie miejsce do przechowywania czegoś. Możesz wkładać co chcesz. Na początku jest tam zero. W zdarzeniu OnTimer Twojego zegara wstaw np:

If Timer1.Tag >= StrToInt(Edit2.Text) then
begin
  Timer1.Enabled := false;
  Timer1.Tag := 0;
  Button2.Enabled := true;
end
else
begin
  Inc(Timer1.Tag);
  Button1Click(nil);
  Button2.Enabled := false;
end;

no i ten drugi przycisk niech robi tylko:

Timer1.Enabled := true 

cholerka, jak tu teraz koloruje się kod źródłowy?.

0

Przy Twoim burzy się kompilator w

linijce

Inc(Timer1.Tag);

Left side cannot be assigned to

0
Sadam2 napisał(a):

Przystosuję nieco odpowiedź przedpiścy.
Button1Click to zwykła procedura z jednym parametrem.

Bzdury napisałeś w kodzie. Metoda zdarzeniowa Button1Click to coś zupełnie innego niż wywołanie kliknięcia: Button1.Click.

0

Dzięki Chłopaki
Dzięki Waszej pomocy wyszło mi coś takiego
Działa tak jak chciałem ale i tak Was na końcu o coś poproszę jeszcze
ale jeśli już tu widzicie błędy to proszę wskazujcie na tym początkowym etapie moje nauki nawet
najostrzejsza krytyka jest mile widziana :)

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   Timer1.Tag:= Timer1.Tag-1;
   labelEndeTag.caption:='Zakonczenie programu za: ' + inttostr(Timer1.Tag);
   button1.Click();
   if Timer1.Tag<=0 then
   timer1.Enabled:=False;
end;

procedure TForm1.ButtonStartClick(Sender: TObject);
begin
   timer1.interval:=StrToint(Editinterval1.Text)*1000;
   Timer1.Tag:=StrToInt(EditTag.Text);
   timer1.Enabled:=true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  LabelNrButtonClick.Caption :='Button 1' ;
end;

procedure TForm1.Button2Click(Sender: TObject);
 begin
  LabelNrButtonClick.Caption:='Button 2'
end;

procedure TForm1.ButtonStopClick(Sender: TObject);
begin
 timer1.Enabled:=False;
end;

A teraz ta milsza cześć :) Pytanie

procedure TForm1.Timer1Timer(Sender: TObject);

Moja prośba o pomoc w ułożeniu pętli.
Po Tym :

  if Timer1.Tag<=0 then

Jest kolejne zdarzenie Buton2Click
Po wykonaniu mamy mieć określoną przerwę czasowa przed wykonaniem Butonn3Click
określamy ją Edit3.Text

Po przerwie określonej mamy zdarzenie Button3Click

a po jego wykonaniu zapętlamy (wracamy do początku od nowa)

aż do kliku w ButtonStopClick, zamknięciu programu, śmierci użytkownika :) etc.

W Button2 i Button3 są jednorazowe ale są w nich dźwięki mp3 muszą się odegrać do końca

0

Ja NIE chce nadużywać Waszej pomocy też nie liczę na gotowe rozwiązane.

Robię to pod trening interwałowy bo te wszystkie w smartfonach to porażka kiedyś troszkę
pisałem ale to lata świetlne,

Więc trochę wróciłem do tematu jak pisałem ale za stary jestem na przerabianie Delphi

Proszę tylko o budowę pustej takiej pętli jak powinna wyglądać z tym zapętleniem ja powoli sobie ją uzbroję

I jak wymusić (nie wiem czy konieczne) odegranie dźwięku Mp3 przed kolejnym zdarzeniem OnClick kolejnego buttona,moze się uruchomi dopiero po jego ukończeniu, wybaczcie nie pamiętam.
Z góry bardzo dziękuję

0

Prawdę mówiąc nie rozumiem, do czego dążysz z tą, jak to nazywasz, pętlą. Ale może potrzebujesz nie jednego zegara, ale dwóch?

0

A ja zadam inne pytanie. Co dokładnie chcesz osiągnąć? Często ludzie pytają się, jak skonstruować armatę, a potem okazuje się, że tak naprawdę potrzebują packi na muchy. Więc napisz, co dokładnie chcesz osiągnąć, bo wydaje mi się, że starasz się coś udziwnić.

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