Denkansatz dynamische Größenanpassung

Rund um die LCL und andere Komponenten
Antworten
monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Denkansatz dynamische Größenanpassung

Beitrag von monta »

Ich wollte mal nachhaken, wie andere die Größenanpassung bei Formularen gestalten.

Ich weiß, es gibt praktische Dinge wie Algin und BorderSpacing, aber das alles nützt ja nicht ohne weiteres was, wenn die Komponenten quasi Schachbrettartig angeordnet sind. Da langt ja ein bloßes Align nicht.

Mein Weg dabei ist es...mit relativ vielen Panels das Formular in Zeilen/Spalten aufzuteilen.
Diese Panels formatieren sich dann über Align weitgehend selbst.
Anschließend formatiere ich noch die Labels innerhalb der Pannels, da beispielsweise innerhalb eines Pannels zwei Zeilen mit je vier Labels sind, von Hand. Beispielsweise so, das jedes Label exakt den selben abstand hat.

Nur als Denkanstoß, gibt es eine elegantere Methode als Dutzende Panels und zusätzlich noch eine Resize-Procedure die den Rest berechnet?

Und wie wirken sich die ganzen ja letztlich unsichtbaren Panels zur Laufzeit aus? Ich geh davon aus, das sie keinen großen Einfluss auf Performance u.a. haben, wenn sie einmal verechnet wurden. Wenn ich mich da Ihre, bitte berichtigen.

Falls jemand fragt, wozu das ganze...die Form hat 200 Objekte.
Johannes

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Mit Anchors kannst du jedes Element gegen jedes vergrößern, damit lässt sich eigentlich alles realisieren. Schaus dir mal an...
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Habs mir gerade nochmal angeschaut, endlich hab ich auch mitbekommen, das man alle vier auf treu setzen muss, und es wird wunderbar vergrößert.

ABER: wenn ich das ganze für nen Label mache, und dummerweise hab ich hauptsächlich Labels, dann vergrößert sich die Labelfläche, aber der Textanfang rückt beispielsweise nicht weiter in die Mitte.
Es geht mir ja auch darum, das alles wieder symetrisch verteilt ist und jedes Label beispielsweise gleich breit. Dabei muss sich ja aber auch der Anfangspunkt verschieben.
Letztlich müsste also irgendwie die Ecke mitberechnet werden.
Johannes

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

AutoSize auf false, Alignment auf taCenter

Schau doch in die Hilfe ;) LoL
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Nein...nicht wirklich.

Zum einen überlagern sich die Labels. Außerdem benötige ich zusätzlich WordWrap, und da gehts nicht, wenn sich die Labelfläche breitzieht, da sich der Labeltext ändert.
Dateianhänge
1.png
1.png (4.17 KiB) 1519 mal betrachtet
Johannes

hanibal
Beiträge: 369
Registriert: Sa 3. Mär 2007, 16:03
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Bramsche (Emsland)

Beitrag von hanibal »

ich löse das immer so, das ich errechne, um wie viel prozent das form gewachsen ist (nach oben, und nach unten), und vergrößere und verschiebe die objecte potenzional dazu.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Genau das machen die Anchors sowas muss man nicht selbst machen.

http://wiki.lazarus.freepascal.org/Anchor_Sides/de

Ansicht->Anchor Editor
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

gut...also komm ich zu dem Schluss, wenn man es so haben will, wie ich, geht es nur manuell im Code.
Johannes

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Ist es mit den Anchors so nicht hinzubekommen ? Ich habs nicht probiert dachte eigentlich das System wäre komplex genug dazu.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Nein, weil sich nur die obere rechte Ecke dynamisch verschieben und ausrichten müsste. Die Anchors aber verschieben immer nur so, das entweder der Abstand zu einem der Ränder identisch bleibt bzw. Die Labelflache dynamisch vergrößert wird.

Aber ich will die Fläche ja nicht vergrößern und den Abstand zu einer Seite ja gerade dynamisch vergrößern.
Johannes

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Du hast dir den AnchorEditor nicht angeschaut stimmts ? Dort kannst du für Jede Seite eines Controls eigene Controls festlegen auf die es sich beziehen soll. Eigentlich haben die Anchors viel mehr Einstellungen als im OI wahrscheinlich wollte man den OI damit nicht überladen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Stimmt...muss ich mir mal anschauen.
Johannes

Antworten