Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Problem bei Größenanpassung (https://www.delphipraxis.net/158089-problem-bei-groessenanpassung.html)

Fussel9 5. Feb 2011 00:09

Delphi-Version: 2006

Problem bei Größenanpassung
 
Liste der Anhänge anzeigen (Anzahl: 5)
Hallo, ich wollte das sich Komponenten meines Programms proportional zur Bildschirmgröße verhalten...

dazu habe ich folgenden Quelltext:=
Delphi-Quellcode:
procedure TFormMain.FormPaint(Sender: TObject);
var temp: Integer;
begin
  ShowMessage('');
  PConsole1.Width:=round((self.Width / 800) * PConsole1.Width);
  PConsole1.Height:=round((self.Height / 600) * PConsole1.Height);
  PConsole2.Width:=round((self.Width / 800) * PConsole2.Width);
  PConsole2.Height:=round((self.Height / 600) * PConsole2.Height);
  temp:=PConsole1.Left;
  PConsole1.Left := round((self.Width / 2)-(PConsole1.Width / 2));
  PConsole2.Left:=PConsole2.Left+(PConsole1.Left-temp);
end;
durch das Show Message habe ich mehr oder minder zufällig folgendes entdeckt: (siehe Anhang)
die Methode wird 4 Mal aufgerufen und jedesmal wird das pannel größer... bis es den ganzen Bereich füllt...

Woran liegt das?
Hab ich irgendwo nen Fehler... sieht den jemand? :-D

Bummi 5. Feb 2011 07:18

AW: Problem bei Größenanpassung
 
Du beziehst Dich bei der Größenänderung immer auf die Größe Deines Controls, nimm einfach eine Faktor und die Größe des Parentcontrols (Forms)....

jfheins 5. Feb 2011 08:12

AW: Problem bei Größenanpassung
 
Delphi-Quellcode:
 PConsole1.Width:=round((self.Width / 800) * PConsole1.Width);
Du setzt die neue Größe direkt proportional zur alten. Das kann doch nichts werden.

Kennst du die Eigenschaft Delphi-Referenz durchsuchenAnchors?

Fussel9 5. Feb 2011 22:03

AW: Problem bei Größenanpassung
 
Zitat:

Zitat von jfheins (Beitrag 1079652)
Kennst du die Eigenschaft Delphi-Referenz durchsuchenAnchors?

Zitat:

Anchors is enforced only when the parent is resized. Thus, for example, if a control is anchored to opposite edges of a form at design time and the form is created in a maximized state, the control is not stretched because the form is not resized after the control is created.
So wie ich das verstehe, würde bei einem solchen Anchor das Pannel nicht mit vergrößert, wenn die Anwendung Maximiert startet, und das tut sie, da sie eine Fullscreenanwendung ist...

Ps: Ich versteh außerdem nicht wieso ich das nicht so machen kann... die Form ist ursprünglich 800 Pixel lang und 600 hoch je nach neuer Auflösung wird sie nun beispielsweise 1366 lang und 768 hoch, d.h. nach der obigen Rechnung ergibt sich für die Länge ein Faktor von 1,7075 und für die Höhe einer von 1,25. Das Pannel st zu Begin 513 Pixel hoch und 276 Lang 513*1,25 =(gerundet)641 276*1,7075=(gerundet)471 ....
das wären die angepassten Maße für das Pannel---


PPS:
Ich hab das mit dem Faktor versucht und für jede seite den Faktor berechnet :
Delphi-Quellcode:
  PConsole1.Width:=round(self.Width*0.31125);
  PConsole1.Height:=round(self.Height*0.855);
  PConsole2.Width:=round(self.Width*0.97125);
  PConsole2.Width:=round(self.Height* 0.36333);
das führt dazu das die procedure immer wieder in einer endloßschleife ausgelößt wird...

sx2008 6. Feb 2011 12:34

AW: Problem bei Größenanpassung
 
Delphi-Quellcode:
procedure TFormMain.FormPaint(Sender: TObject);
ist natürlich der völlig falsche Ort um Code für die Grössenanpassung unterzubringen.
Siehe Onlinehilfe zu dem Event OnPaint.

Fussel9 7. Feb 2011 09:31

AW: Problem bei Größenanpassung
 
gut das du's sagst, aber wo wäres es denn Besser???

DeddyH 7. Feb 2011 09:34

AW: Problem bei Größenanpassung
 
Wie wäre es OnResize?

Fussel9 7. Feb 2011 21:14

AW: Problem bei Größenanpassung
 
Das klappt auch nicht, hat keinen effekt

Fussel9 8. Feb 2011 13:21

AW: Problem bei Größenanpassung
 
hat noch jemand nen vorschlag?

DeddyH 8. Feb 2011 13:33

AW: Problem bei Größenanpassung
 
Ja: zeig mal Deinen aktuellen Code :glaskugel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:28 Uhr.
Seite 1 von 2  1 2      

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