![]() |
TStringgrid - Width und ColWidth
Liste der Anhänge anzeigen (Anzahl: 1)
Hi zusammen
In einem Containerframe habe ich 4 Frameinstanzen( im Endeffekt sollen es 12 sein): Anhang 53833 Im Container gibts dies:
Delphi-Quellcode:
Im Basisframe gibts die Public deklarierte Prozedur InitDayNumberFrame, die, da sie Public deklariert ist, an Frameinstanzen wie DayNrFrameFebruary oder DayNrFrameApril vererbt werden sollte:
for i := Low(Monate) to High (Monate) do
begin case i of //ContentDayNumberFrameUnit; DayNrFrameApril 1: begin Self.DayNrFrameJanuary.InitDayNumberFrame; LMonth := I; Self.DayNrFrameJanuary.FirstMonthDay := StartOfAMonth(LYear, LMonth); Self.DayNrFrameJanuary.LastMonthDay := EndOfAMonth(LYear, LMonth); Self.DayNrFrameJanuary.LblCaption.Caption := Monate[i]; Self.DayNrFrameJanuary.HorzDayNumbersMonths; end; 2: begin Self.DayNrFrameFebruary.InitDayNumberFrame; LMonth := I; {Die Einstellungen hier sind Wiederholungen auf eine andere Instanz} end; 3: ... 4: ... 5: .... 12:... end; end;
Delphi-Quellcode:
Das Strinnggrid sollte zur Laufzeit also nicht breiter als die Summe seiner Spaltenbreiten sein. Ist aber nicht. Das grid und seine Breitenverhältnisse werden genauso dargestellt, wie im jpeg widergegeben.
procedure TDayNumberFrame.InitDayNumberFrame;
begin Self.StrGCalendarMonthFrame.ColWidths[0] := 40; Self.StrGCalendarMonthFrame.ColWidths[1] := 30; Self.StrGCalendarMonthFrame.ColWidths[2] := 30; Self.StrGCalendarMonthFrame.ColWidths[3] := 30; Self.StrGCalendarMonthFrame.ColWidths[4] := 30; Self.StrGCalendarMonthFrame.ColWidths[5] := 30; Self.StrGCalendarMonthFrame.ColWidths[6] := 30; Self.StrGCalendarMonthFrame.ColWidths[7] := 30; Self.StrGCalendarMonthFrame.Width := 8*30; end; Was ist da falsch? Gruss Delbor |
AW: TStringgrid - Width und ColWidth
Was ist denn das Alignment von dem StrGCalendarMonthFrame? Wenn das alClient ist, bringt ja
Delphi-Quellcode:
nichts
Width := 8*30
|
AW: TStringgrid - Width und ColWidth
Abgesehn von einem eventuellen Align, stimmt da eh etwas nicht.
* deine Rechnung ist Falsch 40+7*30, denn siehe
Delphi-Quellcode:
ColWidths[0] := 40;
und muüßte man nicht noch die Linie zwischen den Columns hinzurechnen? also 41+7*31 und vielleicht auch noch eine eventuelle Scrollbar, falls malc mehr Rows/Zeilen * und wie man genau sieht, sind alle Spalten gleich breit, was auch nicht stimmen kann, denn siehe
Delphi-Quellcode:
ColWidths[0] := 40;
"sollte" ist kein "ist wirklich so", was man aber mit dem Debugger bestimmt leicht prüfen könnte |
AW: TStringgrid - Width und ColWidth
Liste der Anhänge anzeigen (Anzahl: 1)
Hi zusammen
Zitat:
Delphi-Quellcode:
ersetzt und die Anchors stehen lassen. Ich hab zwar nie wirklich verstanden, was das "alCustom" bewirkt oder bewirken soll. Klar ist nur: das Grid klebt jetzt an der linken Seite.
alignal := Custom
Die Breitenzuweisung, auch für TDayNumberFrame, ist nun so:
Delphi-Quellcode:
GridLineWidth ist hier das (Standard-) 1 - da hab ich mich erstmal verzählt und nur den Wert 7 statt 9 eingesetzt. Schliesslich habe ich stattdessen sogar auf 10 erhöht. Korrekt wäre wohl eher Borderwith*2...
Self.StrGCalendarMonthFrame.Width := (7*30) + 40 + 10;
Self.Width := StrGCalendarMonthFrame.Width; Im Moment sieht das so aus: Anhang 53834 Zitat:
Zitat:
Zitat:
Das verstehe ich jetzt nicht wirklich. Die erste Spalte ist momentan breiter als die anderen, weil sie nebst dem 'W' auch noch die Wochennummer aufnehmen soll. Eine Alternative wäre, das W in die 1. Zeile vor die Tagesname zu schreiben und ansonsten in der ersten Spalte nur noch die Wochennummern hinzuschreiben. Gruss Delbor |
AW: TStringgrid - Width und ColWidth
Zitat:
Zitat:
|
AW: TStringgrid - Width und ColWidth
Zitat:
Oder: Jeder Automatismus für die Positionierung der Komponente ist ausgeschaltet. Das Design, die Position, Höhe, Breite müssen selbst geregelt werden, also genau das, was Du gerade beabsichtigst. |
AW: TStringgrid - Width und ColWidth
Hi Delphi-Natrium
Zitat:
Gruss Delbor |
AW: TStringgrid - Width und ColWidth
Zitat:
Schonmal auf die Idee gekommen die Hilfe zu fragen? ![]() alNone macht garnichts und bei alCustom mußt DU, in entsprechend Events, das selbst ausrichten, oder der Parent enthält Funktionen, um seine Untercontrols auszurichten. |
AW: TStringgrid - Width und ColWidth
Hi zusammen
Zitat:
![]() ![]() ![]() ![]() Trotzdem bleiben mir noch einige Verständnisfragen. alCustom ausgerichtete Komponenten müssen über NewLeft, NewTop,NewRight und NewBottom erfasst/ausgerichtet werden, sonst schweben die irgendwo im Nirwana (und eher zufällig auf dem Bildschirm). Frage1: Können TAlign-Typen und Events wie OnAlignPosition auch automatisch auf Grössenänderungen reagieren, wie zB.Skalierungen aller Art? Meine Überlegung dahinter: X := 5 ist in einem bereits skalierten Objekt nicht am selben Ort wie in einem selben, aber nicht skalierten Objekt. Frage2: Was ist vorteilhafter / aufwändiger: Left&CO direkt zuzuweisen oder über Align:= al Custom? Gruss Delbor |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:46 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