Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

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

AW: XE7: Frame soll Aktion im Hauptformular auslösen

  Alt 16. Mai 2015, 15:09
Der Frame bekommt ein Event und schon kann man sich da in der Form dranhängen.

Delphi-Quellcode:
type
  TMyFrame = class(TFrame)
  private
    //FOnChange: procedure(Sender: TObject) of object;
    FOnChange: TNotifyEvent;
    procedure DoChange;
  published
    property OnChange: TNotifyEvent read FOnChange write FOnChange;
  end;

procedure TMyFrame.DoChange;
begin
  if Assigned(FOnChange) then
    FOnChange(Self);
end;
Wenn sich was ändert, dann rufst du einfach DoChange auf.

Alternativ kann man auch Events weiterleiten.
Delphi-Quellcode:
type
  TMyFrame = class(TFrame)
    TheCheckBox: TCheckBox;
  private
    function GetOnChange: TNotifyEvent;
    procedure SetOnChange(Value: TNotifyEvent);
  published
    property OnChange: TNotifyEvent read GetOnChange write SetOnChange;
  end;

function TMyFrame.GetOnChange: TNotifyEvent;
begin
  Result := TheCheckBox.OnChange;
end;

procedure TMyFrame.SetOnChange(Value: TNotifyEvent);
begin
  TheCheckBox.OnChange := Value;
end;
Natürlich kann man auch im OnCreate der Form sich manuell an das Event hängen, aber sowas macht man doch nicht.
TheFrame.TheCheckBox.OnChange := DeinEvent;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat