AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls 2 Panels sollen sich das Form gleichmäßig teilen -> Anchors ?
Thema durchsuchen
Ansicht
Themen-Optionen

2 Panels sollen sich das Form gleichmäßig teilen -> Anchors ?

Ein Thema von hoika · begonnen am 5. Jan 2011 · letzter Beitrag vom 23. Apr 2013
Antwort Antwort
Seite 2 von 2     12   
WIng2005

Registriert seit: 20. Mär 2006
Ort: Thüringen
388 Beiträge
 
Delphi XE Starter
 
#11

AW: 2 Panels sollen sich das Form gleichmäßig teilen -> Anchors ?

  Alt 23. Apr 2013, 18:00
Hallo zusammen,

Sorry für die späte Antwort, meine Festplatte hatte sich zwischenzeitlich entschieden, in den Festplattenhimmel aufzusteigen.... Naja, so hatte ich wenigstens Grund für ne SSD .

Danke erstmal für die Antworten. Ich hatte schon befürchtet, dass das Ganze nur via Berechnung laufen kann. Muss ich mich mal intensiver mit befassen. Dramatisch daran ist nur, dass die Panel auf einem Notebook angeordnet sind, 5 Seiten, verschiedene Komponenten. Naja, mal schauen, wie ich das per Funktion allgemein auf alle Seiten bringen kann.

Dank euch!
MFG
Steffen
  Mit Zitat antworten Zitat
WIng2005

Registriert seit: 20. Mär 2006
Ort: Thüringen
388 Beiträge
 
Delphi XE Starter
 
#12

AW: 2 Panels sollen sich das Form gleichmäßig teilen -> Anchors ?

  Alt 23. Apr 2013, 22:58
So, hier mal meine Lösung, wobei mich mal eure Meinung interessieren würde:
Ich nehme die Properties Tag und TabOrder der Panel zu Hilfe, um die Position auf dem Hauptpanel zu ermitteln. Somit werden die Panel horizontal und vertikal richtig aufgeteilt.

Delphi-Quellcode:
procedure TForm1.FormResize(Sender: TObject);
var w,l,d,tl,wd,i,j, hgt:integer;
    pnl: TPanel;
    maxTag, maxTabOrder:integer;
    aMaxTaborder:array of array of Integer;

begin
d:=24; //Abstand zwischen den Panels
l:=24; //Rand zum Panel5
maxTag:=-1;


for i := 0 to Panel5.ControlCount - 1 do
begin
  if Panel5.Controls[i] is TPanel then begin
    pnl := TPanel(Panel5.Controls[i]);
    if maxTag<pnl.Tag then Begin
      maxtag:=pnl.Tag;
      setlength(aMaxTabOrder,maxTag+1,2);
      aMaxTaborder[pnl.Tag,0]:=pnl.Tag;
      aMaxTaborder[pnl.Tag,1]:=1;
    end
    else aMaxTaborder[pnl.Tag,1]:=aMaxTaborder[pnl.Tag,1]+1;
  End;
end;


// Horizontale Ausrichtung *************************************
if maxTag>0 then Begin
  wd:=trunc(((panel5.Width)-(2*l)-((maxtag)*d))/(maxTag+1));

  for i := 0 to Panel5.ControlCount - 1 do
  begin
    if Panel5.Controls[i] is TPanel then begin
      pnl := TPanel(Panel5.Controls[i]);
      pnl.width := wd;
      pnl.Left:= l+((wd+d)*pnl.Tag);
      pnl.Top:=l;
      pnl.Height:=panel5.Height-2*l;
    end; //if
  End;//for
end; //if maxTag
//***************************************************************

// Vertikale Ausrichtung*****************************************
  maxTabOrder:=0;
  For j:=0 to High(aMaxTabOrder) do
    if aMaxTabOrder[j,1]>1 then Begin
      hgt:=trunc(((panel5.height)-(2*l)-((aMaxTabOrder[j,1]-1)*d))/((aMaxTabOrder[j,1]-1)+1));
      for i := 0 to Panel5.ControlCount - 1 do begin
        if ((Panel5.Controls[i] is TPanel) and (Panel5.Controls[i].Tag=aMaxTabOrder[j,0])) then begin
          pnl := TPanel(Panel5.Controls[i]);
          pnl.height := hgt;
          pnl.top:= l+((hgt+d)*pnl.TabOrder-1);
        end; //if
      End;//for
  End;//if

//***************************************************************


end;

Wie sieht es dabei mit der Ressourcennutzung aus, oder anders ausgedrückt: Ist das russisch?
Angehängte Grafiken
Dateityp: jpg Form.jpg (14,6 KB, 17x aufgerufen)
Angehängte Dateien
Dateityp: zip DynamischeForm.zip (544,2 KB, 8x aufgerufen)
MFG
Steffen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 23:44 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