AGB  ·  Datenschutz  ·  Impressum  







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

Panels untereinander anornden bei Resize

Ein Thema von bwolf · begonnen am 18. Jun 2010 · letzter Beitrag vom 18. Jun 2010
Antwort Antwort
bwolf

Registriert seit: 17. Jan 2006
368 Beiträge
 
Delphi 2009 Professional
 
#1

Panels untereinander anornden bei Resize

  Alt 18. Jun 2010, 09:35
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
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#2

AW: Panels untereinander anornden bei Resize

  Alt 18. Jun 2010, 09:37
Ich würde align ausschalten und im OnResize des ersten Hauptpanels die Positionierung direkt setzen.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von alphaflight83
alphaflight83

Registriert seit: 5. Jun 2008
Ort: Würzburg
148 Beiträge
 
Delphi 12 Athens
 
#3

AW: Panels untereinander anornden bei Resize

  Alt 18. Jun 2010, 11:20
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;
Make me a sandwich! - What? Make it yourself. - Sudo make me a sandwich! - Okay
  Mit Zitat antworten Zitat
David Martens

Registriert seit: 29. Sep 2003
205 Beiträge
 
Delphi XE Enterprise
 
#4

AW: Panels untereinander anornden bei Resize

  Alt 18. Jun 2010, 16:31
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:
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;
2.
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
  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 03:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz