![]() |
Handle ändert sich
Problem ??
in einen Frame fordere ich im Constructor ein Handle an
Code:
Wenn ich dann eine Message vom untergeordneten Frame an dieses Handle eine Message schicke
// Handle Anfordern
HandleNeeded; ha := HandleAllocated; // = True frame__auftrag_daten.Message_Handle := self.Handle; hat sich das Handle des Parent geändert. Parent.Handle hat dann einen anderen Wert. Weiß jemand einen Rat ?? Auch mit AferConstruction komme ich nicht weiter |
AW: Handle ändert sich
Du könntest CreateWnd überschreiben welches aufgerufen wird wenn das Frame erstellt oder das zugrunde liegende Bildschirmobjekt freigegeben und neu erstellt werden muss.
Delphi-Quellcode:
TMyFrame = class(TFrame)
Label1: TLabel; Button1: TButton; procedure Button1Click(Sender: TObject); private procedure CreateWnd;override; { Private-Deklarationen } public { Public-Deklarationen } end; implementation {$R *.dfm} procedure TMyFrame.Button1Click(Sender: TObject); var p:TWinControl; begin p := Parent; parent := nil; parent := p; end; procedure TMyFrame.CreateWnd; begin inherited; label1.caption := IntToHex(handle,6); end; |
AW: Handle ändert sich
Danke für den Tip
Brauch das Handle nicht erst nach einen ButtonClick Habe folgende Klasse wovon alle Frames kommen.
Delphi-Quellcode:
Diese Unit binde ich bei allen Frames mit ein so das jeder Frame den Message_Handle hat.
unit _frame_basis;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type Tframe = class(Forms.TFrame) private function get_Message_Handle: HWND;Virtual; procedure Set_Message_Handle(const Value: HWND);Virtual; protected FHandle_Parent : HWND; public property Message_Handle : HWND read get_Message_Handle write Set_Message_Handle; end; implementation {$R *.dfm} { Tframe__basis } function Tframe.get_Message_Handle: HWND; begin result := FHandle_Parent; end; procedure Tframe.Set_Message_Handle(const Value: HWND); begin FHandle_Parent := Value; end; end. Im Constructor forder ich ein Handle an und dann weise ich das Handle (siehe #1) zu Wenn ich dann z.b. im edit1Onchangeevent bin, hat sich der wert von Message_Handle geändert, obwohl ich ihn nichts anderes zugewiesen habe. Der wert von Message_handle und Parent.Handle sind dann unterschiedlich was ja eigetlich nicht sein sollte Mein übergeordneter Frame Vielleiht habe ich auch was übersehen
Delphi-Quellcode:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, auftrag_frame_auftrag_arten_kategorien, allg_frame_ordner, auftrag_frame_auftrag_daten, tab_auftrag_gesamt, _global_messages, _frame_basis; type Tframe__auftrag = class(TFrame) frame__auftrag_daten: Tframe__auftrag_daten; private FAuftrag : TAuftrag; procedure AfterConstruction;Override; protected procedure SachnummerChangeMessage(var msg: TMessage); message wm_sachnummerChange; procedure AuftragsNrChangeMessage(var msg: TMessage); message wm_auftragsnrChange; procedure AuftragsNrExitMessage(var msg: TMessage); message wm_auftragsnrExit; procedure AuftragsBeschrChangeMessage(var msg: TMessage); message wm_auftragsBeschrChange; public constructor Create(AOwner : TComponent);Override; destructor Destroy;Override; end; implementation {$R *.dfm} { Tframe__auftrag } constructor Tframe__auftrag.Create(AOwner: TComponent); begin inherited Create(AOwner); ...... ....... end; procedure Tframe__auftrag.AfterConstruction; var ha : boolean; begin inherited; HandleNeeded; ha := HandleAllocated; // = True frame__auftrag_daten.Message_Handle := self.Handle; end; destructor Tframe__auftrag.Destroy; begin ........ ......... inherited; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 Uhr. |
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