AW: Panel Zentrieren...
Hi zusammen
Ich habe gerade gesehen, dass die drei *.pas- Dateien bislang dreimal angeklickt, bzw. wahrscheinlich drei mal gedownloaded wurden. Habt ihr dabeieine Antwort gefunden? Gruss Delbor |
AW: Panel Zentrieren...
Zitat:
|
AW: Panel Zentrieren...
Hi CodeZwerg
Der Termineingabeframe enthält keinen Code. Wenn der also nicht gefunden wird, kannst du die entsprechende Referenz darauf einfach löschen lassen. Andrerseits könntest du dir die Raize-Components gratis von Embarcadero Downloaden. Allenfalls geht das mit der Communitie nicht. Die Komponenten sind etwas besser als die Standards - die Tabsheets des PageControls lassen sich einfärben, die Reiter haben verschiedene Formen/Ecken oder auch nicht. Einfach die Pas in ein Beispielprojekt kopieren (NICHT UMBENENNEN) und dem Projekt hinzufügen. Gruss Delbor |
AW: Panel Zentrieren...
Liste der Anhänge anzeigen (Anzahl: 2)
Hi zusammen
Das ist der PnlCalendaframe zur Designzeit : Anhang 53955 clAqua sind dabei die beiden Panels, die je 6 Monatsframes aufnehmen. Width dieser Panels ist Widthtotal. AParentCtrl ist das blaue Panel. Und das ist das, wasmir zur Laufzeit gemeldet wird: Zitat:
Anhang 53956 Withtotal ist also grösser als das umgebende Panel. Also 2 verschiedene Koordinatensysteme? Und nun? Gruss delbor |
AW: Panel Zentrieren...
Andere spezille Ausrichtungkomponenten hast du auch mal ausprobiert?
Suche mal in der Komponenten nach Dingen mit "Panel" im Namen. TGridPanel, TFlowPanel, TRelativePanel, ... Im FMX nennen die sich "Layout". |
AW: Panel Zentrieren...
Zitat:
TLayout sollte man als Container nehmen für andere Controls, das zeichnet sich nicht selbst und ist sehr schlank. TPanel gehr aber auch, ist halt auch selbst ein Control. |
AW: Panel Zentrieren...
Delphi-Quellcode:
Wäre das eine Möglichkeit?
...
case AMonth of 1..6: begin FParentCtrl := PnlSixMonts1; // Beim ersten Panel machst Du das und das Ergebnis stimmt. FParentCtrl.Padding.Left := GetParentControlPostion(FParentCtrl); end; 7..12:begin FParentCtrl := PnlSixMonts2; // Beim zweiten Panel machst Du das nicht und das Ergebnis stimmt nicht. FParentCtrl.Padding.Left := GetParentControlPostion(FParentCtrl); end; end; ... end;
Delphi-Quellcode:
...
case AMonth of 1.. 6: FParentCtrl := PnlSixMonts1; 7..12: FParentCtrl := PnlSixMonts2; end; FParentCtrl.Padding.Left := GetParentControlPostion(FParentCtrl); ... |
AW: Panel Zentrieren...
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. |
AW: Panel Zentrieren...
Hi zusammen
Zuerst mal recht vielen Dank für eure vielen Antworten! Zitat:
Bei TGridpanel habe ich keinen Wert für den Abstand zischen zwei Controls gefunden, bei TFlowpanel ist es wohl mehr oder weniger dasselbe. Zitat:
Zitat:
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 |
AW: Panel Zentrieren...
Wenn ich was links anordnen will, aber nicht ganz links, sondern rechts neben dem letzten ganz links, helfe ich mir in der Art:
Delphi-Quellcode:
Panel.Align := alRight; // Schiebt erstmal nach ganz rechts.
Panel.Align := alLeft; // Schiebt nun nicht nach ganz links, sondern rechts neben das "letzte" der links angeordeneten Elemente. // oder: Panel.Align := alLeft; // Schiebt nach ganz links. Panel.Left := Parent.Width; // Verschiebt nach vielzuweit rechts, da aber Align = alLeft ist, wird daraus rechts neben dem "Letzten" links. // oder: Panel.Left := MaxInt; // Verschiebt nach vielzuweit rechts, da aber Align = alLeft ist, wird daraus rechts neben dem "Letzten" links. Panel.Align := alLeft; // Schiebt nach ganz links. neben dem "Letzten" links. // oder: // In umgekehrter Reihenfolge einfügen. // Zuerst das, was im Ergebnis am weitesten rechts sein soll. // Dann das davor // und dann das davor // ... // Hieße bei Dir also einfügen von // Juni // Mai // April // März // Februar // Januar |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz