Einzelnen Beitrag anzeigen

Der schöne Günther
Online

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Frames: Wie ursprüngliche Events am besten aufrufen?

  Alt 25. Jul 2013, 09:38
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.
  Mit Zitat antworten Zitat