![]() |
Delphi-Version: 5
Zugriff auf Ereignisse in vererbter Form
Guten Abend zusammen,
ich glaube ich habe gerade ein Brett vor dem Kopf.:?: Für ein größeres Projekt möchte ich eine Basis-Form anlegen und diese dann als Vorfahre für mehrer gleichartige (GUI) Formulare verwenden. 1. Vererbung über Eintrag im Quelltext TForm1 = class(TFrmVorfahre) …. Geht, Form1 hat das Aussehen von FrmVorfahre 2. Verwendung von Frames …. Geht auch s.o. Nun zum Problem : In Vorfahre ist z.B. ein ButtonOnClick definiert. Da passieren dann allgemeine Dinge, die immer an dieser Stelle gebraucht werden. Wie komme ich in der abgeleiteten Form an das ButtonOnClick aus der Vorfahre Form? Für Sachen die die Form selber betreffen geht das natürlich, da kann ich z.B. procedure TForm1.FormCreate(Sender: TObject); begin inherited; // was spezielles ausführen end; schreiben und die Aktionen aud der Vorfahre Form werden ausgeführt. (Delphi7 prof., WIN XP) |
AW: Zugriff auf Ereignisse in vererbter Form
Ich bin nicht sicher, ob ich Dich richtig verstanden habe, aber geht es evtl. mit
Delphi-Quellcode:
:?:
inherited Button.OnClick
|
AW: Zugriff auf Ereignisse in vererbter Form
Das geht genauso wie beim z.B. FormCreate!
Wenn du im abgeleiteten Formular einen Eventhandler anlegst (also Doppelklick in z.B. OnClick im Objektinspektor) dann fügt Delphi als erste Zeile des Eventhandlers auch ein "inherited" hinzu. Dieses sorgt dafür, dass der Code aus dem Vorfahren-Eventhandler ausgeführt wird. Nicht ganz sicher bin ich mir im Moment, ob das bei Delphi 5 (steht ja in deinem Profil) auch schon so war aber ich kann mir eigentlich nicht vorstellen, dass D5 das nicht machte... Edit: Wo war denn jetzt der rote Kasten? Da holt man sich nen Kaffee und jemand ist schneller... |
AW: Zugriff auf Ereignisse in vererbter Form
Das automatische Einfügen von "inherited" geschieht aber IIRC nur bei virtuellen Methoden, oder irre ich mich da gerade?
|
AW: Zugriff auf Ereignisse in vererbter Form
erst mal danke für die Tips...
@Ralf : Das Problem ist, daß ich kein OnClick anlegen kann, weil lich in meiner abgeleiteten Form zur Entwursfzeit den Button (oder was auch immer) garnicht sehe. Da ist einfach nur ein leeres Formuar, erst zu Lauzeit wir der Inhalt des Vorfahr-Formulars angezeigt. |
AW: Zugriff auf Ereignisse in vererbter Form
Wenn im vorfahren Button.OnClick (mit Punkt, also das Ereignis) belegt ist, dann kann man es im Nachfahren nicht überschreiben, es sei den man merkt sich den vorhergehenden wert in einer eigenen Variable und fuft darüber die alte Methode, in seiner überschriebenen Version auf.
Ansonsten sollte die Methode hinter OnClick einfach nur .Click heißen, virtuell sein und sich somit überschreiben lassen. |
AW: Zugriff auf Ereignisse in vererbter Form
Liste der Anhänge anzeigen (Anzahl: 1)
Methoden müssen nicht virtual sein, damit man sie in einer abgeleiteten Klasse überschreiben kann. Bei nicht virtuellen Methoden hat man nur keine Polymorphie.
Siehe angehangenes Beispiel |
AW: Zugriff auf Ereignisse in vererbter Form
erstmalmal danke für die Antworten.
@Stevie : Das Beispiel hat bei mir das Brett vor dem Kopf beseitigt. Jetzt klappt alles wie es soll. Es funktioniert auch bei der Verwendung von Frames. Ich wünsche allen einen produktiven Arbeitstag:wink: |
AW: Zugriff auf Ereignisse in vererbter Form
Zitat:
|
AW: Zugriff auf Ereignisse in vererbter Form
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 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