![]() |
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. |
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.: ![]() 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;
|
AW: Navigation Form1
Sieht mir ganz so aus, als würdest Du versuchen, eine MDI-Anwendung neu zu erfinden ...
|
AW: Navigation Form1
Ergänzend zu Thomas' Antwort hier noch die offizielle Doku dazu:
![]() |
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