![]() |
Position eines geschachtelten TControl direkt im Verhältnis zur Form
Puh, was für ein komplizierter Titel.
Die Frage ist allerdings simpel: Wenn irgendein
Delphi-Quellcode:
(z.B. ein Button) in einem
TControl
Delphi-Quellcode:
steckt liefern die Properties
TPanel
Delphi-Quellcode:
und
Left
Delphi-Quellcode:
ja die Koordinaten im Verhältnis zum übergeordneten
Top
Delphi-Quellcode:
. Jetzt würde ich allerdings gerne wissen, welche Koordinaten der
TPanel
Delphi-Quellcode:
direkt auf der Form hat.
TButton
Klar, ich kann wiederum einfach die Koordinaten des Panels addieren, aber was, wenn das Panel wieder in etwas drinsteckt? Natürlich kann ich mir jetzt einfach etwas basteln das sich immer den Parent anschaut und die Koordinaten solange aufaddiert, bis es kein Parent mehr gibt bzw. das angeschaute Objekt letztendlich die Form selbst ist. Aber da gibt es doch bestimmt etwas fertiges und ich sehe es nicht? |
AW: Position eines geschachtelten TControl direkt im Verhältnis zur Form
Ich hab mir die beiden Funktionen letztens selbst geschrieben um das Problem zu lösen. Durchlaufe einfach rekursiv nach oben, bis der Parent eine TForm ist. Obs jetzt der beste Weg ist weiß ich nicht, aber es hat seinen Zweck erfüllt.
Delphi-Quellcode:
function GetCompleteHeight(ChildComponent: TWinControl): Integer;
begin if (ChildComponent.HasParent AND (ChildComponent.Parent.ClassType <> TForm)) then Result := GetCompleteHeight(ChildComponent.Parent) + ChildComponent.Top else Result := 0; end; function GetCompleteLeftPos(ChildComponent: TWinControl): Integer; begin if (ChildComponent.HasParent AND (ChildComponent.Parent.ClassType <> TForm)) then Result := GetCompleteLeftPos(ChildComponent.Parent) + ChildComponent.Left else Result := 0; end; |
AW: Position eines geschachtelten TControl direkt im Verhältnis zur Form
Vielleicht auch ClientToScreen und dann die Position des Formulars abziehen...?
Könnte aber Probleme mit dem Rahmen geben. Insofern ist eine Funktion wie von Aviator sicher geschickter. |
AW: Position eines geschachtelten TControl direkt im Verhältnis zur Form
Zitat:
Delphi-Quellcode:
// ClientToScreen bezogen auf den Parent und ScreenToClient bezogen auf das Formular, fertig
Self.ScreenToClient(MyControl.Parent.ClientToScreen(MyControl.BoundsRect.TopLeft)) |
AW: Position eines geschachtelten TControl direkt im Verhältnis zur Form
Warum nicht gleich
![]() |
AW: Position eines geschachtelten TControl direkt im Verhältnis zur Form
:thumb:
[OT]Jetzt wollte ich Dir gerade mal einen kleinen Lapsus unterstellen und siehe da... mannooo ... man kann ja das Formular als Parent angeben... :duck: :wink:[/OT] |
AW: Position eines geschachtelten TControl direkt im Verhältnis zur Form
Zitat:
Aber auch die anderen Vorschläge sind super, Danke auch hier :-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:17 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