Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Komponenten sollen bleiben wo sie sind (https://www.delphipraxis.net/7504-komponenten-sollen-bleiben-wo-sie-sind.html)

Pseudemys Nelsoni 14. Aug 2003 02:00


Komponenten sollen bleiben wo sie sind
 
hi

also wie das ganze mit Anchors funzt weiss ich, das funzt hier aber nicht, denn ich möchte das die komponenten immer so bleiben wie sie waren, egal wie ich das form vergrössere, die komponenten sollen sich dabei nicht selbst vergrössern/kleinern

ich machs mal so wie ichs dachte, aus das:

http://www.angelfire.com/bug/delphi/1.jpg

soll das:

http://www.angelfire.com/bug/delphi/2.jpg

werden...



wenn ich es mit anchros mache bekomme ich aber nur sowas hin:

http://www.angelfire.com/bug/delphi/3.jpg

Luckie 14. Aug 2003 02:11

Re: Komponenten sollen bleiben wo sie sind
 
Na dann mach doch einfach nichts.

Pseudemys Nelsoni 14. Aug 2003 02:14

Re: Komponenten sollen bleiben wo sie sind
 
das problem ist das das fenster in der grösse veränderbar sein soll, die komponenten aber verhältnismässig an der gleichen position bleiben sollen

ich könnte ausrechnen wieviel % jede komponente left und top ist anhand der form width, heigth...aber geht es nicht auch einfacher?

Luckie 14. Aug 2003 02:18

Re: Komponenten sollen bleiben wo sie sind
 
Dann veranker sie nur links und oben? Die Buttons sollen doch immer oben links in der Ecke sein oder?

Pseudemys Nelsoni 14. Aug 2003 02:22

Re: Komponenten sollen bleiben wo sie sind
 
ne, siehe bild 2, die ganzen komponenten sollen immer in der mitte bleiben, als wären sie in der mitte verankert

Luckie 14. Aug 2003 02:24

Re: Komponenten sollen bleiben wo sie sind
 
Dann bleibt nur noch selber cCoden übrig und zwar im OnResize der Form.

Pseudemys Nelsoni 14. Aug 2003 02:26

Re: Komponenten sollen bleiben wo sie sind
 
danke, das mach ich dann ^^

Pseudemys Nelsoni 14. Aug 2003 02:40

Re: Komponenten sollen bleiben wo sie sind
 
hm, nochmal eine frage, wie kann ich beim OnResize die alte wie auch die neue Grösse des fenssters kriegen?ein OnBefore/afterResize etc gibts ja nicht oder?

Luckie 14. Aug 2003 02:42

Re: Komponenten sollen bleiben wo sie sind
 
Merk dir die alte und ermitele nachher die neue. Aber die Brauchst du doch gar nicht. Warte, ich schreibe dir mal eben was.Gib mir 2 Minuten.

Pseudemys Nelsoni 14. Aug 2003 02:49

Re: Komponenten sollen bleiben wo sie sind
 
cool danke :)

Luckie 14. Aug 2003 02:51

Re: Komponenten sollen bleiben wo sie sind
 
Delphi-Quellcode:
procedure TForm1.FormResize(Sender: TObject);
begin
  Button1.Left := Form1.Width div 2 - Button1.Width div 2;
  Button1.Top := Form1.Height div 2 - Button1.Height;
end;
Der Button bleibt immer in der Mitte.

Pseudemys Nelsoni 14. Aug 2003 02:53

Re: Komponenten sollen bleiben wo sie sind
 
genau so meinte ich das, vielen dank für die mühe :)

Luckie 14. Aug 2003 02:54

Re: Komponenten sollen bleiben wo sie sind
 
Keine Ursache, ich bin heute gut drauf.

Pseudemys Nelsoni 14. Aug 2003 02:56

Re: Komponenten sollen bleiben wo sie sind
 
hat hoffentlich nichts mit drogen zu tun :)

Luckie 14. Aug 2003 02:58

Re: Komponenten sollen bleiben wo sie sind
 
Delphi-Quellcode:
Button1.Left := Form1.ClientWidth div 2 - Button1.Width div 2;
Button1.Top := Form1.ClientHeight div 2 - Button1.Height div 2;
Mach es so, ist besser. Bei Form1.Height ist noch die Titelzeile mit dabei.

Pseudemys Nelsoni 14. Aug 2003 03:00

Re: Komponenten sollen bleiben wo sie sind
 
ah, das ist super, hat mich immerschon gewundert das die titelleiste mitgezählt wurde, naja form1.heigh schliesst die titelleiste eben mit ein, das mit clientheigh etc hab ich noch nie benutzt, gut zu wissen 8)

dankö^^

Pseudemys Nelsoni 16. Aug 2003 17:28

Re: Komponenten sollen bleiben wo sie sind
 
hm aber mit mehren kompos klappt das nicht da sie ja dann alle in er mitte bleiben würden(also alle übereinander)....ich möchte das verhältnis aber nur beibehalten...

ich hatte das mit einer prozdur versucht

Delphi-Quellcode:
procedure NewCompPos(comp: TWinControl);
var
  percL, percT: integer;
begin
  with comp as TWinControl do
  begin
    percL := FormW DIV comp.Left;
    percT := FormH DIV comp.Top;
    comp.Left := Form1.Width DIV percL;
    comp.Top := Form1.Height DIV percT;
  end;
end;
FormW und FormH sind 2 globale veriablen die die alte form1 grösse beinhalten.... aufrufen tu ichs dann halt mit

Delphi-Quellcode:
procedure TForm1.FormResize(Sender: TObject);
begin
  NewCompPos(Panel1);
end;

nur irgendwie funktionietr das ganze noch nicht so, wenn ich die fenster grösse ändere ist das panel in der bewegung viel lahmer als das fenster selbst, wieso das?


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:14 Uhr.

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