AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Zugriff auf Ereignisse in vererbter Form

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

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

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
Online

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

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.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

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
 
#4

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.667 Beiträge
 
Delphi 12 Athens
 
#5

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.052 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

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
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.667 Beiträge
 
Delphi 12 Athens
 
#7

AW: Zugriff auf Ereignisse in vererbter Form

  Alt 12. Jul 2011, 07:56
Sry, den Post hab ich glatt übersehen.
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
 
#8

AW: Zugriff auf Ereignisse in vererbter Form

  Alt 12. Jul 2011, 07:57
@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.
Dann stimmt definitiv mit der abgeleiteten DFM-Datei etwas nicht!

Schau dir mal die Formulardatei als Text an (rechte Maustaste im Forumlardesigner, dann "Als Text anzeigen").

Als erstes Schlüsselwort muss bei einem abgeleiteten Formular dort "inherited" stehen. Wenn dort "object" steht dann kann Delphi nicht "wissen", dass es ein abgeleitetes Formular ist und zeigt ein leeres Fenster an.

Ersetze in dem Fall "object" durch "inherited" und schalte wieder auf die normale Formularansicht und Delphi wird dir den Inhalt des vorfahren anzeigen. Auch mit den Events müsste es dann klappen!
Ralf Kaiser
  Mit Zitat antworten Zitat
yogie

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

AW: Zugriff auf Ereignisse in vererbter Form

  Alt 12. Jul 2011, 20:30
@ Ralf :
Die Form war zur Entwurfszeit definitiv leer, erst zur Laufzeit
waren die Controls der Vorfahr-Form sichtbar.

Ich bin jetz nicht mehr im Dienst, werde aber morgen dem
Hinweis nochmal nachgehen.

Ich habe jetzt mit einem Frame gearbeitet und es läuft
eigentlcih so wie ich es brauche.
Kompatibilität ist ein Euphemismus für n i c h t einhunderprozentige Austauschbarkeit
http://b-und-l-service.de/
  Mit Zitat antworten Zitat
FredlFesl

Registriert seit: 19. Apr 2011
293 Beiträge
 
Delphi 2009 Enterprise
 
#10

AW: Zugriff auf Ereignisse in vererbter Form

  Alt 13. Jul 2011, 06:05
Du kannst Formulare genauso simpel ableiten wie Frames. Nur 'per Hand', so wie Du es gemacht hast, würde ich es nicht machen.
In der Delphi-IDE gehst Du auf 'Neue Hinzufügen->Weitere' (oder Datei->Neu->Weitere) und dann im Dialog auf 'vererbbare Elemente'. Dann wählst du das Basisformular aus, fertig.

Zur Laufzeit siehst Du dann schon das Basisformular komplett, kannst individuelle Anpassungen vornehmen etc. Das Überschreiben des Events eines im Elternformular eingeführten Controls geht auch intuitiv (wie bereits erwähnt): Beim Klick in den Eventhandler erzeugt Delphi den Event-Stub mit einer Zeile 'Inherited'.

Doch Vorsicht! Wenn du mit den Events der vererbten Controls spielst, passiert es sehr schnell, das Delphi den Eventhandler auf NIL setzt, sodaß später noch nicht einmal der Original-Event aufgerufen wird. Daher mein Tipp: Funktioniert etwas im abgeleiteten Formular nicht mehr, dann schau Dir die DFM an. Dann steht da bestimmt soetwas wie
Code:
object MyInheritedButton
  OnClick = Nil
...
Diese Zeile kannst Du dann einfach Löschen
Das Bild hängt schief.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 14:54 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