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
 
Geri

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

falsche Anordnung von TPanels

  Alt 3. Jun 2025, 07:36
Guten Morgen


Ich habe eine Delphi-App für Android.
Beim Umschalten von Landscape nach Portrait sollen sechs Elemente vom Typ TPanel anders angeordnet werden.

Sie sollen so aufgebaut werden:
Portrait: pnlAxis0, pnlAxis01, pnlAxis1, pnalAxis11, pnlAxis2,pnlAxis21
Landscape: pnlAxis0, pnlAxis1, pnalAxis2, die anderen drei unsichtbar.
Alle Panels sind Align.Top eingestellt.

Wenn man von Landscape nach Portrait umschaltet, dann stimmt die Reihenfolge nicht mehr.

Dargestellt wird: pnlAxis0, pnlAxis01, pnlAxis1, pnalAxis2, pnlAxis11,pnlAxis21


Habe bereits allerlei probiert.

Delphi-Quellcode:
procedure TmDROMainForm.UpdateLayout(aPortrait:Boolean);
var Panels: TArray<TPanel>;
     ScreenService: IFMXScreenService;
begin
  Panels := [pnlAxis21, pnlAxis2, pnlAxis11, pnlAxis1, pnlAxis01, pnlAxis0]; // umgekehrte Reihenfolge für InsertObject(0,...)

  try
    pnlClient.BeginUpdate;
    for var P in Panels do
      if P.Parent = pnlClient then
        pnlClient.RemoveObject(P);

    pnlAxis01.height:=50;
    pnlAxis11.height:=50;
    pnlAxis21.height:=50;


    If aPortrait then
     begin
      // Portrait
      pnlAxis01.Visible :=true;
      pnlAxis11.Visible :=true;
      pnlAxis21.Visible :=true;

      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.Visible :=false;
      pnlAxis11.Visible :=false;
      pnlAxis21.Visible :=false;

      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;

      // Sichtbare Panels in richtiger Reihenfolge wieder einfügen

    for var P in Panels do
      P.Align := TAlignLayout.Top;



      // Sichtbare Panels in richtiger Reihenfolge (von unten nach oben) wieder einfügen
    for var I := High(Panels) downto 0 do
      if Panels[I].Visible then
        pnlClient.AddObject(Panels[I]);
  finally
    pnlClient.EndUpdate;
  end;

    // Layout und Style auffrischen
  pnlClient.Repaint;

  for var i := 0 to pnlClient.ChildrenCount - 1 do
    Log.d(pnlClient.Children[i].Name);
end;
Ich bin ratlos und ChatGPT konnte mir auch nicht weiterhelfen

LG Geri
Gerhard
  Mit Zitat antworten Zitat
 


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 12:57 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