![]() |
Frame an Hauptformular automatisch anpassen
Hi Leute
Ich stehe vor einem Design Problem. Ich hab verschiedene Frames die ich in das Hauptformular einbinde je nachdem was der Benutzer halt gerade machen möchte. So nun ist der Frame im Designer ca. 300x300 Pixel groß. (manche Frames haben andere Größen) Und wenn ich jetzt den Frame ins Hauptformular lade das sagen wir mal 600x600 Pixel groß (kann sich ja jeder selber einstellen) dann sind die Komponenten alle links oben im Eck und der rest ist leer. Des schaut verdamt blöd aus. So nun hab ich mir gedacht wär es ganz fein wenn sich alle Kompos automatisch anpassen. So als würde ich rein zommen. in diesem fall müsste alles doppelt so groß werden aber auch die positionen müssten sich verändern das alles gleich angeordnet bleibt nur halt größer. Habt ihr eine Idee für mich wie ich des flexibel lösen kann ... also ohne hardcodete Komponentennamen und so? //edit: Fehler ausgebessert |
Re: Frame an Hauptformular automatisch anpassen
Es gibt Anchors und Constraints.
Mit den Anchors kannst Du eine Komponenten an den Seiten des Parents festmachen - will heissen: Der Abstand bleibt immer der gleiche. Mit den Constraints kannst Du minimal- und Maximalgrößen festlegen. z.B. die 300x300 Pixel des Frames als Mindestgröße. Spiel einfach mal damit rum - funktioniert auch alles im Designer. |
Re: Frame an Hauptformular automatisch anpassen
Zusätzlich gibt es auch noch TSplitter (Palettenseite "Zusätzlich").
Damit kann der Benutzer selbst entscheiden (in vorgegebenen Grenzen) wieviel Platz er bestimmten Controls einräumt. Damit TSplitter funktioniert, muss man verstanden haben, wie man das Property Align einsetzt. |
Re: Frame an Hauptformular automatisch anpassen
Zitat:
also ich hab mit den Anchors rumgespielt aber dadurch bekomme ich keine gute ergebnisse: wenn ich z.b. [akLeft,akTop,akRight,akBottom] einstelle dann ziehen sich zwar alle buttons auf aber sie überlagern sich oder bei [akRight,akBottom] bleibt alles an der rechten unteren ecke hängen außerdem funktioniert des nur im desginer aber nicht im prog. (Das Frame ist auf einem PageControl des auf der Hauptform liegt) Zitat:
|
Re: Frame an Hauptformular automatisch anpassen
Ich kenne Programmierer, die seit vielen Jahren auch kommerzielle Software mit Delphi entwickeln und bis heute nicht den Sinn und die Macht von Anchors und Align verstanden haben. Seit D2007 nutze ich dank der "Erscheinung" von Margins und Padding fast nur noch Align, dies ist besonders bei Frames "sicherer" als Anchors - hab damit schon leidige Erfahrungen gemacht. :-D
Was ich sagen will: Sicher geht das, was du willst damit, aber du musst schon verstehen wie es alles abläuft und ggf. auch das ein oder andere Panel als Container nutzen. :o Du kannst natürlich auch wirklich mit "ScaleBy" skalieren, aber ich würde sagen, dass das erst mal richtig schei** aussieht und nicht gerade dafür gedacht ist :roll: |
Re: Frame an Hauptformular automatisch anpassen
Zitat:
Phoenix hat dir 2 Möglichkeiten genannt, wie du das Verhalten von Controls beeinflussen kannst. Das Wichtigste Property ist aber Align, denn damit kann man grössenveränderliche Controls sinnvoll an den Container (Panel, Form, Frame, ...) anpassen. Es gibt 2 Arten von Controls: 1.) grössenveränderliche (TPanel, TMemo, TListbox, TPaintBox, TCheckListBox, ...) 2.) nicht grössenveränderliche (TLabel, TEdit, TComboBox, TCheckbox, TButton, ...) Das soll nicht heisen, dass ein TEdit nicht vergrössert werden kann, aber es macht keinen Sinn. Wenn man ein TMemo auf Fenstergrösse bringt, dann macht das sehr wohl einen Sinn. Also jetzt stellt sich die Frage: verwendest du hauptsächlich Controls der Kategorie 1.) oder 2.)? |
Re: Frame an Hauptformular automatisch anpassen
Typ2:
Das ist ja gerade das Problem da ich somit nicht gut mit Align arbeiten kann. |
Re: Frame an Hauptformular automatisch anpassen
Zitat:
Angenommen links steht immer ein Label und jeweils rechts davon ein TEdit, TcomboBox oder TCheckBox. z.B. für irgendwelche Programmoptionen. Wenn man den Zeilenabstand verdoppelt sieht das IMHO auch nicht (viel) besser aus. Wenn in dem Frame die Information über die Anzahl der Zeilen und eine Zuordnung von Control zur Zeilennr vorhanden wäre, könnte man natürlich die Controls automatisch über die gesamte Fläche (vertikal) verteilen. Wenn deine Controls aber wirklich diese Struktur haben, dann sähe doch eine Art Laufzeit Objektinspektor viel besser aus. |
Re: Frame an Hauptformular automatisch anpassen
Zitat:
und da wäre es meiner ansicht besser wenn sie verteiltel und z.b. die buttons größer werden. vllt. auch die edit felder dann müsste man nur die schriftgröße anpassen |
Re: Frame an Hauptformular automatisch anpassen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:31 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