Einzelnen Beitrag anzeigen

Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#19

AW: Panel Zentrieren...

  Alt 4. Mai 2021, 14:51
Hi zusammen
Zuerst mal recht vielen Dank für eure vielen Antworten!
Andere spezille Ausrichtungkomponenten hast du auch mal ausprobiert?

Suche mal in der Komponenten nach Dingen mit "Panel" im Namen.
TGridPanel, TFlowPanel, TRelativePanel, ...
Ja,danke. Habe ich, bis auf TRelativpanel: Letzteres hab ich mir nur mal die Demo angesehen, während ich nach einer solchen suchte:TGridpanel, und von TFlowPanel habe ich auch eine Demo durchgearbeitet. Vielleicht mit gewissen Nuancen hab ich überall das selbe Problem: alle kleben standardmässig immer in Left.
Bei TGridpanel habe ich keinen Wert für den Abstand zischen zwei Controls gefunden, bei TFlowpanel ist es wohl mehr oder weniger dasselbe.

Wäre das eine Möglichkeit?
Delphi-Quellcode:
...
  case AMonth of
    1.. 6: FParentCtrl := PnlSixMonts1;
    7..12: FParentCtrl := PnlSixMonts2;
  end;
  FParentCtrl.Padding.Left := GetParentControlPostion(FParentCtrl);
...
Hab ich bereits so umgesetzt, steht so korrigiert aber nicht in der bereitgestellten *.pas. Was da (auch bei mir) noch fehlt: FParentCtrl hat von 1..6 einen andern Wert als von 7...12, wird also die ersten 6 mal überschrieben.

Bei solchen komplexeren Positionierungen würde ich das lieber selbst berechnen, also keine Aligns, Paddings und Margins benutzen.
Das wird insgesamt schneller sein und Du hast keine unübersichtlichen gegenseitigen Beeinflussungen.
Du kannst gezielt gewünschte Abstände einberechnen und die z.B. auch verringern, falls der Platz etwas knapper wird.
Auch das Zentrieren horizontal und vertikal ist kein Problem.

Natürlich musst Du dafür eine Funktion schreiben, aber das ist ein einmaliger Aufwand.
Aufrufen musst Du sie einmal bei der Initialisierung und dann im OnResize.

Dann hast Du alles selbst in der Hand und musst nicht mit Überraschungen der VCL umgehen.[/QUOTE]


Grundsätzlich stimme ich dir zu. Eine Besonderheit von Align ist zB., dass sich eine Komponente, die alLeft ausgrichtet werden soll, vor eine alLeft ausgerichtete Komponente schiebt. Bei mir kann das dann plötzlich heissen, dass der Februar vor dem Januar kommt...
Aber da sind auch die Werte, die ich zur Laufzeit ermittle und die den sichtbaren Panels total wiedersprechen.
Im "untersten" Frame, dem FDayNumberFrame, sind keinerlei Margins oder Paddings gesetzt: das Ding muss mit absolut minimalem Platz auskommen.
Ansonsten müsste ich mir das nochmal genau vornehmen...

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat