![]() |
AW: falsche Anordnung von TPanels
Du könntest auch die Height der Panels auf 0 setzen und das Visible auf True belassen. Den originalen Wert kannst du dir irgendwo (z.B. TagFloat) merken um später die Height wiederherzustellen. Die Panels behalten dann ihre relative Position bei.
|
AW: falsche Anordnung von TPanels
Andere Idee:
Bei allen Panels Align auf Bottom setzen, dann sind sie erstmal unten angeordnet. Dann in der Reihenfolge, in der sie von oben angeordnet werden sollen, Align auf Top setzen. |
AW: falsche Anordnung von TPanels
Hallöle...8-)
Wie wäre es mit TGridPanel? ![]() :wink: |
AW: falsche Anordnung von TPanels
Immer noch selbiges Ergebnis mit
Delphi-Quellcode:
If aPortrait then
begin pnlAxis21.Align := TAlignLayout.Top; pnlAxis21.Position.y := 0; pnlAxis2.Align := TAlignLayout.Top; pnlAxis2.Position.y := 0; pnlAxis11.Align := TAlignLayout.Top; pnlAxis11.Position.y := 0; pnlAxis1.Align := TAlignLayout.Top; pnlAxis1.Position.y := 0; pnlAxis01.Align := TAlignLayout.Top; pnlAxis01.Position.y := 0; pnlAxis0.Align := TAlignLayout.Top; pnlAxis0.Position.y := 0; end; |
AW: falsche Anordnung von TPanels
Zitat:
Deswegen auch mein Ansatz mit dem Height := 0. Damit umgeht man das Umsortieren der Controls auf Basis des Alignments, was unweigerlich beim Visible := False bzw. True erfolgt. |
AW: falsche Anordnung von TPanels
Zitat:
Delphi-Quellcode:
procedure TmDROMainForm.UpdateLayout_VHeight(aPortrait:Boolean);
begin try pnlClient.BeginUpdate; If aPortrait then begin pnlAxis01.Height:=60; pnlAxis11.Height:=60; pnlAxis21.Height:=60; mAxisItem[0].W.Parent:= pnlAxis01; mAxisItem[0].Divider.Parent:= pnlAxis01; mAxisItem[0].Buzzer.Parent:= pnlAxis01; mAxisItem[1].W.Parent:= pnlAxis11; mAxisItem[1].Divider.Parent:= pnlAxis11; mAxisItem[1].Buzzer.Parent:= pnlAxis11; mAxisItem[2].W.Parent:= pnlAxis21; mAxisItem[2].Divider.Parent:= pnlAxis21; mAxisItem[2].Buzzer.Parent:= pnlAxis21; end else begin // Landscape pnlAxis01.Height:=0; pnlAxis11.Height:=0; pnlAxis21.Height:=0; mAxisItem[0].W.Parent:= pnlAxis0; mAxisItem[0].Divider.Parent:= pnlAxis0; mAxisItem[0].Buzzer.Parent:= pnlAxis0; mAxisItem[1].W.Parent:= pnlAxis1; mAxisItem[1].Divider.Parent:= pnlAxis1; mAxisItem[1].Buzzer.Parent:= pnlAxis1; mAxisItem[2].W.Parent:= pnlAxis2; mAxisItem[2].Divider.Parent:= pnlAxis2; mAxisItem[2].Buzzer.Parent:= pnlAxis2; end; finally pnlClient.EndUpdate; end; // Layout und Style auffrischen pnlClient.Repaint; end; |
AW: falsche Anordnung von TPanels
Liste der Anhänge anzeigen (Anzahl: 1)
Nur zur Info: Hier auch noch Screenshot der Objektstruktur.
|
AW: falsche Anordnung von TPanels
Liste der Anhänge anzeigen (Anzahl: 1)
Ich kann es leider nicht auf Android probieren, aber unter Windows funktioniert das hier angehängte Beispiel schon:
![]() |
AW: falsche Anordnung von TPanels
Eventuell könnte das BeginUpdate/EndUpdate noch reinpfuschen.
Wenn das ohne immer noch nicht funktioniert, ist dann aber etwas komisch. Ich habe sowas auch schon umsetzen müssen und hatte keine Probleme dabei. |
AW: falsche Anordnung von TPanels
@Uwe
Vielen Dank für dein Beispiel. Dein Beispiel funktioniert. Habe meinen Code anschließend deinem Beispiel folgendermaßen angepasst. Immer noch das selbe Erbenis.
Delphi-Quellcode:
procedure TmDROMainForm.Button1Click(Sender: TObject);
begin // UpdateLayout(true); LandScape := not LandScape; end; procedure TmDROMainForm.SetLandScape(const Value: Boolean); begin if FLandScape <> Value then begin FLandScape := Value; if FLandscape then begin mAxisItem[0].W.Parent:= pnlAxis0; mAxisItem[0].Divider.Parent:= pnlAxis0; mAxisItem[0].Buzzer.Parent:= pnlAxis0; mAxisItem[1].W.Parent:= pnlAxis1; mAxisItem[1].Divider.Parent:= pnlAxis1; mAxisItem[1].Buzzer.Parent:= pnlAxis1; mAxisItem[2].W.Parent:= pnlAxis2; mAxisItem[2].Divider.Parent:= pnlAxis2; mAxisItem[2].Buzzer.Parent:= pnlAxis2; end else begin mAxisItem[0].W.Parent:= pnlAxis01; mAxisItem[0].Divider.Parent:= pnlAxis01; mAxisItem[0].Buzzer.Parent:= pnlAxis01; mAxisItem[1].W.Parent:= pnlAxis11; mAxisItem[1].Divider.Parent:= pnlAxis11; mAxisItem[1].Buzzer.Parent:= pnlAxis11; mAxisItem[2].W.Parent:= pnlAxis21; mAxisItem[2].Divider.Parent:= pnlAxis21; mAxisItem[2].Buzzer.Parent:= pnlAxis21; end; for var pnl in [pnlAxis01, pnlAxis11, pnlAxis21] do begin if Value then HidePanel(pnl) else begin ShowPanel(pnl); end; end; end end; Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:58 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