Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Event wird nicht ausgelöst ?! (https://www.delphipraxis.net/117455-event-wird-nicht-ausgeloest.html)

Muetze1 18. Jul 2008 15:40

Re: Event wird nicht ausgelöst ?!
 
Moin!

Wie geschrieben haben alle Komponenten ab TWinControl ein Fensterhandle. Und dieses kann über die Eigenschaft Delphi-Referenz durchsuchenHandle abgefragt werden, was TWinControl einführt. Genau diese Eigenschaft benutzt du doch schon bei der Form. Diese hat diese Eigenschaft genauso von TWinControl geerbt...

MfG
Muetze1

Apollonius 18. Jul 2008 17:39

Re: Event wird nicht ausgelöst ?!
 
Ich halte es bei einer nicht-visuellen Komponente nicht für sinnvoll, von TWinControl abzuleiten. Gehe lieber so wie in TTimer vor: Mit AllocateWnd wird dort ein Fenster erzeugt, welches lediglich Nachrichten verarbeitet.

ghost007 18. Jul 2008 19:48

Re: Event wird nicht ausgelöst ?!
 
Zitat:

Zitat von Apollonius
Ich halte es bei einer nicht-visuellen Komponente nicht für sinnvoll, von TWinControl abzuleiten. Gehe lieber so wie in TTimer vor: Mit AllocateWnd wird dort ein Fenster erzeugt, welches lediglich Nachrichten verarbeitet.

Jop, genau das hab ich nach einigem rumprobieren auch rausgefunden. ;)

Danke

MfG - Ghost007

P.S.: Kann leider atm nicht weitertesten ... irgdwie freezt bei mir jede application die ich compiliere ... auch eine leere form, sobald ich sie verscheiben will ...

ghost007 19. Jul 2008 09:37

Re: Event wird nicht ausgelöst ?!
 
So,
mein delphi rennt wieder.

Jedoch kann ich die von Apollonius angesprochene funktion allocatewnd weder im msdn noch in der OH finden. :( wie geb ich meiner kompo ein handle ?

MfG - Ghost007

DeddyH 19. Jul 2008 09:54

Re: Event wird nicht ausgelöst ?!
 
Hier mal der Konstruktor von TTimer:
Delphi-Quellcode:
constructor TTimer.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FEnabled := True;
  FInterval := 1000;
{$IFDEF MSWINDOWS}
  FWindowHandle := Classes.AllocateHWnd(WndProc);
{$ENDIF}
{$IFDEF LINUX}
  FWindowHandle := WinUtils.AllocateHWnd(WndProc);
{$ENDIF}
end;

ghost007 19. Jul 2008 10:28

Re: Event wird nicht ausgelöst ?!
 
danke, hat geholfen :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 Uhr.
Seite 2 von 2     12   

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