AGB  ·  Datenschutz  ·  Impressum  







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

Fehler TPageControl und TPanel!

Ein Thema von sko1 · begonnen am 30. Nov 2017 · letzter Beitrag vom 1. Dez 2017
Antwort Antwort
Seite 1 von 2  1 2      
sko1

Registriert seit: 27. Jan 2017
588 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Fehler TPageControl und TPanel!

  Alt 30. Nov 2017, 06:40
Hallo,

ich habe hier einen blöden Fehler:
Auf einem TPageControl liegt ein TPanel mit Anchors [akLeft,akTop,akRight,akBottom].

Dieses wird nur bei einer Bildschirmanzeige in Windows 10 von 100% korrekt dargestellt, bei 125 oder 150% ist es viel zu groß, größer als das Pagecontrol!

Diese falsche Darstellung ändert sich auch nicht durch Ändern der Bildschirmeinstellung, erst nach Programmneustart bei 100% ist das Panel in der korrekten Größe!

Kann das jemand nachstellen (Berlin 10.1 Update 2) und viel wichtiger, wie bekomme ich das korrigiert?

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.354 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Fehler TPageControl und TPanel!

  Alt 30. Nov 2017, 07:06
Ist das Problem in der 10er immer noch drin? Unfassbar.
Du musst dich um die Skalierung selbst kümmern.

Setze die Property "Scaled" der Form auf False.
Danach berechnest du den Skalierungsfaktor und machst selbst ein ScaleBy im OnCreate der Form.

Für den Skalierungsfaktor habe ich mir eine kleine Funktion geschrieben:
Delphi-Quellcode:
Function GetScaleFactor : Integer;
var
  Reg : TRegistry;
begin
  Reg := TRegistry.Create(KEY_READ);
  try
    if Reg.OpenKeyReadOnly('\Control Panel\Desktop') then
    begin
      if Reg.ValueExists('LogPixels') then
        Result := Reg.ReadInteger('LogPixels')
      else
        Result := 96;
    end
    else
    begin
      Result := 96;
    end;
    Reg.CloseKey;
    Result := Round(Result * 100 / 96);
  finally
    Reg.Free;
  end;
end;
Im OnCreate steht dann:
  ScaleBy(GetScaleFactor, 100); Das hat bei mir bisher immer gut funktioniert.
Peter
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
588 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: Fehler TPageControl und TPanel!

  Alt 30. Nov 2017, 10:30
Danke, aber das kann doch alles gar nicht wahr sein, oder?

Auf dem Panel sitzt ein anderes Control (Align = alClient) und icvh habe einen halben Tag gesucht warum das keine Scrollbars anzeigt (warum auch wenn sein ParentPanel riesig ist...)!

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.354 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Fehler TPageControl und TPanel!

  Alt 30. Nov 2017, 12:54
Danke, aber das kann doch alles gar nicht wahr sein, oder?
Leider doch. Ich arbeite schon seit Jahren mit dieser Lösung. Aktuell noch mit XE2. XE10 kommt in den nächsten Wochen. Muss ich das Problem also schon nicht mehr überprüfen.
Peter
  Mit Zitat antworten Zitat
LTE5

Registriert seit: 13. Nov 2017
355 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#5

AW: Fehler TPageControl und TPanel!

  Alt 30. Nov 2017, 13:12
Zitat:
Leider doch. Ich arbeite schon seit Jahren mit dieser Lösung.
Ich ebenfalls. Ich berechne die Monitor-DPI im FormCreate jedes Formulars, setze ScaleBy in derselben Funktion und ändere danach händisch ein paar Controls bei denen ich weiß, dass die unter DPI > 100% nicht korrekt dargestellt werden.
Scaled ist selbstverständlich auf False.
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
588 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: Fehler TPageControl und TPanel!

  Alt 1. Dez 2017, 06:50
Muss ich daraus schlussfolgern, dass es weitere Controls gibt die solche Fehler haben?

Gibt es irgendwo eine Liste dieser betroffenen Kandidaten?

Ich verwende gern Alignment, Anchors, Margins um Elemente bei Formgrößenänderungen entsprechend anzupassen, muss man dafür jetzt den gesamten Code selbst schreiben?

Zur Entwurfszeit sieht man ja nicht dass die Skalierung nicht stimmt, da wird alles ordentlich dargestellt, wenn man die Form vergrößert / verkleinert, die Fehldarstellung kommt dann ja erst zur Laufzeit!

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.354 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Fehler TPageControl und TPanel!

  Alt 1. Dez 2017, 08:29
Ja, auch andere Controls haben da Probleme.
TButton und TEdit sind solche Kandidaten, wenn ich mich richtig erinnere.

Aber dafür musst du keinen Extra-Code schreiben. Mit der oben beschriebenen Lösung wird das berücksichtigt.
Peter
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Fehler TPageControl und TPanel!

  Alt 1. Dez 2017, 10:15
@Jasocul: Deine Lösung scheint aber nur die Desktop-Auflösung zu berücksichtigen. LTE5 ist da korrekter - es muss natürlich spezifisch für den Monitor, auf dem die Form liegt, umgerechnet werden.
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.354 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Fehler TPageControl und TPanel!

  Alt 1. Dez 2017, 10:26
Stimmt.
Peter
  Mit Zitat antworten Zitat
LTE5

Registriert seit: 13. Nov 2017
355 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#10

AW: Fehler TPageControl und TPanel!

  Alt 1. Dez 2017, 11:35
Zitat:
ScaleBy(GetScaleFactor, 100);
Warum genau 100?

100% od er 100 DPI?

Ich habe deine Funktion eben an einem existieren Projekt mit 150% Skalierung Windows 7 getestet.
Bei Übergabe von 100 für D wird vieles falsch dargestellt. Übergebe ich 96, die ursprüngliche Größe unter der ich entwickle, ist alles korrekt.
Ich denke hier sollte man also eher die Original-DPI des Entwickler-Rechners angeben statt 100.

Ich nutze da pro Formular eher
uFormX.ScaleBy(Screen.PixelsPerInch, "Original-DPI"); Und dann noch Anpassungen pro Control. Aufwändige Anwendungen sehen unter DPI >100 nämlich sonst schäbig aus.

Geändert von LTE5 ( 1. Dez 2017 um 11:55 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 00:01 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