AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf Ereignisse in vererbter Form

Ein Thema von yogie · begonnen am 11. Jul 2011 · letzter Beitrag vom 13. Jul 2011
Antwort Antwort
Seite 1 von 2  1 2      
yogie

Registriert seit: 11. Sep 2003
Ort: bei Goslar
213 Beiträge
 
Delphi 6 Professional
 
#1

Zugriff auf Ereignisse in vererbter Form

  Alt 11. Jul 2011, 20:01
Delphi-Version: 5
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)
Kompatibilität ist ein Euphemismus für n i c h t einhunderprozentige Austauschbarkeit
http://b-und-l-service.de/
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Zugriff auf Ereignisse in vererbter Form

  Alt 11. Jul 2011, 20:04
Ich bin nicht sicher, ob ich Dich richtig verstanden habe, aber geht es evtl. mit
inherited Button.OnClick
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Zugriff auf Ereignisse in vererbter Form

  Alt 11. Jul 2011, 20:09
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...
Ralf Kaiser
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Zugriff auf Ereignisse in vererbter Form

  Alt 11. Jul 2011, 20:11
Das automatische Einfügen von "inherited" geschieht aber IIRC nur bei virtuellen Methoden, oder irre ich mich da gerade?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
yogie

Registriert seit: 11. Sep 2003
Ort: bei Goslar
213 Beiträge
 
Delphi 6 Professional
 
#5

AW: Zugriff auf Ereignisse in vererbter Form

  Alt 11. Jul 2011, 20:58
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.
Kompatibilität ist ein Euphemismus für n i c h t einhunderprozentige Austauschbarkeit
http://b-und-l-service.de/
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#6

AW: Zugriff auf Ereignisse in vererbter Form

  Alt 12. Jul 2011, 02:19
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

AW: Zugriff auf Ereignisse in vererbter Form

  Alt 12. Jul 2011, 03:36
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
Angehängte Dateien
Dateityp: zip Example.zip (1,6 KB, 20x aufgerufen)
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
yogie

Registriert seit: 11. Sep 2003
Ort: bei Goslar
213 Beiträge
 
Delphi 6 Professional
 
#8

AW: Zugriff auf Ereignisse in vererbter Form

  Alt 12. Jul 2011, 06:26
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
Kompatibilität ist ein Euphemismus für n i c h t einhunderprozentige Austauschbarkeit
http://b-und-l-service.de/
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Zugriff auf Ereignisse in vererbter Form

  Alt 12. Jul 2011, 07:08
Methoden müssen nicht virtual sein, damit man sie in einer abgeleiteten Klasse überschreiben kann.
Das hat ja auch niemand behauptet, falls Du auf meinen Post anspielen solltest. Ich habe lediglich gesagt, dass IIRC die IDE das "inherited" nur bei virtuellen Methoden automatisch einfügt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

AW: Zugriff auf Ereignisse in vererbter Form

  Alt 12. Jul 2011, 07:55
Methoden müssen nicht virtual sein, damit man sie in einer abgeleiteten Klasse überschreiben kann.
Das hat ja auch niemand behauptet, falls Du auf meinen Post anspielen solltest. Ich habe lediglich gesagt, dass IIRC die IDE das "inherited" nur bei virtuellen Methoden automatisch einfügt.
Hab Himis Post aber so verstanden.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:28 Uhr.
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