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
sko1

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

Fehler TPageControl und TPanel!

  Alt 30. Nov 2017, 05: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.368 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Fehler TPageControl und TPanel!

  Alt 30. Nov 2017, 06: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
601 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: Fehler TPageControl und TPanel!

  Alt 30. Nov 2017, 09: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.368 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Fehler TPageControl und TPanel!

  Alt 30. Nov 2017, 11: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, 12: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
601 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: Fehler TPageControl und TPanel!

  Alt 1. Dez 2017, 05: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
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 20:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz