![]() |
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 |
Re: Button1.click auf einer anderen Form ausführen!
Ist überhaupt form2 schon erzeugt oder arbeitest du mit einem nil-Zeiger?
|
Re: Button1.click auf einer anderen Form ausführen!
Hallo,
versuchs doch mal so:
Delphi-Quellcode:
Form2.Button1.Click;
|
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. |
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? |
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 |
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. |
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:
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.// 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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:25 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 by Thomas Breitkreuz