Danke für den Tip
Brauch das
Handle nicht erst nach einen ButtonClick
Habe folgende Klasse wovon alle Frames kommen.
Delphi-Quellcode:
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.
Diese
Unit binde ich bei allen Frames mit ein so das jeder Frame den Message_Handle hat.
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;