Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Eine Funktion automatisch bei Programmstart starten lassen? (https://www.delphipraxis.net/30124-eine-funktion-automatisch-bei-programmstart-starten-lassen.html)

malo 20. Sep 2004 14:34


Eine Funktion automatisch bei Programmstart starten lassen?
 
Wie der Titel schon sagt, wüsste ich gerne, wie man eine Funktion automatisch bei Programmstart starten lassen kann. Also ohne, dass irgendetwas vom Prgrammnutzer gemacht werden muss.

Ich will nämlich jetzt zum Beispiel, dass bei Start des Programms ein Messagefenster aufgeht und eine Message zeigt á la "Schön, dass Sie mein Programm nutzen". Wie geht das?

maxk 20. Sep 2004 14:35

Re: Eine Funktion automatisch bei Programmstart starten lass
 
Da gibt es mehrere Möglichkeiten. Ich empfehle den Code bei TForm.OnCreate reinzupacken (Doppelklick aufs Form)

Gruß,
maxk

Aenogym 20. Sep 2004 14:36

Re: Eine Funktion automatisch bei Programmstart starten lass
 
hi,

gib einfach den gewünschten code im Delphi-Referenz durchsuchenOnCreate-Event deines Hauptfensters ein. etwa so:
Delphi-Quellcode:
procedure TForm1.OnCreate(Sender: TObject);
begin
  showmessage('Vielen Dank, dass Sie mein Programm benutzen!');
end;
Aenogym

Bernhard Geyer 20. Sep 2004 14:36

Re: Eine Funktion automatisch bei Programmstart starten lass
 
Dafür könntest Du z.B. das FormCreate oder FormShow-Event des Hauptformulars verwenden.

Delphi-Quellcode:
procedure Form1.FormCreate(Sender: TObject);
begin
  ShowMessage('Hallo Lieber User');
end;

malo 20. Sep 2004 14:37

Re: Eine Funktion automatisch bei Programmstart starten lass
 
Aaaah... genau sowas hab ich gesucht, danke :D

Wem noch andere Möglichkeiten einfallen, kann sie gerne posten, ich sammel gerne ;)

jfheins 20. Sep 2004 14:38

Re: Eine Funktion automatisch bei Programmstart starten lass
 
Du kannst Code immer nur als Reaktion auf ein Ereignis ausführen lassen, das Programm kann nur was tun, wenn etwas passiert ist, und daraufhin etwas machen. (OOP)
Zum Problem: Schau dir mal Form1.OnCreate an, und wann dies ausgelöst wird ... :zwinker:

maxk 20. Sep 2004 14:38

Re: Eine Funktion automatisch bei Programmstart starten lass
 
Wenn du auf deine Forms nicht angewiesen bist, kannst du den Code auch direkt in deine DPR Datei packen (gleich nach begin oder vor Application.Run)

Aenogym 20. Sep 2004 14:39

Re: Eine Funktion automatisch bei Programmstart starten lass
 
Zitat:

Zitat von malo
Wem noch andere Möglichkeiten einfallen, kann sie gerne posten, ich sammel gerne ;)

bei bestimmten dingen, könnte der code im ONCreate crashen. zum beispiel, wenn du schon dort auf ein anderes, noch nicht erstelltes, formular zugreifst. für solche fälle empfehle ich dir, das ganze nicht bei OnCreate sondern bei Delphi-Referenz durchsuchenOnShow des Formulars reinzupacken - dann bist du auf der sicheren seite ;)

edit: lustig, eine kleine farge und soooo viele antworten, die alle dasselbe aussagen :stupid:

Aenogym

Tyrael Y. 20. Sep 2004 15:36

Re: Eine Funktion automatisch bei Programmstart starten lass
 
Zitat:

...das ganze nicht bei OnCreate sondern bei OnShow des Formulars reinzupacken - dann bist du auf der sicheren seite..

Vorsicht !!!!


OnShow wird nicht nur einmal ausgelöst.

Wenn du den Fokus auf ein anderes Fenster setzt und dann auf dein Fenster zurückspringst wird
OnShow wieder ausgelöst, deshalb vorsicht mit OnShow.
Man sollte genau gucken, was man vor hat und je nach dem das Ereignis auswählen.


mfg

mirage228 20. Sep 2004 15:42

Re: Eine Funktion automatisch bei Programmstart starten lass
 
Hi,

soweit ich weiss, wird OnShow nur beim wieder sichtbar machen des Fenster ausgeführt (Visible := True; und Show();). OnActivate wird ausgelöst, wenn das Formular den Fokus wieder bekommt.

Aber, dass beide nicht nur einmal ausgelöst werden, stimmt.

mfG
mirage228

Ultimator 20. Sep 2004 15:42

Re: Eine Funktion automatisch bei Programmstart starten lass
 
Naja, man könnte ja eine Boolesche Variable ins OnShow-Ereignis einbauen, und diese beim ersten ausführen der Prozedur auf true stellen, etwa so:
Delphi-Quellcode:
procedure TDeineForm.FormShow(Sender: TObject);
var Ausgefuehrt: boolean;
begin
  if ausgefuehrt = false then
  begin
    //Deine Anweisungen
    Ausgefuehrt := true;
  end
  else
    ShowMessage('Deine Anweisungen wurden bereits ausgeführt.');
end;

Aenogym 20. Sep 2004 15:45

Re: Eine Funktion automatisch bei Programmstart starten lass
 
Zitat:

Zitat von Tyrael Y.
Zitat:

...das ganze nicht bei OnCreate sondern bei OnShow des Formulars reinzupacken - dann bist du auf der sicheren seite..

Vorsicht !!!!


OnShow wird nicht nur einmal ausgelöst.

Wenn du den Fokus auf ein anderes Fenster setzt und dann auf dein Fenster zurückspringst wird
OnShow wieder ausgelöst, deshalb vorsicht mit OnShow.
Man sollte genau gucken, was man vor hat und je nach dem das Ereignis auswählen.


mfg

das ist nicht ganz richtig. wenn ich ein anderes fenster aktiviere und dann wieder zu meiner anwendung zurückspringe, dann wird OnActivate ausgelöst. wenn ich mein fenster allerdings per [oh]TForm.Close;[/oh] schließe, es per [oh]TForm.Hide;[/oh] verstecke oder die eigenschaft Delphi-Referenz durchsuchenTForm.Visible auf False stelle, dann wird OnShow beim nächsten anzeigen wieder ausgelöst.

demnach wäre es die beste methode, den gewünschten code unmittelbar vor Application.Run; in der Projektdatei auszuführen.

Aenogym

alcaeus 20. Sep 2004 15:46

Re: Eine Funktion automatisch bei Programmstart starten lass
 
Zitat:

Zitat von Ultimator
Naja, man könnte ja eine Boolesche Variable ins OnShow-Ereignis einbauen, und diese beim ersten ausführen der Prozedur auf true stellen, etwa so:
Delphi-Quellcode:
procedure TDeineForm.FormShow(Sender: TObject);
var Ausgefuehrt: boolean;
begin
  if ausgefuehrt = false then
  begin
    //Deine Anweisungen
    Ausgefuehrt := true;
  end
  else
    ShowMessage('Deine Anweisungen wurden bereits ausgeführt.');
end;

Da liegst du falsch, denn die Variable ist lokal und wird bei jedem Aufruf von OnShow neu "erstellt". Du bräuchtest eine Klassenvariable dafür.

Greetz
alcaeus


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz