Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   VCL.Graphics.pas DefFontData initialisierung veraltet (https://www.delphipraxis.net/207763-vcl-graphics-pas-deffontdata-initialisierung-veraltet.html)

Rolf Frei 30. Apr 2021 13:37

VCL.Graphics.pas DefFontData initialisierung veraltet
 
Habe eben festgestellt das im Jahr 2021 der DefFontData Record in der Vcl.Graphics Unit immer noch mit "MS Sans Serif" intialisiert wird?! Hat das einen vernünftigen Grund oder wieso wird das nicht an den aktuellen Stand (Segoe UI) angepasst? Sollte man das mal melden?

himitsu 30. Apr 2021 13:46

AW: VCL.Graphics.pas DefFontData initialisierung veraltet
 
Ich glaub das wurde nach D7 einmal geändert.
Sei doch nicht so ungeduldig ... die sind nicht die Schnellsten.

Aber diese Vorgabe kann man doch auch selber ändern?

Tipp: in quality.embarcadero.com schauen, ob es schon was gibt, oder eine Anfrage stellen, dass das mal "aktualisiert" werden möge.



Wir (Arbeit) haben nahezu alle unsere Komonenten und die Forms abgeleitet, somit hatten wir keine Probleme da den Font mal anzupassen.
(weiß nur grad nicht was da aktuell ist, bei uns)

Rolf Frei 30. Apr 2021 13:50

AW: VCL.Graphics.pas DefFontData initialisierung veraltet
 
Ja, dass man das einfach in der DPR ändern kann ist mir schon klar, aber wieso ist das immer noch so drin? Hat das irgend welche Gründe, die ich gerade nicht sehen kann? Kann das eventuell mit dem Fontnamen "Default" irgendwelche Nebenwirkungen ergeben? Sollte man dafür vieleicht mal einen Report aufmachen?

Bekommt man eigentlich irgendwie den Namen des Default Font der aktuellen Windows Version?

Habe mal einen Report gemacht. Eine Suche nach DefFontData hatte kein Ergebnis geliefert.

Uwe Raabe 30. Apr 2021 15:45

AW: VCL.Graphics.pas DefFontData initialisierung veraltet
 
DefFontData wird in InitDefFontData initialisiert. Die direkte Initialisierung der globalen Variable in der Deklaration ist damit obsolet.

Rolf Frei 30. Apr 2021 16:35

AW: VCL.Graphics.pas DefFontData initialisierung veraltet
 
InitDefFontData macht das aber auch nicht richtig. Da ist dann Tahoma als Default drin zumindest noch in meinem 10.3. Ist das in 10.4.2 anders? Da wird in der Registry der Wert aus FontSubstitutes->MS Shell Dlg 2 gelesen und das ist meiner Meinung nach so nicht richtig. Da muss es doch eine andere Funktion geben mit der man den Defaultfont des Betriebsystems bekommt?! Tahoma wäre ja dann nur die Ersatzsschriftart.

Delphi-Quellcode:
var
  f: TFont;
begin
  f := TFont.Create;
  ShowMessage(f.Name);
  f.Free;
end;

Uwe Raabe 30. Apr 2021 22:25

AW: VCL.Graphics.pas DefFontData initialisierung veraltet
 
Was verstehst du denn unter dem Defaultfont des Betriebsystems?

Und wieso ist die Schrift unter MS Shell Dlg 2 eine Ersatzschriftart?

Rolf Frei 1. Mai 2021 17:42

AW: VCL.Graphics.pas DefFontData initialisierung veraltet
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1488351)
Was verstehst du denn unter dem Defaultfont des Betriebsystems?

Und wieso ist die Schrift unter MS Shell Dlg 2 eine Ersatzschriftart?

Sind das ernst gemeinte Fragen? :gruebel:

Die Defaultschriftart des OS ist das was eben als Standard von MS vorgegeben wird und das ist nun mal unter Windows 10 (glaub seit Vista) Segoe UI und nicht Tahoma.

FontSubstitutes = Ersatzschrift wenn die orignale Schrift nicht vorhanden ist.

Zitat:

Font substitution is the process of using one font in place of another when the intended font either is not available or does not contain glyphs for the required characters.

Uwe Raabe 1. Mai 2021 21:50

AW: VCL.Graphics.pas DefFontData initialisierung veraltet
 
MS Shell Dlg 2 ist eine logische Schriftart (es gibt keinen Font dieses Namens), die je nach Windows-Version unterschiedlich sein kann (deswegen FontSubstitutes). Damit wird unter anderem das Problem gelöst, dass auf älteren oder neueren Systemen die gewählte Schriftart eventuell nicht vorhanden ist bzw. durch die Spracheinstellung nicht verwendet werden kann. Insofern ist die Verwendung dieser Schriftart ein probates Mittel für eine weite Kompatibilität der Applikation bezüglich verschiedener Windows-Versionen und Windows-Sprachen.

Insbesondere schreibt Microsoft über diesen Font auch:
Zitat:

the shell font, also known as the system or default font,
Wenn Microsoft also eine andere Schriftwart als System- oder Default-Font haben will, dann brauchen sie das nur entsprechend in die Registry einzutragen. Haben sie aber nicht.

KodeZwerg 8. Mai 2021 12:48

AW: VCL.Graphics.pas DefFontData initialisierung veraltet
 
Ich habe mir gerade mal diesen Guideline durchgelesen und stimme Rolf zu das da was falsch ist, es sei denn Microsoft irrt sich.

Zitat:

Win32 or WinForms / Windows Vista or later = Use the appropriate Segoe UI font.
Zitat:

Extensible components or pre-Windows Vista = To target Windows XP and Windows 2000, use the 8 point MS Shell Dlg 2 pseudo font, which maps to Tahoma.
To target earlier versions of Windows, use 8 point MS Shell Dlg pseudo font, which maps to Tahoma on Windows 2000 and Windows XP, and to MS Sans Serif on Windows 95, Windows 98, Windows Millennium Edition, and Windows NT 4.0.

Uwe Raabe 8. Mai 2021 15:36

AW: VCL.Graphics.pas DefFontData initialisierung veraltet
 
Unter dem Aspekt dass Windows XP nicht mehr als Target-Plattform unterstützt wird, könnte man in der Tat über eine Anpassung des Default-Fonts nachdenken. Einen entsprechenden QP-Eintrag würde ich auch unterstützen.

Man muss dabei aber bedenken, dass sich eine Änderung dieser Grundeinstellung auf die Erweiterung bestehender Projekte auswirkt. Bestehende Forms behalten die Tahoma-Einstellung, während neue Forms dann mit Segoe UI erzeugt werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:29 Uhr.
Seite 1 von 3  1 23      

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