Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Mehrere Ereignisse zusammenfassen (https://www.delphipraxis.net/180011-mehrere-ereignisse-zusammenfassen.html)

Nils S. 16. Apr 2014 19:29

Mehrere Ereignisse zusammenfassen
 
Hallo zusammen,

wie kann ich mehrere Ereignisse zusammenfassen, die die gleiche Prozedur auslösen sollen?

Beispiel:
Delphi-Quellcode:
procedure TForm1.Button1.Click, TForm2.Button2.Click;
begin
  Close;
end;
So funktioniert es natürlich leider nicht.
Aber irgendwie ist das doch bestimmt machbar oder?

Freue mich schon auf Eure Hilfe.

Aviator 16. Apr 2014 19:32

AW: Mehrere Ereignisse zusammenfassen
 
Um ein EventHandler zu schreiben der für mehrere Buttons gilt, sollte der so aussehen:
Delphi-Quellcode:
procedure TForm1.AlleButtonClick(Sender: TObject);
begin
// Some Code
end;
Und nun allen Buttons im Objektinspektor beim OnClick Event diesen EventHandler zuweisen.

himitsu 16. Apr 2014 19:35

AW: Mehrere Ereignisse zusammenfassen
 
Und wenn die Form modal angezeigt wird (Delphi-Referenz durchsuchenTForm.ShowModal), dann reicht es dem Button ein passendes ModalResult zuzuweisen und das Close wird nicht mehr gebraucht.

CocoPops 16. Apr 2014 19:37

AW: Mehrere Ereignisse zusammenfassen
 
Ich schätze mal, dass das ein Formular mit OK- und Abbrechen-Button ist, oder?
Da würde sich ein ShowModal mit ModalResult doch anbieten.

Edit: mist, der Rote Kasten wurde nicht angezeigt :P

Nils S. 16. Apr 2014 19:46

AW: Mehrere Ereignisse zusammenfassen
 
Oha, das ging ja schnell.

Vielen Dank, das klinkt einleuchtend, hätte ich auch von selbst drauf können. xD
Ja, also hier speziell geht es jetzt um das Hauptformular, welches eine Benutzeranmeldung ist.
Aber ich werde das wohl noch in einigen anderen Fällen anwenden.

Was genau ist ModalResult?
Ein Close für eine modale Form?

Sir Rufo 16. Apr 2014 19:53

AW: Mehrere Ereignisse zusammenfassen
 
Doku Delphi-Referenz durchsuchenTForm.ShowModal

Nils S. 16. Apr 2014 20:31

AW: Mehrere Ereignisse zusammenfassen
 
Hm ok.
Das bringt mich dann also z.B. weiter, wenn ich wissen will, wie die Form geschlossen wurde und ich brauche keine extra Prozedur fürs Schließen.

Aber ist es rein programmiertechnisch nicht schöner, wenn man im Code sieht, was durch den Klick passiert?
Also in Form einer Prozedur?

Dejan Vu 16. Apr 2014 20:43

AW: Mehrere Ereignisse zusammenfassen
 
Vielleicht noch soviel: Events sind Zeiger auf Methoden (also
Delphi-Quellcode:
Procedure of Object
). Den kannst Du zuweisen, was Du willst, solange die Signatur (also die Parameterliste) stimmt und es sich -wen wunderts- um eine Methode handelt.

himitsu 16. Apr 2014 20:56

AW: Mehrere Ereignisse zusammenfassen
 
Kommt drauf an?

Wenn ich weiß, daß ein OK- und ein Abbrechen-Button ein Fenster schließen und jeweil einen bestimmten Status zurückliefern, bzw. daß ein Schließen-Button das Fenster schließt, dann muß ich nicht mehr in den Code gucken, da mir "bekannt" ist, was im Property "ModalResult" dieser Knöpfe steht und was Diese damit machen. :stupid:



Bei deinem Code würde ich mich da viel mehr fragen:
- Was sind eigentlich Button1 und Button2 und was machen die? (an deren Namen erkennt man das ja nicht wirklich)
- Warum machen zwei Button, auf der selben Form, das Gleiche? (hatte erst übersehn, daß dort TForm1 und TForm2 steht)

Nils S. 17. Apr 2014 12:31

AW: Mehrere Ereignisse zusammenfassen
 
Ok, dass ich das weiß, das ist schon richtig. xD
Aber was ist, wenn man ein Projekt zum Beispiel an eine andere Person übergibt oder man länger ausfällt und ein Kollege übernehmen muss oder sowas.
Oder macht sowas dann die Erfahrung, dass er sich denkt "Oh, im EventHandler ist nichts zugewiesen, dann muss der Button ja ein ModalResult liefern."?

Da habe ich mich vertan, die sind tatsächlich in der gleichen Form und Button1 und 2 habe ich sie nur hier im Beispiel genannt.
Es gibt zum Beispiel einen normalen Button auf der Form, der das Programm schließt.
Außerdem habe ich eine MenuBar, wo man auch die Möglichkeit hat, das Programm zu schließen
und das Drücken von ESC führt auch dazu.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:55 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