![]() |
Größen von Objekten in einer Form anpassen
Hi Leute,
wisst ihr wie man am besten die Größen von allen Objekten in einer Form wenn dass Fenster vergrößert / verkleinert wird, anpasst, sodass alles ein bisschen größer wird wenn man das Fenster vergrößert und umgekehrt. Ich habe schon den Weg ausprobiert indem ich jedes einzelnes Objekt die Höhe und Breite und Position bestimme. Ist nur ein bisschen mega mühsam. Danke im Vorraus. |
Re: Größen von Objekten in einer Form anpassen
|
Re: Größen von Objekten in einer Form anpassen
Align ist ja so was nur am Rand und dann so schrecklich über die ganze Seite.
Anchors scheint ja das richtige zu sein, aber irgendwie krieg ich es nicht hin dass er die richtigen typen da hat: Zitat:
Delphi-Quellcode:
form1.Button1.Anchors := akLeft ;
|
Re: Größen von Objekten in einer Form anpassen
Hi!
Hättest du einen Blick in die OH geworfen hättest du bemerkt, dass Anchors ein Set of ist. Zudem kann man das gleich am OI sehen, wenn man die Eigenschaft aufklappt. Es muss also heißen:
Delphi-Quellcode:
Anchors := [akLeft];
|
Re: Größen von Objekten in einer Form anpassen
Also,
Anchors verankert die Position am Bildschirm und nicht an dem Fenster wie ich es mir wünschen würde. Vielleicht habe ich auch meine Frage falsch gestellt: Ich würde einige Felder Listen usw automatisch der größe des Fensters anpassen. |
Re: Größen von Objekten in einer Form anpassen
bei mir geht das mit anchors. ich hab ne form gemacht, ne listbox drauf gesetzt und dann alle anchors der listbox auf true gesetzt. und nun, wenn ich die form resize, dann resizet auch die listbox mit. das is doch das, was du willst, oder?
|
Re: Größen von Objekten in einer Form anpassen
Ich versteh's so, dass er alle Komponenten proportional zum Form verändern will, dass also wenn Form.width:=2*Form.width gemacht wird, dass dann alle Komponenten doppelt so breit werden.
Also könntest du width und heigth des Forms speichern und dann wenn sich diese Werte ändern, den Quotienten aus width(alt) und width(neu) berechnen und dann für jede Komponente width und left mit dieser Zahl multiplizieren. (analog dazu Form.height und Top sowie heigth anpassen). Ich hab's jetzt nicht ausprobiert, sollte aber so zu machen sein. |
Re: Größen von Objekten in einer Form anpassen
Irgendwie mach er das aber nicht proportional.
Er verkleinert/vergrößert zwar die Listen etc., aber zb: In der Normalen Ansicht grenzen 2 Listboxesn aneinader. Mach man nun bei beiden alle Anchors = true, führt dann aus, und zieht das Fenster seitlich auseinander, sind nicht beide Lisen etwas breiter geworden, dass sie immer noch aneinandergrenzen sondern stehen so eklich übereinander. Ja genau, Toxman, nur leider hab ich die Idee schon gehabt (warvielleicht nicht ganz so offensichtlich, doch:) Zitat:
|
Re: Größen von Objekten in einer Form anpassen
Also ich hab hier mal kurz eine procedure geschrieben dir dir nützlich sein könnte. Nur muss die für jede Komponente aufgerufen werden, aber wahrscheinlich gibt es eine Möglichkeit eine TControl ist die Basisklasse für alle Komponenten, die zur Laufzeit sichtbar sind. Art Findcomponent so zu gestalten, dass alle TControl-Komponenten aufgerufen werden.
Delphi-Quellcode:
procedure Tform.Changecomponent(comp: TControl; dw1,dh1: real);
begin comp.left:=round(dw1*comp.Left); comp.width:=round(dw1*comp.Width); comp.top:=round(dh1*comp.Top); comp.height:=round(dh1*comp.Height); end; // zu den Variablen: //im oncreate oder schon fest: w:=form.Width; h:=form.Height; // Dann bei einem Veränderung des Forms: dw:=form.Width/w; dh:=form.Height/h; // und aufrufen: Changecomponent(Panel1,dw,dh); |
Re: Größen von Objekten in einer Form anpassen
Jetzt noch schneller: (
![]()
Delphi-Quellcode:
Viel Spaß
for i := 0 to Form.ControlCount-1 do
Changecomponent(Form.Controls[i],dw,dh); Tox @ Codelib-Manager: Meint ihr, dass Ganze sollte in die Codelib? Ist eigentlich recht nützlich :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:08 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 by Thomas Breitkreuz