AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Komponente ignoriert Größeneinstellung

Ein Thema von BRobby · begonnen am 15. Apr 2024 · letzter Beitrag vom 16. Apr 2024
Antwort Antwort
BRobby

Registriert seit: 30. Dez 2004
Ort: Bottrop
26 Beiträge
 
Delphi 11 Alexandria
 
#1

Komponente ignoriert Größeneinstellung

  Alt 15. Apr 2024, 14:43
Hallo zusammen,

Unter Delphi 11.3, CE, versuche ich, eine visuelle Komponentwe zu entwickeln.
Beim Einfügen der Komponente in ein Formular im Designer hat die Komponente eine andere Größe als vorher festgelegt.
Das ist unabhängig von der Skalierung des Bildschirms. Ich arbeite normal mit 175% an einem 4k-Monitor.
Im beigefügten Beispiel (alles Unerhebliche habe ich weggelassen) sollte die Komponente 200 x 100 Pixel groß sein, es sind aber real 302 x 151 Pixel.
Ich habe divers experimentiert, konnte keine Änderung erzielen.
In der erweiterten Ursprungsversion war es so, dass manchmal beim ersten Einfügen die Größe stimmte, danach aber nicht mehr.

Ist das ein Bug oder weiß jemand, wie dieses Verhalten abzustellen ist?

Hier der Code dazu:

Delphi-Quellcode:
unit KomponentenTest;

interface

uses
  Windows, System.Classes, Vcl.Controls;

type
  tKomponente = class(tWinControl)
  public
     constructor Create(aOwner: TComponent); override;
     destructor Destroy;
  end;

procedure Register;

implementation

destructor tKomponente.Destroy;
begin
  inherited;
end;

constructor tKomponente.Create(aOwner: TComponent);
begin
  inherited Create(aOwner);
  Align:= alNone;
  AutoSize:=false;
  AlignWithMargins:=False;
  Width := 200;
  Height:= 100;
end;

procedure Register;
begin
  RegisterComponents('RW', [tKomponente]);
end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.425 Beiträge
 
Delphi 12 Athens
 
#2

AW: Komponente ignoriert Größeneinstellung

  Alt 16. Apr 2024, 14:55
Bei 175% Skalierung und einer IDE mit High-DPI Support wäre eine Größe von 350x175 zu erwarten. Ein entsprechender Test hier bei 100% Skalierung liefert dann auch 200x100 und bei 150% entsprechend 300x150, insofern ist der Code offenbar korrekt. Wenn es bei 175% (die dann aber auch in der IDE unterstützt werden müssen) auf 302x151 hinausläuft, muss das Problem an einer anderen Stelle liegen.

Wie sind denn die Einstellungen unter Tools - Optionen - Benutzeroberfläche - Formular-Designer - High DPI?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
BRobby

Registriert seit: 30. Dez 2004
Ort: Bottrop
26 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Komponente ignoriert Größeneinstellung

  Alt 16. Apr 2024, 15:21
Vielen Dank!!

Ich habe es nochmals getestet. Sie haben recht. Bei 175% Skalierung ist das Feld tatsächlich 350x175 Px groß.
Bei 100% stimmt es auch mit 200x100.
Bei meinen Tests gestern war das aber anders, warum weiß ich nicht.

In den Einstellungen steht VCL-Designer - High-DPI-Modus auf "Automatisch ..", Benutzerdefiniertes PPI-Design auf 145 (ausgegraut), Rastergöße skalieren ist nicht angekreuzt.

Damit scheint alles richtig zu sein.

Leider komme ich mit den Eigenschaften der Skalierung noch nicht ausreichend zurecht.
Wo kann man das möglichst präzise und nachvollziehbar mit Beispielen nachlesen?

Nochmals Danke für die rasche Anwort!!
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.425 Beiträge
 
Delphi 12 Athens
 
#4

AW: Komponente ignoriert Größeneinstellung

  Alt 16. Apr 2024, 15:23
Leider komme ich mit den Eigenschaften der Skalierung noch nicht ausreichend zurecht.
Das ist jetzt etwas vage. Was genau ist denn unklar?

BTW, bei Destroy fehlt ein override ;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
BRobby

Registriert seit: 30. Dez 2004
Ort: Bottrop
26 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Komponente ignoriert Größeneinstellung

  Alt 16. Apr 2024, 15:48
Unklar: Kann ich auch nicht präzisieren.

Es ist für mich verwirrend, wenn ich z.B. im Text für Code 200x100 Px eingebe und dann im Formular 350x175 angezeigt bekomme.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.797 Beiträge
 
Delphi 12 Athens
 
#6

AW: Komponente ignoriert Größeneinstellung

  Alt 16. Apr 2024, 16:02
Es ist für mich verwirrend, wenn ich z.B. im Text für Code 200x100 Px eingebe und dann im Formular 350x175 angezeigt bekomme.
Das ist eben das was die Unterstützung der Skalierung ausmacht. Die absoluten Pixelangaben werden...skaliert. Wenn Du das nicht haben willst, dann mußt Du die Skalierung abschalten. Dann würde halt Deine Anwendung auf Deinem 4K Monitor so klein aussehen, wie sie wirklich ist. Für meinen persönlichen geschmack, absolut richtig, denn ich will keine Pixel verschwenden. Aber die allermeisten Anwender betreiben Ihre Pixelmonster mit aktiver Skalierung. Darum lieber für diesen Fall vorsorgen, bzw. mit dem Ergebnis leben oder daran feilen, falls es unbefriedigend ist.
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:24 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