ChildSizing

Rund um die LCL und andere Komponenten
Antworten
Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

ChildSizing

Beitrag von Socke »

Hallo,
ich möchte ein paar Labels und ein paar Editfelder automatisch in einer Tabelle ausrichten. Das Ergebnis soll in etwa so aussehen:
Es gibt zwei Spalten: Links sind die Labels und Rechts die Edits. Die Spalte der Labels soll möglichst klein sein (die Labels sollen da gerade so reinpassen) und die rechte Spalte soll maximale Breite haben.
Da ich nicht weiß, wie breit die Labels im Endeffekt sind (unterschiedlicher, zur Laufzeit erst verfügbarer Text), soll das ganze möglichst automatisch von Statten gehen. Soviel wie ich bisher herausfinden konnte, kann TWinControl.ChildSizing irgendwie so etwas machen.

Meine Frage wäre jetzt: Was muss ich wo einstellen? Oder wäre es einfacher alles selbst zu berechnen und zu positionieren?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: ChildSizing

Beitrag von Scotty »

Canvas.TextWidth ist eine Information, aber besser wird es sein, DrawText in Verbindung mit DT_CALCRECT zu nutzen. Dann gäbe es auch Wraping.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: ChildSizing

Beitrag von pluto »

Das einfachste währe du würdest eine Grid komponente nehmen. Oder z.b. eine ListView Komponente, die sollte sowas auch können.
Wenn du sowas selbst machen, möchtest: Es ist relativ einfach. Wenn die Ziele nicht so hoch gesteckt werden.
Du müsstest nur eine Objekt Struktur haben, mit der du die Tabelle "Zeichnen und verwalten" kannst.
MFG
Michael Springwald

martin_frb
Beiträge: 588
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: ChildSizing

Beitrag von martin_frb »

Mehrere Möglichkeiten.
Klar ist das die alle autosize brauchen.

Du kannst eine Panel mit align alLeft in die Form legen, dann alle Labels in den Panel, der Panel ist dann automatisch (via autosize) so gros wie der grösste Label.

Oder du schaust dir den "Anchor Editor" mal genauer an. Da der allerdings nicht zirkular arbeitet müsstest du das breiteste Element wissen.

Antworten