Einzelnen Beitrag anzeigen

Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Komponentenentwicklung - Event weiterleiten - Denkfehler?

  Alt 27. Sep 2016, 14:09
Ja gut, dann musst du wirklich in der innersten Komponente im Event ein Event feuern und das nach oben leiten bis zu TBar und dann zum User.
Finde ich aber besser als irgendwo irgendwelche Koordinaten abzufragen oder sowas..
Delphi-Quellcode:
TFoo = class(TCustomControl)
private
  FSomeVar: TSomeType;
protected
  procedure WM_Paint(var Msg: TMessage) message WM_PAINT;
public
  property OnGetSubComponents;
  property OnButtonClick: TNotifyEvent read FOnButtonClick write FOnButtonClick;
end;

procedure TFoo.Button1Click(Sender: TObject);
begin
  if Assigned(FOnButtonClick) then
    FOnButtonClick(Sender);
end;

// TFooBar

TFooBar = class(TCustomControl)
private
  FSomeVar: TFoo;
protected
  procedure WM_Paint(var Msg: TMessage) message WM_PAINT;
  property OnButtonClick: TNotifyEvent read FOnButtonClick write FOnButtonClick;
end;

constructor TFooBar.Create()
begin
  FSomeVar.OnButtonClick := InternalButtonClick;
end;

procedure TFooBar.InternalButtonClick()
begin
  if Assigned(FOnButtonClick) then
    FOnButtonClick(Sender);
end;

// TBar

TBar = class(TCustomControl)
private
  FSomeVar: TFooBar;
protected
  procedure WM_Paint(var Msg: TMessage) message WM_PAINT;
public
  property OnGetSomeData;
end;

constructor TBar.Create()
begin
  FSomeVar.OnButtonClick := InternalButtonClick;
end;

procedure TBar.InternalButtonClick()
begin
  if Assigned(FOnButtonClick) then
    FOnButtonClick(Sender);
end;
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat