Einzelnen Beitrag anzeigen

Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: "OnClick" Ereignis in Frame auslösen

  Alt 3. Apr 2019, 12:33
Hi MorrisF

Das kannst du dir sparen:
Delphi-Quellcode:
procedure TFrame_ButtonTest.BtnClickMeClick(Sender: TObject);
begin
  try
    Self.OnClick(Self);
  except
    on e: Exception do
    begin
      ShowMessage('Fehler in BtnClickMeClick(): ' + e.Message);
    end;
  end;
end;
TFrame_ButtonTest ist der Basisframe, den du dir unter <Datei=>Neu=>weiter=>(??)Frame erstellt hast. Wenn du nun diesen Frame auf die Form legen willst, findest du ihn (sofern eer zum Projekt gehört) im OI unter Standard=>Frames. Wenn du ihn hier anklickst und anschliessend auf die Form klickst, öffnet sich ein Dialog, in dem sämtliche für dieses Projekt definierten Frames aufgeführt sind. Klich ihn hier an, und er wird dir auf der Form eingefügt - allerdings nicht der Basisframe, den du entwickelt hast, sondern eine Instanz davon, zB. DeinFrame1.
Diese Instanz erbt vom Basisframe alle public deklarierten Methoden, also auch dein Button.OnClick.
Startest du nun dein Programm, siehst du diese Instanz, inklusive dem Button, den du auf dem Basisframe eingefügt hast. Klicke ihn, um den Code auszuführen, den du für den Button definiert hast. Es reicht also vollkommen, wenn du im OnClick des Basisframes folgenden Code einfügst:
Delphi-Quellcode:
procedure TFrame_ButtonTest.BtnClickMeClick(Sender: TObject);
begin
if FBoolean then
  Mainfrm.Edit1.Color := clred
else
  Mainfrm.Edit1.Color := clyellow;
end;
FBoolean solltest du in diesem Fall als privates Feld des Basisframes deklarieren.

Gruss
Delbor

PS: Sehe gerade, dass du deine Frameinstanz dynamisch erstellst:
Delphi-Quellcode:
  try
    tmpFrame := TFrame_ButtonTest.Create(self);
TFrame_ButtonTest darf hier allerdings nicht der Name deines Basisframes sein. Ansonsten bleibt sich alles gleich.
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch

Geändert von Delbor ( 3. Apr 2019 um 13:55 Uhr)
  Mit Zitat antworten Zitat