![]() |
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? |
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 |
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? |
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 |
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. |
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 |
Re: Frage zu Oberflächendesign: Ausrichtung
Moin,
Zitat:
Mal sehen, ob ich das jetzt so auf die schnelle hinbekomme: panel1.align:=alBottom; panel2.align:=alLeft; panel3.align:=alRight;
Delphi-Quellcode:
hab's leider nicht getestet, da ich grad kein delphi hier hab, aber müsste so klappen...
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; |
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. |
Re: Frage zu Oberflächendesign: Ausrichtung
Zitat:
EDIT: Zitat:
|
Re: Frage zu Oberflächendesign: Ausrichtung
Zitat:
|
Re: Frage zu Oberflächendesign: Ausrichtung
sorry, hatte das mit den proportionen ganz übersehen !!!
habe meinen beitrag geändert, :pale: |
Re: Frage zu Oberflächendesign: Ausrichtung
Moin,
Zitat:
|
Re: Frage zu Oberflächendesign: Ausrichtung
Zitat:
2. Wenn ich Code schreibe, muss ich für jedes Kontrollelement den Code anpassen, sofern ich Kontrollelemente habe, die von der automatischen Proportionierung nicht betroffen sein sollen, da ich dann keine Schleife benutzen kann. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 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