![]() |
Panel Zentrieren...
Liste der Anhänge anzeigen (Anzahl: 1)
Hi zusammen
Ich hab jetzt länger gesucht, aber keine Antwort auf mein Problem gefundn. Mein erster gedanke: Es liegt an unterschiedlichen Koordinatensystemen. Die antwort wäre wohl ParentToClient oder umgekehrt. Bloss - wie bringe ich Client.Width und Parent.Padding "zusammen" ? Mein Ansatz (ohne TGridPanel...):
Delphi-Quellcode:
Und so schauts dann aus:
function TPnlCalendarFrame.GetParentControlPostion(AParentCtrl : TPanel): integer;
var Widthtotal : Word; begin Widthtotal := (6 * FDayNumberFrame.Width); Result := (AParentCtrl.ClientWidth div 2) - (Widthtotal div 2); end; procedure TPnlCalendarFrame.CreateDayNumberFrame(AMonth: Integer); var LMonat, LName :String; LYear, LMonth, LDay : Word; begin System.SysUtils.DecodeDate(FFirstMonthDay, LYear, LMonth, LDay); FDayNumberFrame := TDayNumberFrame.Create(Self); LMonat := Monate[AMonth]; LName := LMonat + 'Frame'; case AMonth of 1..6: begin FParentCtrl := PnlSixMonts1; FParentCtrl.Padding.Left := GetParentControlPostion(FParentCtrl); end; 7..12:begin FParentCtrl := PnlSixMonts2; end; end; FDayNumberFrame.LblCaption.Caption := LMonat; FDayNumberFrame.Name := LName; FDayNumberFrame.InitDayNumberFrame; FDayNumberFrame.FirstMonthDay := StartOfAMonth(LYear, AMonth); FDayNumberFrame.LastMonthDay := EndOfAMonth(LYear, AMonth); FDayNumberFrame.Parent := FParentCtrl; FDayNumberFrame.Align := alLeft; FDayNumberFrame.Visible := true; FDayNumberFrame.HorzDayNumbersMonths; end; Anhang 53937 Dass die Reihenfolge der Monate durcheinanderkommt, bemerke ich auch erst jetzt... Dass das Monatspanel über den linken Rand hinausragt, führe ich auf die unterschiedlichen Koordinatensysteme beider Panels zurück. Das schreit nach ClienttoParent... Blos: wie bringt man ![]() Gruss Delbor |
AW: Panel Zentrieren...
Delphi-Quellcode:
?
Widthtotal := (6 * FDayNumberFrame.Width) + (6 * (margins.left + margins.right));
|
AW: Panel Zentrieren...
Hi KodeZwerg
Danke für deine Antwort! AlignwithMargins ist in allen irgendwie beteiligten Komponenten false. Gruss Delbor |
AW: Panel Zentrieren...
Es scheint sich ja um eine art Komponente zu handeln die du da bastelst wo noch an manchen stellen dinge falsch laufen.
Visuell würde ich es so machen wie der Windows Kalender es macht. (Immer 31 Felder rein, "in grau" vor-monat bzw nächster-monat felder. Das du die KW visuell mit aufnimmst ist ein nettes gimmick!) Für eine bessere Reparatur / alternative vorgehensweisen, würde ich den kompletten source mal anheften. (Ich pers. würde zBsp immer nur einen Monat darstellen lassen, das vereinfacht den Umgang denk ich mal enorm da man ja weiß wieviel felder es sind) |
AW: Panel Zentrieren...
Zitat:
|
AW: Panel Zentrieren...
Liste der Anhänge anzeigen (Anzahl: 3)
Hi Kodezwerg
Anbei im Anhang mal der Kalenderframe - der zeigt tatsächlich jeweils einen Monat an, führt aber zusätzlicj noch die letzten Tage des Vor- und die ersten Tage des Nachfolgemonats, sofern sie in eine Woche fallen, die auch zum aktuell angezeigten Monat gehört: Anhang 53940 Anhang 53938 Anhang 53939 Gruss Delbor |
AW: Panel Zentrieren...
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Uwe Raabe
Zitat:
Anhang 53941 Margins ist so Standard, während Padding standardmässig null ist und hier von mir belegt wurde. Gruss Delbor |
AW: Panel Zentrieren...
Paddings werden eigentlich immer angewendet. (jedenfalls bisher noch nie irgendwo gesehen, dass es nicht so war)
Bei den Margins sieht es aber anders aus, denn die werden böswillig ignoriert, außer man setzt ganz oben das Häkchen bei AlignWithMargins (aber darauf muß man erstmal kommen). |
AW: Panel Zentrieren...
Sollte dann das padding nicht noch mit reingerechnet werden bei "Widthtotal", rein vom logischen Aspekt?
Ich spiele eigentlich nur mit margins rum. Durch on/off find ich es flexibler. |
AW: Panel Zentrieren...
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:21 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