Einzelnen Beitrag anzeigen

Geri

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

AW: falsche Anordnung von TPanels

  Alt 3. Jun 2025, 14:08
So, habe nun mal ein Programm mit den selben Panels erstellt.

Anbei das Projekt.
Nicht er identische, aber ähnlicher Fehler. Alle Panels pnlAxis01, pnlAxis11 und pnlAxis21, die im Portrai-Modus dargestellt sind, werden am Ende angehängt
Vielleicht hat es etwas mit dem Stylebook zu tnun

Delphi-Quellcode:
unit uFirstApp;

interface

uses
  System.Rtti, System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,FMX.Objects,
  FMX.Controls.Presentation, System.ImageList, FMX.ImgList, FMX.Layouts
  {$ifdef ANDROID}
  ,
  Androidapi.JNI.Bluetooth,
  Androidapi.JNI.JavaTypes,
  Androidapi.Helpers,
  Androidapi.jni.app,
  Androidapi.JNI.Os,
  Androidapi.JNI.Net,
  Androidapi.JNI.GraphicsContentViewText,
  Androidapi.JNIBridge,
  System.IOUtils
  {$endif}
  ;

type
  TForm1 = class(TForm)
    pnlAxis0: TPanel;
    btnAxisName0: TCornerButton;
    SB: TStyleBook;
    btnAxisValue0: TCornerButton;
    btnAxisUnit0: TCornerButton;
    btnAxisDiv0: TCornerButton;
    btnAxisW0: TCornerButton;
    btnAxisBuzzer0: TCornerButton;
    ImageList1: TImageList;
    pnlAxis2: TPanel;
    btnAxisName2: TCornerButton;
    btnAxisValue2: TCornerButton;
    btnAxisUnit2: TCornerButton;
    btnAxisDiv2: TCornerButton;
    btnAxisBuzzer2: TCornerButton;
    pnlAxis1: TPanel;
    btnAxisName1: TCornerButton;
    btnAxisValue1: TCornerButton;
    btnAxisUnit1: TCornerButton;
    btnAxisDiv1: TCornerButton;
    btnAxisW1: TCornerButton;
    btnAxisBuzzer1: TCornerButton;
    Button1: TButton;
    btnAxisW2: TCornerButton;
    pnlAxis21: TPanel;
    pnlAxis11: TPanel;
    pnlAxis01: TPanel;
    procedure Button1Click(Sender: TObject);
  private
   FLandScape: Boolean;
   procedure SetLandScape(const Value: Boolean);
    { Private declarations }
  protected
    procedure ShowPanel(APanel: TPanel);
    procedure HidePanel(APanel: TPanel);
  public
    property LandScape: Boolean read FLandScape write SetLandScape;

  end;
var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);
begin
 LandScape := not LandScape;
end;

procedure TForm1.SetLandScape(const Value: Boolean);
begin
  if FLandScape <> Value then
  begin
    FLandScape := Value;
    if FLandscape then
    begin
      btnAxisW0.parent:= pnlAxis0;
      btnAxisDiv0.parent:= pnlAxis0;
      btnAxisBuzzer0.parent:= pnlAxis0;

      btnAxisW1.parent:= pnlAxis1;
      btnAxisDiv1.parent:= pnlAxis1;
      btnAxisBuzzer1.parent:= pnlAxis1;

      btnAxisW2.parent:= pnlAxis2;
      btnAxisDiv2.parent:= pnlAxis2;
      btnAxisBuzzer2.parent:= pnlAxis2;
    end
    else
    begin
      btnAxisW0.parent:= pnlAxis01;
      btnAxisDiv0.parent:= pnlAxis01;
      btnAxisBuzzer0.parent:= pnlAxis01;

      btnAxisW1.parent:= pnlAxis11;
      btnAxisDiv1.parent:= pnlAxis11;
      btnAxisBuzzer1.parent:= pnlAxis11;

      btnAxisW2.parent:= pnlAxis21;
      btnAxisDiv2.parent:= pnlAxis21;
      btnAxisBuzzer2.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;


procedure TForm1.HidePanel(APanel: TPanel);
begin
  APanel.TagFloat := APanel.Height;
  APanel.Height := 0;
end;

procedure TForm1.ShowPanel(APanel: TPanel);
begin
  APanel.Height := APanel.TagFloat;
end;

end.
Miniaturansicht angehängter Grafiken
ansichtide.png   ansichtportrait.png  
Angehängte Dateien
Dateityp: zip TestPanelOrder.zip (1,5 KB, 3x aufgerufen)
Gerhard
  Mit Zitat antworten Zitat