AGB  ·  Datenschutz  ·  Impressum  







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

Navigation Form1

Ein Thema von lucy · begonnen am 3. Apr 2025 · letzter Beitrag vom 4. Apr 2025
Antwort Antwort
lucy

Registriert seit: 25. Okt 2017
84 Beiträge
 
Delphi XE7 Starter
 
#1

Navigation Form1

  Alt Gestern, 12:51
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.
Angehängte Grafiken
Dateityp: png Bild1.PNG (14,7 KB, 32x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#2

AW: Navigation Form1

  Alt Gestern, 18:17
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. (xxx.Visible := IstMaximiert; )
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (Gestern um 18:25 Uhr)
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.904 Beiträge
 
Delphi 12 Athens
 
#3

AW: Navigation Form1

  Alt Heute, 09:26
Sieht mir ganz so aus, als würdest Du versuchen, eine MDI-Anwendung neu zu erfinden ...
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock
Online

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.811 Beiträge
 
Delphi 12 Athens
 
#4

AW: Navigation Form1

  Alt Heute, 09:33
Ergänzend zu Thomas' Antwort hier noch die offizielle Doku dazu: https://docwiki.embarcadero.com/RADS...DI-Anwendungen
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:04 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