Einzelnen Beitrag anzeigen

danielA

Registriert seit: 10. Jun 2002
Ort: Hamburg
72 Beiträge
 
Delphi XE7 Enterprise
 
#4

Re: Refferenz auf TForm über Windowshandle erhalten

  Alt 14. Jan 2005, 16:55
Hallo nochmal,

@Assarbad

Ich habe das jetzt mal mit GetProp ausprobiert, bekomme aber beim testweisen Aufruf von

GetProp(Form1.Handle,'WindowProc') aber auch anderen Propertys wie 'Name' oder 'WndProc' leider immer 0 zurück.

@all
Ich habe es jetzt so gemacht wie Christian es vorgeschlagen hat. Den Quelltext habe ich einfach mal mit angehängt. Es werden hier aber leider im ungünstigsten Fall alle Objekte vom Typ TComponent und Nachkommen des Projekts angesprochen. Außerdem werden Formulare, die mit Nil als Owner erzeugt wurden icht gefunden (also MyForm := TForm.CreateNew(Nil))

Delphi-Quellcode:
function TForm1.GetFormFromHandle(FHandle: HWND; ParentComponent : TComponent): TForm;
var i : integer;
begin
  Result:=nil;
  if (assigned(ParentComponent)) and (FHandle<>0) then
  begin
    for i:=0 to ParentComponent.ComponentCount-1 do
    begin
      if ParentComponent.Components[i] is TForm then
      begin
        if TForm(ParentComponent.Components[i]).Handle=FHandle then
        begin
          Result:=TForm(ParentComponent.Components[i]);
          break;
        end;
      end;
      Result:=GetFormFromHandle(FHandle,ParentComponent.Components[i]);
      if assigned(Result) then
         break;
    end;
  end;
end;
vielen Dank und Gruß

Daniel
  Mit Zitat antworten Zitat