![]() |
Panels untereinander anornden bei Resize
Hi,
ich habe ein Panel mit alTop, das wiederrum 2 Panels enthalt die beide alLEft haben. Wenn ich jetzt die Form von der Breite ändere und die beiden Panels nicht mehr komplett dargestellt werden können, würde ich gerne das sich das rechte Panel unter das linke Panel schiebt. Spiele schon seit einer Weile rum, aber krieg das nicht so richtig hin. Habe übrigens D7 ;) |
AW: Panels untereinander anornden bei Resize
Ich würde align ausschalten und im OnResize des ersten Hauptpanels die Positionierung direkt setzen.
|
AW: Panels untereinander anornden bei Resize
Align ist bei Panel1 und 2 alNone.
Bei Panel0 (MotherPanel) AlClient oder AlTop. PanelWidth nach Bedarf anpassen. Die Prozedur im FormShow UND FormResize aufrufen.
Code:
procedure TForm1.SizeMe(Sender: TObject);
const PanelWidth = 500; (* The required width for each client panel *) begin Panel1.Width := PanelWidth; Panel2.Width := PanelWidth; if Panel0.Width <= 2*PanelWidth then begin Panel1.Top := 0; Panel2.Top := (Panel0.Height div 2) +1; Panel1.Left := 0; Panel2.Left := 0; Panel1.Height := Panel0.Height div 2; Panel2.Height := Panel0.Height div 2; end else begin Panel1.Top := 0; Panel2.Top := 0; Panel1.Left := 0; Panel2.Left := PanelWidth + 1; Panel1.Height := Panel0.Height; Panel2.Height := Panel0.Height; end; |
AW: Panels untereinander anornden bei Resize
jenachdem was du jetzt genau haben willst:
Situation: auf dem Motherpanel 2 Panel: pLeft und pRight 1. pLeft : feste Größe pRight: füllt den restlichen Teil des Motherpanels aus, hat eine Mindestgröße z.B. 100 und "verschwindet" bei unterschreiten hinter pLeft Lösung: pLeft.Align := alLeft; pRight.Align := alRight; und beim Motherpanel.OnResize
Delphi-Quellcode:
2.
procedure TForm1.MotherpanelResize(Sender: TObject);
begin if (pRight.Width > 100) and (pRight.Left < pLeft.Width) then pRight.Width := 100; if pRight.Left > pLeft.Width then pRight.Width := Motherpanel.Width - pLeft.Width - 2; end; pLeft : feste Größe pRight: feste Größe und "verschwindet" bei unterschreiten hinter pLeft Lösung: pLeft.Align := alLeft; pRight.Align := alRight; P.S.: bei beiden Varianten muß pLeft "vor" pRight liegen d.h. entweder erst pRight anlegen und dann pLeft, oder Rechtclick auf pLeft und Element>"nach vorne setzen" auswählen. Gruß David |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:45 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 by Thomas Breitkreuz