Folgendes Beispiel:
1) Ein Frame 'meinFrame' vom Typ 'TMeinFrame'
- mit Button 'meinButton'
- und OnClick-Event 'FRAME__meinButtonClick'
und
2) ein Formular 'MainFormular' vom Typ 'TMainFormular'
auf welcher eben der Frame 'meinFrame' vom Typ 'TMeinFrame' sitzt.
Auf dem Formular-Designer von TMainFormular hindert mich niemand, selbst ein OnClick-Ereignis für den Button 'meinButton' auf dem Frame festzulegen - Ich sehe noch nicht einmal, dass der schon ein OnClick-Ereignis hat.
Hiermit ersetze ich jetzt das OnClick-Ereignis des Buttons. In der .pas des Frames lautet es:
Delphi-Quellcode:
procedure TMeinFrame.FRAME__meinButtonClick(Sender: TObject);
begin
ShowMessage('Grüße aus dem Frame');
end;
Auf meinem Formular habe ich gesetzt
Delphi-Quellcode:
procedure TMainFormular.FORM__meinFrameMeinButtonClick(Sender: TObject);
begin
ShowMessage('Grüße vom Formular');
end;
Status Quo: Die Grüße vom Frame sind mir nun verloren gegangen. Wie gehe ich die Sache am besten an? Vielleicht so?
Delphi-Quellcode:
procedure TMainFormular.FORM__meinFrameMeinButtonClick(Sender: TObject);
begin
//meinFrame.meinButton.OnClick(Sender); // So nicht, ICH bin doch schon sein OnClick!
meinFrame.FRAME__meinButtonClick(Sender);
ShowMessage('Grüße vom Formular');
end;
Spaßeshalber hier noch einmal wie die
DFM von Formular und Frame aussehen:
Code:
== Frame ==
object meinFrame: TMeinFrame
[...]
object meinButton: TButton
[...]
OnClick = FRAME__meinButtonClick
end
end
== Form ==
object MainFormular: TMainFormular
[...]
inline meinFrame: TMeinFrame
[...]
inherited meinButton: TButtin
Left = ...
Top = ... // Wozu !?!
OnClick = FORM__meinFrameMeinButtonClick
end
end
end
Gibt es noch eine andere Möglichkeit? Momemtan gefällt mir das nicht, denn ich muss in meinem Formular nun den genauen Namen der normalerweise verwendeten OnClick-Methode des Buttons kennen. Das ist doch hässlich.