Delphi-PRAXiS
Seite 2 von 3     12 3      

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)

KodeZwerg 8. Mai 2021 16:08

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

Zitat von Uwe Raabe (Beitrag 1488893)
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.

Zu Deinen Bedenken:
Ich wäre ja für einen Boolean oder switch, Legacy = linkt auf Tahoma, Modern = linkt auf Segoe UI
//edit: Also als Projekt-Option meine ich das, nicht als "Form.Property"

Zum QP:
Einen QP, so etwas habe ich noch nie gemacht und auch keine Erfahrung damit (ich mache da bestimmt alles falsch), meine Stimme würde ich definitiv auch geben wenn es jemand hier postet.



Danke auf jeden Fall für Deine mir wichtige Meinung! :thumb:

himitsu 8. Mai 2021 16:57

AW: VCL.Graphics.pas DefFontData initialisierung veraltet
 
So schwer ist es nicht.
http://quality.embarcadero.com

Das "Legacy " lässt sich problemlos wie bei der OnCreate-Reihenfolge umsetzen. (Property OldCreateOrder)
Wenn das Property in einer bestehenden DFM noch nicht drin ist, dann wird es auf True gesetzt
und bei neuen Forms auf False. (oder andersrum)
Hier würde ich aber besser einen Enum anstatt eines Boolean verwenden, falls/wenn in Zukunft mal wieder der Fort geändert wird.

Ja, es einfach so unverhoft/unbemerkt zu ändern, kann paar Probleme bereiten.
Vor allem wenn der Font größer/länger würde, als der Alte, und dann Texte abgeschnitten werden oder überlappen.

KodeZwerg 8. Mai 2021 17:25

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

Zitat von himitsu (Beitrag 1488899)
Ja, es einfach so unverhoft/unbemerkt zu ändern, kann paar Probleme bereiten.
Vor allem wenn der Font größer/länger würde, als der Alte, und dann Texte abgeschnitten werden oder überlappen.

Deswegen meinte ich es ja eher als Projekt-Option, nicht als Form.Property (oder Application.Property)
Somit wäre gewährleistet das bestehende Projekte nicht beschädigt werden selbst wenn man darin neue Forms erstellt.
Das war zumindest mein Grundgedanke zu Uwes berechtigten bedenken.
Ob sich dann die Projekt-Option auch als eine Form/Application Property ableitet, da bin ich überfragt, aber sicherlich denkbar möglich. (Vielleicht als Read-Only, so das man es eh nur in den Optionen ändern kann)
Es müsste ja die zugrundeliegende RTL angepasst werden, wenn ich dann noch an diese ganzen Style-Hooks denke wird mir schlecht.

Wenn ein neues Projekt entworfen wird sollte es halt aktiviert sein, bei alten eben nicht. (...aber halt nachrüstbar was dann natürlich zu mühsamen durchtesten jeder Form führen könnte wenn die IDE da keine automatische Anpassung für einen vornimmt...)


Ich bin jedenfalls voller Hoffnung das es realisierbar ist.


Auch würde mich eine Option freuen die das Windows Theme (dark/light) für moderne Applikationen einführt.

himitsu 8. Mai 2021 17:35

AW: VCL.Graphics.pas DefFontData initialisierung veraltet
 
Das ist halt eine Überlegung.

In der DFM gespeichert, kannst jeder Form in Ruhe nacheinander umstellen und prüfen/anpassen.

Global gespeichert, stellst du es um und mußt dann alle Forms zusammen prüfen/anpassen.
Wenn sich aber alle Forms selbst anpassen, weil sie z.B. bereits für MultiLanguage vorgesehn sind, so sich Textlängen auch ändern können, dann ist eine "globale" Einstellung auch ganz nett.
(OK, wir haben unsere Forms/Komponenten abgeleitet und könnten es auch zentral an einer Stelle ändern, selbst wenn es je Form/DFM gespeichert ist)

Uwe Raabe 8. Mai 2021 18:34

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

Zitat von KodeZwerg (Beitrag 1488895)
Ich wäre ja für einen Boolean oder switch, Legacy = linkt auf Tahoma, Modern = linkt auf Segoe UI
//edit: Also als Projekt-Option meine ich das, nicht als "Form.Property"

Das halte ich für den Zweck für Overkill und sehe eine Realisierung eher unwahrscheinlich. Schließlich steht es jedem frei, den Font seines Forms zu ändern. Man muss den oben beschriebenen Sachverhalt ja nur kommunizieren. Diese Projekt-Option müsste man ja auch irgendwie setzen.

himitsu 8. Mai 2021 19:16

AW: VCL.Graphics.pas DefFontData initialisierung veraltet
 
Einfach umstellen geht aber auch nicht.
Du kompilierst deine Anwendung neu und plötzlich sieht alles anders aus.

Aber die Variante wie beim OldCreateOrder wäre schon OK.
Alte Forms muß man dann manuell umstellen und neue Forms nutzen direkt den neuen Font.

Uwe Raabe 8. Mai 2021 22:35

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

Zitat von himitsu (Beitrag 1488910)
Einfach umstellen geht aber auch nicht.
Du kompilierst deine Anwendung neu und plötzlich sieht alles anders aus.

Stimmt ja nicht. Da ein TForm seinen Font (aktuell Tahoma) in der DFM speichert und sich damit nicht mehr um DefFontData kümmert ist der Wert von DefFontData ziemlich egal. Lediglich die IDE wertet das aus, wenn man ein neues Form zum Projekt hinzufügt. Man kann das leicht verifizieren, wenn man einfach mal den Registry-Eintrag auf Segoe UI ändert und nach einem Neustart der IDE ein bestehendes VCL-Forms-Projekt öffnet und ein neues Form hinzufügt.

Wenn man allerdings ein Form dynamisch erzeugt und ohne DFM die Controls per Code darauf platziert, kann das schon Auswirkungen haben. Das ließe sich aber mit einer entsprechenden Initialisierung von DefFontData wieder auf den gewünschten Stand zurücksetzen. Das wäre auch im Moment schon ein gangbarer Weg um zur Laufzeit ein eventuelles Überschreiben von MS Shell Dlg 2 in der Registry durch den User zu neutralisieren.

himitsu 8. Mai 2021 22:45

AW: VCL.Graphics.pas DefFontData initialisierung veraltet
 
Ohh, stimmt, in der VCL wird der Font bei einer neuen Form gespeichert.

Ich hatte grade FMX im Blick und wenn dort am Font nichts geändert wurde, dann wird er dort nicht gespeichert.

Uwe Raabe 8. Mai 2021 22:56

AW: VCL.Graphics.pas DefFontData initialisierung veraltet
 
FMX verwendet aber auch kein DefFontData.

TurboMagic 9. Mai 2021 15:52

AW: VCL.Graphics.pas DefFontData initialisierung veraltet
 
Hallo CodeZwerg,

meölde dich doch einfach mit deinem EDN/EMBT Login unter quality.embarcadero.com an,
klicke aauf den großen roten Button zum erstellen eines neuen Eintrags, wähle als Typ
Feature Request aus und fülle das Formular aus. Einfach mal reinschreiben, dass du die
VCL default Font geändert haben willst und als Kategorie VCL auswählen.
Abschicken und uns die URL (wird kurz in einem Popup angezeigt, also einfach draufklicken)
hier schicken. Dann finden es sicher einige und stimmen dafür.

Wenn ich sowas kann, kannst du das bestimmt auch ;-)

Grüße
TurboMagic


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

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