Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Frage zu Oberflächendesign: Ausrichtung (https://www.delphipraxis.net/15436-frage-zu-oberflaechendesign-ausrichtung.html)

Chewie 28. Jan 2004 17:54


Frage zu Oberflächendesign: Ausrichtung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich versuche gerade, eine Oberfläche so zu gestalten, dass sie auch beim Resizen die gleichen Proportionen beibehält. Konkret heißt das, ich habe zunächst drei Panels, die folgendermaßen angeordnet sind (s. Anhang). Wenn der Benutzer die Größe des Fenster ändert, soll die relative Größe und Position der Panels beibehalten werden.
Muss ich dazu selbst auf das Verändern der Größe reagieren oder ist es möglich, den gewünschten Effekt durch die richtigen Einstellungen an den Docking-, Align-, Anchor-Properties etc. zu erzielen?

S - tefano 28. Jan 2004 18:45

Re: Frage zu Oberflächendesign: Ausrichtung
 
Hi,

da solltest du mit Aligns arbeiten.
Das untere Panel auf Bottom, das Links-Oben auf Left und das dritte auf Client.
Das bewirkt, dass das linke und das untere Panel immer da bleiben wo sie sind, und bei einer Formvergrößerung automatisch angepasst werden.
Das dritte Panel belegt dann immer den Platz der dabei übrig bleibt, wird also auch angepasst.
Die Positionen bleiben soweit gleich, weil beim Resizen nur die Panels beeinflusst werden die mit der unteren und rechten Seite der Form in Kontakt sind.
Mit den Aligns (Properties der Panels im OI) würd ich einfach mal rumspielen. Den Trick dahinter hat man recht schnell raus.

Bis dann,

S - tefano

Chewie 28. Jan 2004 18:54

Re: Frage zu Oberflächendesign: Ausrichtung
 
So ähnlich hatte ich das schon vorher, aber das ist nicht das, was ich will. Die Panels links-oben und unten behalten ihre absolute Größe, nur das rechte Panel passt seine Größe an. Ich will, aber dass alle Panels ihre Größe anpassen.

Also ein Beispiel:

Das linke Panel bekommt beim Designen die Breite 300, was 50% der Formbreite ausmacht.
Das untere bekommt die Höhe 50, was 10% der Höhe ausmacht. Das Formular hat also die Ausmaße 600x500.

Wenn nun die Größe auf 300x250 verändert wird, soll das linke Panel 150 breit sein und das untere 25 hoch.

Ist sowas möglich, ohne eigenen Code zu schreiben?

S - tefano 28. Jan 2004 19:09

Re: Frage zu Oberflächendesign: Ausrichtung
 
Was meinst du mit "so ähnlich"?
Wenn du es mit den Aligns machst kann es eigentlich garnicht sein dass das untere Panel seine Größe so behält wie es ist. Es muss dann doch breiter werden wenn du das Fenster bspw nach Rechts vergrößerst.
Aber sag erstmal wie genau du es vorher gemacht hast.

Bis dann,

S - tefano

Chewie 28. Jan 2004 19:13

Re: Frage zu Oberflächendesign: Ausrichtung
 
Na ja, vorher hatte ich align vom rechten Panel auf alRight stehen - dann entstand eine Lücke.

Die Breite des unteren Panel passt sich ja an, aber nicht die Höhe! Die bleibt auf dem gleichen absoluten Pixelwert.

S - tefano 28. Jan 2004 19:18

Re: Frage zu Oberflächendesign: Ausrichtung
 
Dann würde ich über das Bottompanel einen Splitter legen, der dann auch das Bottom-Align hat.
Wenn du den auf Invisible schaltest oder die Breite 0 setzt, dann ist der nicht mehr da und bleibt wo er ist. Dadurch bleibt das Top des Bottompanels wo es ist und bei einer Höhenveränderung der Form passt sich auch die Height des Panels an.
Wenn ich mich nicht irre jedenfalls.

Bis dann,

S - tefano

gothic_mike 29. Jan 2004 04:59

Re: Frage zu Oberflächendesign: Ausrichtung
 
Moin,

Zitat:

Zitat von Chewie
Ich versuche gerade, eine Oberfläche so zu gestalten, dass sie auch beim Resizen die gleichen Proportionen beibehält. Konkret heißt das, ich habe zunächst drei Panels, die folgendermaßen angeordnet sind (s. Anhang). Wenn der Benutzer die Größe des Fenster ändert, soll die relative Größe und Position der Panels beibehalten werden.
Muss ich dazu selbst auf das Verändern der Größe reagieren oder ist es möglich, den gewünschten Effekt durch die richtigen Einstellungen an den Docking-, Align-, Anchor-Properties etc. zu erzielen?

sowas hatte ich neulich auch mal, ich habe die größen für die panels jedesmal neu ausgerechnet.
Mal sehen, ob ich das jetzt so auf die schnelle hinbekomme:
panel1.align:=alBottom;
panel2.align:=alLeft;
panel3.align:=alRight;

Delphi-Quellcode:
procedure TForm1.FormCanResize(Sender: TObject; var NewWidth, NewHeight: Integer; var Resize: Boolean);
var
  faktor: real;
begin
  faktor := Height / NewHeight;

  panel2.Height := round(panel2.Height / faktor);
  panel3.Height := panel2.Height;
  panel1.Height := round(panel1.Height / faktor);
 
  Resize := True;
end;
hab's leider nicht getestet, da ich grad kein delphi hier hab, aber müsste so klappen...

Chewie 29. Jan 2004 14:59

Re: Frage zu Oberflächendesign: Ausrichtung
 
@S-tefano:
Leider behält das untere Panel seine Höhe bei, der Splitter ändert also hier nix.

@gothic-mike:
Dass es mit einer Ereignisbehandlungsroutine für das Resize-Event geht, war mir klar, aber ich wollte es ja gerade ohne eigenen Code, nur mit Einstellungen im OI, machen.

Aber es hat den Eindruck, dass das nicht möglich ist. Schade.

Ich lass die Frage aber noch als "nicht beantwortet" stehen, vielleicht kommt ja noch einer, der eine Lösung kennt.

shareholder 29. Jan 2004 17:40

Re: Frage zu Oberflächendesign: Ausrichtung
 
Zitat:

Zitat von Chewie
Muss ich dazu selbst auf das Verändern der Größe reagieren oder ist es möglich, den gewünschten Effekt durch die richtigen Einstellungen an den Docking-, Align-, Anchor-Properties etc. zu erzielen?

anchors du sagst es ;)

EDIT:

Zitat:

gleichen Proportionen
ups, sorry. hatte das überlesen !!! :(

Chewie 29. Jan 2004 17:43

Re: Frage zu Oberflächendesign: Ausrichtung
 
Zitat:

Zitat von shareholder
anchors du sagst es ;)

Könntest du mir auch sagen, wie ich die Anchors setzen muss? :wink: Bei meinem Versuch hat das nicht ganz so geklappt, wie ich mir das vorgestellt hab. :?


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:00 Uhr.
Seite 1 von 2  1 2      

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