Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Größen von Objekten in einer Form anpassen (https://www.delphipraxis.net/27777-groessen-von-objekten-einer-form-anpassen.html)

Alexander Roth 15. Aug 2004 16:45


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.

Die Muhkuh 15. Aug 2004 17:00

Re: Größen von Objekten in einer Form anpassen
 
Schau dir mal Delphi-Referenz durchsuchenAlign bzw. Delphi-Referenz durchsuchenAnchors an.

Alexander Roth 15. Aug 2004 17:33

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:

[Fehler] Unit1.pas(49): Inkompatible Typen: 'TAnchors' und 'TAnchorKind'
Mein Quelltext:
Delphi-Quellcode:
form1.Button1.Anchors := akLeft ;

ManuelM 15. Aug 2004 21:26

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];

Alexander Roth 16. Aug 2004 11:53

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.

phXql 16. Aug 2004 12:49

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?

Nikolas 16. Aug 2004 12:54

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.

Alexander Roth 16. Aug 2004 13:53

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:

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.

Nikolas 16. Aug 2004 21:07

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);

Nikolas 16. Aug 2004 22:52

Re: Größen von Objekten in einer Form anpassen
 
Jetzt noch schneller: (Hier kommt's her)

Delphi-Quellcode:
for i := 0 to Form.ControlCount-1 do
Changecomponent(Form.Controls[i],dw,dh);
Viel Spaß
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 22:30 Uhr.
Seite 1 von 3  1 23      

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