AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

falsche Anordnung von TPanels

Ein Thema von Geri · begonnen am 3. Jun 2025 · letzter Beitrag vom 13. Jun 2025
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.757 Beiträge
 
Delphi 12 Athens
 
#11

AW: falsche Anordnung von TPanels

  Alt 3. Jun 2025, 10:35
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.598 Beiträge
 
Delphi 7 Professional
 
#12

AW: falsche Anordnung von TPanels

  Alt 3. Jun 2025, 10:44
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.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.458 Beiträge
 
Delphi 12 Athens
 
#13

AW: falsche Anordnung von TPanels

  Alt 3. Jun 2025, 10:45
Hallöle...

Wie wäre es mit TGridPanel?
https://www.youtube.com/watch?v=w2HI...listerChristie

  Mit Zitat antworten Zitat
Geri

Registriert seit: 23. Nov 2004
Ort: Feldkirch
72 Beiträge
 
Delphi 2005 Personal
 
#14

AW: falsche Anordnung von TPanels

  Alt 3. Jun 2025, 10:48
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;
Gerhard
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.757 Beiträge
 
Delphi 12 Athens
 
#15

AW: falsche Anordnung von TPanels

  Alt 3. Jun 2025, 11:01
Wie wäre es mit TGridPanel?
TGridPanel ist ein VCL-Control und das kann kein Android. Unter FMX wäre das eher ein TGridPanelLayout. In beiden Fällen muss man sich dann aber immer noch um das Aus- und Einblenden der Zeilen selbst kümmern.

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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Geri

Registriert seit: 23. Nov 2004
Ort: Feldkirch
72 Beiträge
 
Delphi 2005 Personal
 
#16

AW: falsche Anordnung von TPanels

  Alt 3. Jun 2025, 11:05
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.
Mit folgendem Code ergibt sich auch keine Besserung.

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;
Gerhard

Geändert von Geri ( 3. Jun 2025 um 11:08 Uhr) Grund: Tippfehler im Code
  Mit Zitat antworten Zitat
Geri

Registriert seit: 23. Nov 2004
Ort: Feldkirch
72 Beiträge
 
Delphi 2005 Personal
 
#17

AW: falsche Anordnung von TPanels

  Alt 3. Jun 2025, 11:13
Nur zur Info: Hier auch noch Screenshot der Objektstruktur.
Miniaturansicht angehängter Grafiken
objectstructure.png  
Gerhard
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.757 Beiträge
 
Delphi 12 Athens
 
#18

AW: falsche Anordnung von TPanels

  Alt 3. Jun 2025, 11:21
Ich kann es leider nicht auf Android probieren, aber unter Windows funktioniert das hier angehängte Beispiel schon: https://app.screencast.com/cYGiQaqPxeV40
Angehängte Dateien
Dateityp: zip TestPanelOrder.zip (1,5 KB, 1x aufgerufen)
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
AuronTLG

Registriert seit: 2. Mai 2018
Ort: Marburg
341 Beiträge
 
Delphi 12 Athens
 
#19

AW: falsche Anordnung von TPanels

  Alt 3. Jun 2025, 11:23
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.
  Mit Zitat antworten Zitat
Geri

Registriert seit: 23. Nov 2004
Ort: Feldkirch
72 Beiträge
 
Delphi 2005 Personal
 
#20

AW: falsche Anordnung von TPanels

  Alt 3. Jun 2025, 12:54
@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;

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.
Habe ich mal entfernt. Keine Verbesserung.
Gerhard
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:31 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