Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Button1.click auf einer anderen Form ausführen! (https://www.delphipraxis.net/73509-button1-click-auf-einer-anderen-form-ausfuehren.html)

Go2EITS 19. Jul 2006 08:59


Button1.click auf einer anderen Form ausführen!
 
Guten Morgen,

ich habe mal die Frage gestellt, wie man eine Procedure direkt aufruft, die normalerweise
zum Beispiel mit dem Ergeignis Button1.click ausgeführt wird.

Die Antwort war:

Button1Click(nil); //oder
Button1Click(Form1); //oder
Button1Click(Sender);

Unproblematisch ist es, um es vorwegzunehmen, wenn die Form sichtbar ist:
Form2.Button1Click(Sender); Klappt bestens.

Aber:
Wenn die Form nicht sichtbar ist, und ich mit form2.Button1Click(Sender) aufrufe, gibt es eine Exception.

Die Diskusion und die Vorteile daraus, den Code auszulagern und separat vorn Form1 und Form2 aufzurufen, ist mir bekannt.

Gibt es eine Möglichkeit, das Ereignis der nicht sichtbaren Form Form2.button1Click direkt aufzurufen, ohne eine Exception auszulösen?

Vielen Dank für Eure Antworten im voraus.

GO2EITS

Bernhard Geyer 19. Jul 2006 09:01

Re: Button1.click auf einer anderen Form ausführen!
 
Ist überhaupt form2 schon erzeugt oder arbeitest du mit einem nil-Zeiger?

Helmi 19. Jul 2006 09:03

Re: Button1.click auf einer anderen Form ausführen!
 
Hallo,

versuchs doch mal so:

Delphi-Quellcode:
Form2.Button1.Click;

Go2EITS 19. Jul 2006 09:04

Re: Button1.click auf einer anderen Form ausführen!
 
@Geyer
Form2 ist noch nicht erzeugt/sichtbar.
NIL Zeiger?

@Helmi
Auch dies als Ergänzung zu der oben genannten Lösung
erzeugt die Exception. Das Problem wird sein, das die Form2
wohl nicht createt/erstellt ist.

Da werde ich die Prozedur doch aus der Form2.Button1.Click auslagern müssen.

malo 19. Jul 2006 09:24

Re: Button1.click auf einer anderen Form ausführen!
 
Erzeugt muss die Form schon sein. Sonst hilft da alles nichts ;)

Erzeugst du die Form dynamisch oder hast du das über die Delphi-IDE gemacht?

Go2EITS 19. Jul 2006 09:45

Re: Button1.click auf einer anderen Form ausführen!
 
@malo
über die IDE.
Weitere Antworten wieder heute Abend.
Danke für die Hilfe.

Bin nun offline. :hi:
Go2EITS

Sidorion 19. Jul 2006 10:39

Re: Button1.click auf einer anderen Form ausführen!
 
Mach die Function Button1Click zur Class function dann kannst Du TForm2.Button1Click rufen.
Dann kannst Du allerdings in der Funktion nicht mehr auf Member der Forn zugreifen, da diese dann nicht zwingend gültig sind.

Michael Habbe 19. Jul 2006 10:46

Re: Button1.click auf einer anderen Form ausführen!
 
Dir Frage ist, ob Delphi das Formular automatisch erzeugt oder Du das von Hand machst:
Delphi-Quellcode:

  // 1) über die Projektdatei .dpr (Projekt -> Optionen -> Formulare -> automatisch erzeugen)
  Application.CreateForm(TForm2, Form2);


  // 2) manuell kurz vorm Aufruf
  if Form2 = nil then
    Form2 := TForm.Create(self);
  Form2.Show;
  Form2.Button1.Click;
Wenn das aufzurufende Formular (kreiert mit 1. Methode) zwischendurch freigegeben wird, führt ein Aufruf von Form2.Button1.Click zur Exception. Dann muss das Formular erst mit Methode 2 wieder kreiert werden.


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

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