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/)
-   -   Delphi Event im Objektinspektor von Elternklasse? (https://www.delphipraxis.net/155150-event-im-objektinspektor-von-elternklasse.html)

DaWalt 11. Okt 2010 10:42

Event im Objektinspektor von Elternklasse?
 
Hallo Leute,
Habe eine Klasse vom Typ TForm abgeleitet, die mir u.a. auch eine Clickroutine zur Verfügung stellt. Wenn ich nun ein Objekt davon ableite und ein Button darauf ziehe, so möchte ich im Objektinspektor beim OnClick die Möglichkeit haben, die Routine des Eltern-Objekts auszuwählen. Geht das irgendwie???:?:
Also als Beispiel: Das ElternFenster hat wie gesagt eine Methode für OnClick und alle Buttons, die ich auf mein KindFenster ziehe, sollen diese Klickmethode benutzen, auswählbar im Objektinspektor.
Meine bisherige Lösung: Ich erzeuge eine neue Methode im KindFenster, die dann die Elternmethode aufruft. Finde ich aber unelegant. :roll: Hat jemand eine bessere Idee?

Vielen Dank schon mal im Voraus,

DaWalt

Sir Rufo 11. Okt 2010 10:49

AW: Event im Objektinspektor von Elternklasse?
 
Zeig mal die Deklaration für so ein Click-Event aus der Elternklasse

ME müssten die mit angeboten werden (wenn die richtig deklariert sind ;) )

DaWalt 11. Okt 2010 11:05

AW: Event im Objektinspektor von Elternklasse?
 
Elternteil:
Code:
type
  TExtFoeteForm = class(TForm)
    Timer1: TTimer;
    SB_Handbedienung: TSpeedButton;
    BB_Close: TBitBtn;
    procedure Timer1Timer(Sender: TObject); dynamic;
    procedure FormShow(Sender: TObject); dynamic;
    procedure FormHide(Sender: TObject);
    procedure BB_CloseClick(Sender: TObject);
    procedure AusgangsClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  published

  end;

var
  ExtFoeteForm: TExtFoeteForm;

implementation

{$R *.DFM}

...

procedure TExtFoeteForm.AusgangsClick(Sender: TObject);
begin
  with Sender as TButton do begin
    ...;
  end;
end;
KindTeil:
Code:
type
  TKindForm = class(TExtFoeteForm)
  ... allerlei Objekte, u.a. Buttons, die AusgangsClick benutzen sollen
Und wahrscheinlich liegt genau beim "richtig deklariert" der Hase im Pfeffer. Hab den Eintrag im Elternteil von auch schon im Public- und im Published-Teil gehabt, hat aber nix geändert.

idefix2 11. Okt 2010 11:06

AW: Event im Objektinspektor von Elternklasse?
 
Schau Dir mal den Thread an:

http://www.delphipraxis.net/153107-e...ty-editor.html

DaWalt 11. Okt 2010 12:24

AW: Event im Objektinspektor von Elternklasse?
 
Also ohne Package und Komponente und registrieren usw geht´s nicht?

Bummi 11. Okt 2010 12:40

AW: Event im Objektinspektor von Elternklasse?
 
Ich kann Dein Problem bei mir nicht nachvollziehen, ie sieht Dein DFM aus

inherited KindForm: TExtFoeteForm

oder

object KindForm: TExtFoeteForm

idefix2 11. Okt 2010 12:48

AW: Event im Objektinspektor von Elternklasse?
 
Ich fürchte, ohne registrieren wird im OI nichts zu sehen sein.

Ist mir zumindest nicht gelungen

DaWalt 11. Okt 2010 13:03

AW: Event im Objektinspektor von Elternklasse?
 
@ idefix2: Schade eigentlich, jedenfalls vielen Dank!

@ Bummi: Verstehe Deine Frage auch nicht. ;-)
Ich erzeuge ein neues Form und ändere den Klassentyp von "TForm" auf "TExtFoeteForm". Dann ziehe ich einen Button auf das Fenster und wähle im Objektinspektor bei OnClick eine Methode aus, bzw. würde gerne auswählen, nämlich die in der Elternklasse angelegte "AusgangsKlick". Diese erscheint aber nicht. So wie Idefix2 schrieb, werde ich die Fensterklasse "TExtFoeteForm" wohl erst irgendwie registrieren und/oder zur Komponente umbauen müssen.
Wäre sonst wohl zu schön und zu einfach gewesen.

Bummi 11. Okt 2010 13:34

AW: Event im Objektinspektor von Elternklasse?
 
Geh auf Dein Formular schalte auf Ansicht als Text
und ändere
okject KindForm: TExtFoeteForm
in
inherited KindForm: TExtFoeteForm

oder nimm einen Texteditor und öffne dort Dein DFM

shmia 11. Okt 2010 14:50

AW: Event im Objektinspektor von Elternklasse?
 
Also meiner Erfahrung nach sollte man Formulare nicht ableiten und neue Properties einführen.
Denn dazu muss man die Formularklasse in einem Designtime-Package registieren.

Wer schon mal versucht hat ein grosses Projekt auf einen frisch eingerichteten Delphi
zu kompilieren, der weiss dass er dazu Stunden oder auch Tage benötigt, bis man die ganzen Komponenten installiert hat.

Bei echten Komponenten überwiegt der Vorteil des komponentenbasierten Programmierens den Aufwand der Installation.
Abgeleitete Formulare sind aber den Aufwand nicht wert.
Komponenten sind wie Legobausteine; man kann sie überall einsetzen.
Abgeleitete Formulare sind dagegen spezialisierte Klassen und daher nicht universell verwendbar.

Es gibt genügend Möglichkeiten und Techniken (z.B. Factory-Klassen) um abgeleitete Formulare zu vermeiden.


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