Wywoływanie Button.Click co określony czas

Radic
2017-01-23 12:45
Radic
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

edytowany 1x, ostatnio: furious programming, 2017-01-23 13:26

Pozostało 580 znaków

2017-01-23 12:52
Moderator Delphi/Pascal

Rejestracja: 8 lat temu

Ostatnio: 2 minuty temu

Lokalizacja: Tuchów

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.


Pozostało 580 znaków

Radic
2017-01-23 13:04
Radic
0

Wielkie Dzięki :)

Pozostało 580 znaków

Sadam2
2017-01-23 13:13
Sadam2
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?.

edytowany 1x, ostatnio: furious programming, 2017-01-23 13:22
Co do kolorowania kodu - wystarczy dopisać nazwę języka po trzech backtickach otwierających kod; Dla podglądu, możesz skorzystać z przycisku strzałki obok ikonki do wstawiania znaczników kodu - po wybraniu języka zobaczysz jaki jest schemat. - furious programming 2017-01-23 13:25

Pozostało 580 znaków

Radic
2017-01-23 13:50
Radic
0

Przy Twoim burzy się kompilator w

linijce

Inc(Timer1.Tag);

Left side cannot be assigned to

Pozostało 580 znaków

2017-01-23 14:43

Rejestracja: 17 lat temu

Ostatnio: 3 dni temu

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.

Pozostało 580 znaków

Radic
2017-01-23 16:09
Radic
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

edytowany 1x, ostatnio: furious programming, 2017-01-23 19:28

Pozostało 580 znaków

Radic
2017-01-23 22:44
Radic
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ę

Pozostało 580 znaków

Sadam2
2017-01-24 07:22
Sadam2
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?

Pozostało 580 znaków

2017-01-24 09:46

Rejestracja: 17 lat temu

Ostatnio: 3 dni temu

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ć.

Pozostało 580 znaków

Świeżak2
2017-01-24 10:53
Świeżak2
0

Właśnie tego potrzebuje co napisałem nie armaty ale by się też przydała :)
potrzebuje obsłużyć trzy butony pod którymi mam procedury ale w określonych odstępach czasu
odstępami chcę sterować

Button 1 o x powtórzeniach ilością powtórzeń i ilością czasu miedzy nimi sterujemy po wykonaniu ostatniego
buton 2 po nim określona ilość czasu przerwy
i buton 3 po wykonaniu odegraniu dźwięku powracamy do początku
i tak w kółko aż buttonem stop zatrzymamy

Pozostało 580 znaków

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