![]() |
Delphi-Version: 5
Ereignisbehandlungsroutinen "fremdaufrufen"
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Delphifreunde!
Wenn man eine Ereignisbehandlungsroutine von einem "fremden" Steuerelement aus aufrufen möchte, wie macht man das dann richtig? Angehängtes Delphi-2-Minimalprojekt soll mein Anliegen verdeutlichen. Klickt man auf den obersten Button, wird einfach ein Piepton ausgegeben. Der zweite und auch der dritte Button rufen die Ereignisbehandlungsroutine des ersten Buttons auf, mit jeweils unterschiedlichen Parametern. Mangels Ahnung (wie so meistens) habe ich einfach herumprobiert und festgestellt, daß als Parameter (ohne geht es nicht) sowohl "self" als auch "sender" funktionieren. Nur, was ist "richtiger"? Oder gibt es noch einen besseren Weg? Danke im voraus und Gruß Delphi-Laie |
AW: Ereignisbehandlungsroutinen "fremdaufrufen"
Literatur dazu:
![]() ![]() ![]() Mehr unter: ![]() Kurz: Self ist die Klasse selbst, in der man implementiert, also quasi eine Selbstreferenz. Sender ist der Auslöser des Ereignisses.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender : TObject);
begin Self.Caption := Format('Self.Name = %s, Self.Classname = %s, Sender.Classname = %s',[Self.Name,Self.Classname,Sender.Classname]); end; |
AW: Ereignisbehandlungsroutinen "fremdaufrufen"
Moin...:P
Zitat:
Beispiel:
Delphi-Quellcode:
private
procedure PrintDocument(Document: TDocument; PageCount, PageHeight: Integer); ... procedure TfoDocuments.btnPrintClick(Sender: TObject); begin PrintDocument(FLastdocument, 0, 1); end; |
AW: Ereignisbehandlungsroutinen "fremdaufrufen"
Und wenn diese eigene Routine dann noch in einer eigenen Unit und Klasse liegt und diese das Formular nicht kennt, dann ist auch eine gewisse Trennung von GUI und Logik gleich mit umgesetzt.
|
AW: Ereignisbehandlungsroutinen "fremdaufrufen"
Zitat:
|
AW: Ereignisbehandlungsroutinen "fremdaufrufen"
gestandene? Dann krabbeln die noch! SCNR
|
AW: Ereignisbehandlungsroutinen "fremdaufrufen"
Hallo,
Zitat:
|
AW: Ereignisbehandlungsroutinen "fremdaufrufen"
Zitat:
|
AW: Ereignisbehandlungsroutinen "fremdaufrufen"
Hallo,
den Smiley nicht gesehen? ;) |
AW: Ereignisbehandlungsroutinen "fremdaufrufen"
Hat er, aber für die Begriffsstutzigen dann nochmal Klartext.
Gruß K-H |
AW: Ereignisbehandlungsroutinen "fremdaufrufen"
Liebe Leute, vielen Dank für Eure rege Teilnahme!
Mal schauen, was sich daraus machen läßt. Oder ich nehme doch eine zentrale Prozedur, die von allen Ereignisbehandlunsroutinen aus aufrufbar ist. |
AW: Ereignisbehandlungsroutinen "fremdaufrufen"
Update: Es geht auch einfacher, wie mir just erst wieder einfiel: Einfach die Ereignisbehandlungsroutine des ersten Buttons ("Button1Click") den OnClick-Ereignissen der anderen Buttons zuweisen. Das ist im Objektinspektor einfach durch Eintragen, sicher aber auch etwas umständlicher im Quelltext möglich.
Das Thema hat sich hiermit erledigt. |
AW: Ereignisbehandlungsroutinen "fremdaufrufen"
Aber schön ist anders und schlechter Stil zu dem.
|
AW: Ereignisbehandlungsroutinen "fremdaufrufen"
Hallo,
Luckie: nicht, wenn man der Button1Click-Methode einen sinnvolleren Namen gibt. Delphi-Laie: Wenn du ein halbes Jahr später einen Breakpoint auf deine Button1Click-Methode setzt, und dich dann wunderst, wieso sie auch beim Klick auf den Button4 ausgelöst wird -> Denk an diesen Thread ;) BTW: Warum heisst der Button eigentlich Button1 und nicht <Ironie>ButtonMaxUndMoritz</Ironie>? |
AW: Ereignisbehandlungsroutinen "fremdaufrufen"
Zitat:
|
AW: Ereignisbehandlungsroutinen "fremdaufrufen"
Hallo,
das ist nicht wie bei "Mutti wollte, dass ich so heiße" ;) |
AW: Ereignisbehandlungsroutinen "fremdaufrufen"
[OT] Der heißt Button1, weil damit dem Label23 der Text aus Edit42 zugewiesen wird. [/OT]
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:18 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