Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Mouse-Events weiterreichen? (https://www.delphipraxis.net/201063-mouse-events-weiterreichen.html)

skoschke 19. Jun 2019 15:38

Mouse-Events weiterreichen?
 
Hallo,

ich habe eine eigene Komponente basierend auf einem TPanel und darauf weitere Controls.
Wenn ich nun auf meine Komponente zur Laufzeit klicke, wird das OnClick nicht gefeuert, im Debugger sehe ich das das OnClick in dem "Sub-Control" meiner Komponente gefeuert wird.

Kann ich irgendwie diesen Click / Mousemove / etc. von den Unterkomponenten an das Parentpanel weiterleiten, so dass der OnClick der Komponente gefeuert wird?

Ciao
Stefan

DeddyH 19. Jun 2019 17:12

AW: Mouse-Events weiterreichen?
 
Vielleicht so?
Delphi-Quellcode:
type
  TMyPanel = class(TPanel)
  private
    FEdit: TEdit;
    procedure OnSubComponentClick(Sender: TObject);
  public
    constructor Create(AOwner: TComponent); override;
  end;

...

constructor TMyPanel.Create(AOwner: TComponent);
begin
  inherited;
  FEdit := TEdit.Create(self);
  FEdit.Parent := self;
  FEdit.OnClick := OnSubComponentClick;
end;

procedure TMyPanel.OnSubComponentClick(Sender: TObject);
begin
  if Assigned(OnClick) then
    OnClick(self); // oder auch Sender statt self, wie man es halt braucht
end;

skoschke 20. Jun 2019 06:12

AW: Mouse-Events weiterreichen?
 
Mist, darauf hätte ich auch kommen können, einfach den Event des Parents aufrufen...

Danke für den Tip!

Wichtig finde ich das
Delphi-Quellcode:
 if Assigned(OnClick) then

denn wenn es in der Anwendung später keinen OnClick des Controls gibt knallt es.

Ciao
Stefan


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz