Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.455 Beiträge
 
Delphi 12 Athens
 
#7

Re: [HowTo] Auf das Parentform eines TFrame zugreifen

  Alt 17. Jul 2009, 18:15
Zitat von chaosben:
Besser ist der Zugriff über die "Parent" - Eigenschaft.
Wenn der Frame auf einem Panel liegt, dann zeigt Parent auf dieses Panel. Insofern ist deine Lösung nur der erste Schritt des richtigen Weges.

Hier eine Methode, die ohne jegliche Vererbung auskommt, für alle TControls funktioniert und auch dynamischen Änderungen des "ParentForms" gerecht wird. Es ist nämlich durchaus möglich, ein Frame (oder jedes andere Control) von einem Form auf ein anderes zu verlagern, indem man lediglich dem Parent einen neuen Wert zuweist.

Delphi-Quellcode:
function GetParentForm(Control: TControl): TForm;
var
  WinControl: TWinControl;
begin
  Assert(Control <> nil, 'nil not allowed!');
  WinControl := Control.Parent;
  while WinControl <> nil do begin
    if WinControl is TForm then
      Break;
    WinControl := WinControl.Parent;
  end;
  result := WinControl as TForm; // nil ist hier durchaus erlaubt
end;
Uwe Raabe
  Mit Zitat antworten Zitat