Delphi-PRAXiS
Seite 1 von 2  1 2      

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 Einen Button Click Event von anderem Formular aufrufen? (https://www.delphipraxis.net/167139-einen-button-click-event-von-anderem-formular-aufrufen.html)

Satyr 14. Mär 2012 23:32

Einen Button Click Event von anderem Formular aufrufen?
 
Guten Abend,

mein Problem ist folgendes: Ich habe ein Programm mit 2 Formularen. Auf dem ersten ist ein Button der Daten verarbeitet, wenn er angeklickt wird. Soweit funktioniert es. Jetzt habe ich aber auf dem 2. Formular eine Situation, in der ich gerne das Klicken auf oben genannten Button nutzen würde.
Ist einfach, dachte ich mir:

Form1.button.click;

Leider funktioniert das aber nicht. Es gibt keine Fehlermeldung oder so. Das Click Ereignis vom Button wird schlicht nicht ausgeführt.
Wenn ich aber per Hand bzw. Maus auf den Button klicke, funktioniert es.

Was läuft da schief?
Ich habe das onClick Event eines Buttons schon öfter fremdbenutzt. Allerdings immer vom gleichen Formular aus. Da hatte ich nie Probleme. Was also jetzt?

Gruß,
Andreas

Popov 14. Mär 2012 23:43

AW: Einen Button Click Event von anderem Formular aufrufen?
 
Evtl. so:

Delphi-Quellcode:
  Form2.Button1Click(nil);

Luckie 14. Mär 2012 23:56

AW: Einen Button Click Event von anderem Formular aufrufen?
 
Das macht man nicht. Lager den Code von dem Button-Klick Ereignis in eine öffentliche Methode aus, die du dann von dem anderen Formular aus aufrufen kannst. Und noch besser wäre es, wenn du den Code von der Oberfläche trennst, dann hast du solche Probleme erst gar nicht.

Satyr 15. Mär 2012 00:04

AW: Einen Button Click Event von anderem Formular aufrufen?
 
@popov
Leider tut sich auch da nichts...

@Luckie
Ich weiß das dies kein schöner Code ist. Ich hatte das auch so nicht geplant. Der Button interagiert mit anderen Controls auf dem Formular (Edits und Labels). Das zweite Formular kam später als nicht geplanter Zusatz, sonst hätte ich es direkt anders aufgebaut. Anstatt jetzt alles umzuschreiben, fänd ich ein Button.Click schlicht am einfachsten und - wenn es funktionieren würde - auch die Zeitsparendste Anpassung momentan.
Deshalb ging meine Frage auch eher in die Richtung warum Delphi das nicht mag und wie man das "mal eben" umgehen könnte. Das dieser Code keinen Schönheitswettbewerb gewinnen wird, ist mir bewusst.

Luckie 15. Mär 2012 00:10

AW: Einen Button Click Event von anderem Formular aufrufen?
 
Dann mach den Code zumindest zu einer öffentlichen Methode des Formulars, dann hast du immer noch Zugriff auf die Steuerelemente des Formulars.

Popov 15. Mär 2012 00:12

AW: Einen Button Click Event von anderem Formular aufrufen?
 
Unabhängig dessen ob es schön ist oder nicht und man es macht oder nicht, so solle es funktionieren.

Satyr 15. Mär 2012 00:15

AW: Einen Button Click Event von anderem Formular aufrufen?
 
@Luckie
Ok, das ist ne Idee.
Probiere ich morgen als erstes, danke :).
Gibt es trotzdem nen Grund warum Delphi damit Probleme hat? Will es wenigstens nachvollziehen können...

Luckie 15. Mär 2012 00:21

AW: Einen Button Click Event von anderem Formular aufrufen?
 
Formular2:
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
begin
  ShowMessage('Test');
end;
Formular1:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2.Button1.Click;
end;
Funktioniert.

Bummi 15. Mär 2012 06:10

AW: Einen Button Click Event von anderem Formular aufrufen?
 
Kann es sein dass hinter der Variable Form1 gar nicht das Form liegt welches Du siehst ...

himitsu 15. Mär 2012 08:13

AW: Einen Button Click Event von anderem Formular aufrufen?
 
Zitat:

Delphi-Quellcode:
Form2.Button1Click(nil);

Wenn Form2 (sehr schöner Name) nicht existiert (keine Instanz davon), dann kann man diese Funktion nicht aufrufen.

Und welche Daten sollen denn verarbeitet werden, also wo kommen die her?

@Bummi: Ja ja, immer diese bösen globalen Variablen. :twisted:


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:39 Uhr.
Seite 1 von 2  1 2      

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