Thema: Delphi Handle ändert sich

Einzelnen Beitrag anzeigen

ede57

Registriert seit: 5. Apr 2008
Ort: Hamburg
46 Beiträge
 
Delphi XE Professional
 
#3

AW: Handle ändert sich

  Alt 18. Sep 2013, 13:46
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;
  Mit Zitat antworten Zitat