Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Navigation Form1 (https://www.delphipraxis.net/216997-navigation-form1.html)

lucy 3. Apr 2025 12:51

Navigation Form1
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

siehe Bild 1! ich möchte gerne, wenn ich in Form2 auf BorderIcon biMaximize clicke, dass Form 3, Form 4 und Form 5 ausgeblendet werden
und Form 2 in voller Größe dargestellt wird.

Wird wieder auf biMinimize geclickt soll wieder alles in die ursprungs Ansicht zurück (Bild 1).

Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    procedure FormCreate(Sender: TObject);
    procedure FormResize(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;


implementation

{$R *.dfm}

uses Unit2, Unit3, Unit4, Unit5;



procedure TForm1.FormCreate(Sender: TObject);
begin
  Panel1.SetBounds(0, 0, ClientWidth div 2, ClientHeight div 2);
  Panel2.SetBounds(ClientWidth div 2, 0, ClientWidth div 2, ClientHeight div 2);
  Panel3.SetBounds(0, ClientHeight div 2, ClientWidth div 2, ClientHeight div 2);
  Panel4.SetBounds(ClientWidth div 2, ClientHeight div 2, ClientWidth div 2, ClientHeight div 2);

  // Form2 in Panel1 einbetten
  Form2 := TForm2.Create(Self);
  //Form2.BorderStyle := bsNone; // Kein Rahmen für nahtlose Einbettung
  Form2.Parent := Panel1;
  Form2.Align := alClient;
  Form2.Show;

  // Form3 in Panel2 einbetten
  Form3 := TForm3.Create(Self);
  //Form3.BorderStyle := bsNone;
  Form3.Parent := Panel2;
  Form3.Align := alClient;
  Form3.Show;

  // Form4 in Panel3 einbetten
  Form4 := TForm4.Create(Self);
 // Form4.BorderStyle := bsNone;
  Form4.Parent := Panel3;
  Form4.Align := alClient;
  Form4.Show;

  // Form5 in Panel4 einbetten
  Form5 := TForm5.Create(Self);
  //Form5.BorderStyle := bsNone;
  Form5.Parent := Panel4;
  Form5.Align := alClient;
  Form5.Show;
end;

procedure TForm1.FormResize(Sender: TObject);
begin
var
  PanelWidth, PanelHeight: Integer;
begin
  PanelWidth := ClientWidth div 2; // Halbe Breite des Formulars
  PanelHeight := ClientHeight div 2; // Halbe Höhe des Formulars

  // SetBounds(X, Y, Breite, Höhe)
  Panel1.SetBounds(0, 0, PanelWidth, PanelHeight);                   // Oben links
  Panel2.SetBounds(PanelWidth, 0, PanelWidth, PanelHeight);          // Oben rechts
  Panel3.SetBounds(0, PanelHeight, PanelWidth, PanelHeight);         // Unten links
  Panel4.SetBounds(PanelWidth, PanelHeight, PanelWidth, PanelHeight); // Unten rechts end;

end;
end;

end.

himitsu 3. Apr 2025 18:17

AW: Navigation Form1
 
Und wo ist jetzt das Problem?


Im OnResize könnte man die FormGröße mit der DesktopGröße ScreenGröße vergleichen und daran entscheiden, ob maximiert oder nicht,
oder einfach den WindowState der Form abfragen (wsMaximized).

Und dann jeweils entsprechend die Panels positionieren, sowie ein-/ausblenden (Visible).



NEIN, Minimize ist nicht das Gegenteil die Umkehrung von Maximize.
Restore ist die Umkehrung.



p.s.:

Delphi-Referenz durchsuchenTGridPanel, anstatt vieler Panels.
Erspart das Positionieren beim Start, sowie das OnResize,
(gab's das schon in der XE7? Glaub schon .... falls nicht, dann siehe Delphi Community Edition)

oder
Um die zwei oberen und die zwei unteren Panels nochmal je ein Panel und dann mit Align die Panels ausrichten. (oder die beiden links, sowie rechts)
Oben/links jeweils alClient und rechts/unten entsprechend alRight/alBottom ... und dann bei den Panels rechts/unten entsprechend des Maximized-Status das Visible setzen. (
Delphi-Quellcode:
xxx.Visible := IstMaximiert;
)

TBx 4. Apr 2025 09:26

AW: Navigation Form1
 
Sieht mir ganz so aus, als würdest Du versuchen, eine MDI-Anwendung neu zu erfinden ...

Sherlock 4. Apr 2025 09:33

AW: Navigation Form1
 
Ergänzend zu Thomas' Antwort hier noch die offizielle Doku dazu: https://docwiki.embarcadero.com/RADS...DI-Anwendungen


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:37 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