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/)
-   -   Delphi TControl.OnClick (protected) zuweisen (https://www.delphipraxis.net/73838-tcontrol-onclick-protected-zuweisen.html)

DGL-luke 24. Jul 2006 19:24


TControl.OnClick (protected) zuweisen
 
hallo,

ich hätt hier mal was ganz unorthodoxes. Ich habe eine Reihe von Objekten, von denen ich nur weiss, dass sie von TControl abstammen. Und denen würd ich halt echt gerne für OnClick was zuweisen, was ja nicht geht, da das ja protected ist.

also müsst ich entweder die echte Klasse rausfinden, was ja nicht Sinn der Sache ist, oder irgendwie da dran kommen...

Die Windowproc will ich eigentlich nicht gerne überschreiben, das is n Haufen Arbeit und fehlerträchtig noch dazu, und mal schnell die vcl-sourcen ändern... nää...

Komm ich da irgendwie ran?

Khabarakh 24. Jul 2006 19:40

Re: TControl.OnClick (protected) zuweisen
 
Klingt Hier im Forum suchenClasshack unorthodox genug ;) ?

SirThornberry 24. Jul 2006 19:51

Re: TControl.OnClick (protected) zuweisen
 
so einfach gehts
Delphi-Quellcode:
  TMyOnClickControl = class(TControl)
  published
    property OnClick;
  end;

[...]
if X is TControl then
  TMyOnClick(X).OnClick = DeinClickEvent;

Khabarakh 24. Jul 2006 19:55

Re: TControl.OnClick (protected) zuweisen
 
Mit einem Classhack in der gleichen Unit reichen schon zwei Zeilen:
Delphi-Quellcode:
TControlHack = class(TControl);

...

TControlHack(Control).OnClick := ...

DGL-luke 24. Jul 2006 19:59

Re: TControl.OnClick (protected) zuweisen
 
dat kommt mir aber janz spanisch vor....

Delphi-Quellcode:
type
  TControlHack = class(TControl);

[...]

  TControlHack(ScrollBar1).OnMouseMove := ...;
das kann ich nicht ganz nachvollziehen... ich meine, die ableitung alleine schiebt ja das OnClick noch nicht aus dem protected raus (was sehr elegant wäre);

@SirT: Jaaaaaa, das is eher, was ich wollte. So macht das Spaß.
@Khabarakh: Ach genau, wenns in der gleichen Unit is... :coder2:


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:47 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