Methode beim Programmstart ausführen
-
- Beiträge: 28
- Registriert: Di 8. Mär 2016, 11:46
- OS, Lazarus, FPC: Windows10
- CPU-Target: Win64
Methode beim Programmstart ausführen
In dem beigefügten kleinen Beispiel möchte ich erreichen, daß die Methode Button1
auch schon beim Start des Programms ausgeführt wird.
Was auch ginge: bei den ButtonEvents ONClick und ONEnter eintragen. Dann wird es beim erhalten des Focus ausgeführt.
Aber gibt es nicht eine grundsätzliche Möglichkeit dafür wie in der letzten Zeile der Beep?
auch schon beim Start des Programms ausgeführt wird.
Was auch ginge: bei den ButtonEvents ONClick und ONEnter eintragen. Dann wird es beim erhalten des Focus ausgeführt.
Aber gibt es nicht eine grundsätzliche Möglichkeit dafür wie in der letzten Zeile der Beep?
- Dateianhänge
-
Start.zip
- (3.15 KiB) 66-mal heruntergeladen
Re: Methode beim Programmstart ausführen
Du solltest das in einem Ereignis des Formulars machen.
z.B. OnCreate, OnShow, OnActivate.
z.B. OnCreate, OnShow, OnActivate.
-
- Beiträge: 607
- Registriert: Di 19. Mai 2015, 20:05
- OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
- CPU-Target: x86_64-linux-gtk2
Re: Methode beim Programmstart ausführen
Hallo wernkrau38,
ich weiß natürlich nicht was letztlich dein Ziel ist. Aber wie Theo schon schrieb bieten sich da OnCreate, OnShow, OnActivate an. Im OnCreate kann es dir halt passieren das Daten die du gerne verarbeiten möchtest noch nicht vorliegen. Die anderen Beiden können mehrmals durchlaufen werden. Da kann es dann notwendig sein die mehrmalige Ausführung deines Codes mit einem Flag zu verhindern. Kommt halt drauf an. Eventuell nützt dir mein kleines Beispiel etwas.
Viele Grüße
Bernd
ich weiß natürlich nicht was letztlich dein Ziel ist. Aber wie Theo schon schrieb bieten sich da OnCreate, OnShow, OnActivate an. Im OnCreate kann es dir halt passieren das Daten die du gerne verarbeiten möchtest noch nicht vorliegen. Die anderen Beiden können mehrmals durchlaufen werden. Da kann es dann notwendig sein die mehrmalige Ausführung deines Codes mit einem Flag zu verhindern. Kommt halt drauf an. Eventuell nützt dir mein kleines Beispiel etwas.
Viele Grüße
Bernd
- Dateianhänge
-
project1.zip
- (105.53 KiB) 67-mal heruntergeladen
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Methode beim Programmstart ausführen
Es gibt auch noch die Möglichkeit, ein Event einmalig beim OnShow zu durchlaufen.
Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
begin
AddHandlerFirstShow(@Button1Click);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('Hallo');
end;
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 28
- Registriert: Di 8. Mär 2016, 11:46
- OS, Lazarus, FPC: Windows10
- CPU-Target: Win64
Re: Methode beim Programmstart ausführen
Ja, das habe ich gesucht.
Man muß sich halt von der historischen Pascal-Programmierung lösen und streng in Objekten und Ereignissen denken.
Herzlichen Dank an Euch alle!
Man muß sich halt von der historischen Pascal-Programmierung lösen und streng in Objekten und Ereignissen denken.
Herzlichen Dank an Euch alle!
-
- Beiträge: 607
- Registriert: Di 19. Mai 2015, 20:05
- OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
- CPU-Target: x86_64-linux-gtk2
Re: Methode beim Programmstart ausführen
@Socke: Danke für AddHandlerFirstShow. Das kannte ich noch nicht, werde es ab jetzt aber gern benutzen.
Viele Grüße
Bernd
Viele Grüße
Bernd
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Methode beim Programmstart ausführen
Eigentlich könnte es dafür mal ein eigenes Ereignis im OI geben. OnFirstShow oder sowas. Das ist ja ein recht häufiges Problem.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 758
- Registriert: Di 23. Aug 2016, 14:25
- OS, Lazarus, FPC: Windows 11
- CPU-Target: 64Bit
- Wohnort: Berlin
Re: Methode beim Programmstart ausführen
Ich habe das in meinem Button auch schon länger drin,
dafür gibt es die Eigenschaft FirstClick bei mir:
Wenn Taste down, dann wird nach Loaded OnClick aufgerufen
sofern die Eigenschaft FirstClick auf TRUE steht
@Socke: AddHandlerFirstShow(@Button1Click); kannte ich auch noch nicht. Danke
dafür gibt es die Eigenschaft FirstClick bei mir:
Wenn Taste down, dann wird nach Loaded OnClick aufgerufen
sofern die Eigenschaft FirstClick auf TRUE steht
Code: Alles auswählen
const DefaultFirstClick = TRUE;
Type TSiroButton = class(TCustomControl)
private
FFirstClick : Boolean; // wenn Taste down wird nach Loaded OnClick aufgerufen
property FirstClick : Boolean read FFirstClick write FFirstClick default DefaultFirstClick;
protected
procedure Loaded; override;
end;
procedure TSiroButton.Loaded;
begin
inherited;
// der erste Klick beim Starten der Anwendung wird manuell ausgelöst
// sofern FirstClick auf TRUE steht
if down and FirstClick and Assigned(OnClick) then OnClick(self);
end;
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...