![]() |
Delphi-Version: 10.4 Sydney
Gridpanel zentrieren
Liste der Anhänge anzeigen (Anzahl: 2)
Hi zusammen
Mit Hilfe dieses Beispiels erzeuge ich zur Laufzeit auf einem Gridpanel 12 meiner Monatskalender:
Delphi-Quellcode:
Wiedergegeben ist hier nur der Codeblock aus dem Beispiel, den ich für mich angepasst habe.
for i := 1 to rowCount do
with GridPanel1.RowCollection.Add do begin SizeStyle := ssAuto; Value := 155; // GridPanel1.RowCollection[i].Collection // Das ist nicht vorhanden end; for i := 1 to colCount do with GridPanel1.ColumnCollection.Add do begin // GridPanel1.ColumnCollection.Items[i].SizeStyle := ssAuto; // Das natürlich ebensowenig // GridPanel1.ColumnCollection.Items[i].Value := 258; SizeStyle := ssAuto; Value := 258; if (i = colCount) then Self.GridPanel1.Width := 300 * i end; for i := 0 to (rowCount * colCount) -1 do begin LMonth := i + 1; CreateDayNumberFrame(LMonth); end; GridPanel1.RowCollection.EndUpdate; GridPanel1.ColumnCollection.EndUpdate; GridPanel1.Width := (265 * 6); Die letzte Zeile stützt auf den Wert von 'Value' ab. Wenn ich hier den ursprünglichen Wert (258) einsetze, werden mir vom letzten Kalender etliche Tage abgeschnitten (Anhang1). Anhang 53920 Mit dem hier eingesetztenn Wert wird weniger abgeschnitten, aber immer noch zuviel. Und wenn ich stattdessen 278einsetze, sieht das wie in Anhang 2 aus: Anhang 53921 Fazit:so verwirklicht, ist dies ein Hasardspiel: wenn sich die Auflösung ändert, ist je nachdem nichts mehr sichtbar. Ich hatte auch schon anders getestet:
Delphi-Quellcode:
PnlBackGround sollte der eigentliche Parent sein. Ich hatte dabei gehofft, so das Gridpanel besser im Top zentrieren zu können.
GridPanel1.Left := (Self.Width - GridPanel1.Width) div 2;
GridPanel1.Left := (Self.PnlBackGround.Width div 2) - (GridPanel1.Width div 2); Das Problem dabei: PnlBackGround.With war in jedem Fall kleiner als GridPanel.Width, so dass PnlBackGround.Left immer links ausserhalb des Bildschirms zu liegen kam. Mein Fazit: TGridPanel und wohl auch TFlowpanel sind ziemlich unbrauchbar. Oder hat schon jemand andere Erfahrungen gemacht? Die Idee hinter beiden Komponenten ist zwar gut, aber schlecht umgesetzt. Die Arbeit, die die beiden Komponenten abnehmen, fällt anderswo verstärkt an. Gruss Delbor |
AW: Gridpanel zentrieren
Hilft Dir vielleicht StackPanel, RelativePanel oder meine Lösung (
![]() |
AW: Gridpanel zentrieren
Aber müsste das nicht immer so sein (ungetestet):
Delphi-Quellcode:
Abstand := 10; //Abstand der Grids zum Rand und untereinander
GridAnzahl := 6; Gridpanel1.Width := Abstand * (Gridanzahl + 1) + Gridanzahl * Gridwidth + 2 * Gridpanel1.BevelWidth; |
AW: Gridpanel zentrieren
Dass dies
Delphi-Quellcode:
nicht vorhanden ist, liegt daran, dass die Collection 0-basiert ist, dein I aber von 1 an gezählt wird. Gleiches gilt auch für die Bemerkung zur ColumnCollection.
// GridPanel1.RowCollection[i].Collection // Das ist nicht vorhanden
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 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