welchen Font verwendet ein Xbase-Part?

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

welchen Font verwendet ein Xbase-Part?

Beitrag von georg »

Hallo,


mich interessiert, welchen Font ein Xbase-Part verwendet. Normalerweise habe ich erwartet, dass ich mittels :setFont() diese Information erhalten kann, aber das ist nicht der Fall:

Code: Alles auswählen

FUNCTION Main()
   oFont := AppDeskTop():setFont()
RETURN (.T.)
FUNCTION AppSys()
RETURN (.T.)
FUNCTION DbeSys()
RETURN (.T.)
oFont hat den Wert NIL. Das gilt auch für Programme mit mehr Code und mehr Xbase-Parts (AppDesktop() wird als Objekt der XbpIWindow-Klasse abgebildet).
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: welchen Font verwendet ein Xbase-Part?

Beitrag von brandelh »

es muss sich um ein XbpDialog() oder XbpCrt() handel, damit man den Font abfragen kann.

Ich meine der Standardfont (bei XbpFD) ist 8.Helv.normal, bei Windows also 8.Arial
Gruß
Hubert
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: welchen Font verwendet ein Xbase-Part?

Beitrag von georg »

Guten Morgen, Hubert -


tja, das ist es leider nicht.

Ich erzeuge ein XbpStatic() und weise ihm einen Text zu. Der kommt mit dem "Standard-Font", den Xbase++ verwendet:
std-font.png
std-font.png (1.22 KiB) 5558 mal betrachtet
Weise ich dem XbpStatic() dann ein Arial-XbpFont-Objekt zu, ändert sich die Schriftart:
arial.8.png
arial.8.png (2.89 KiB) 5558 mal betrachtet
Dann habe ich auch mal Segoe UI als Schriftart zugewiesen (das ist seit Windows Vista wohl die Standard-Schriftart von Windows), dann sieht das so aus:
Segoe.8.png
Segoe.8.png (2.9 KiB) 5558 mal betrachtet
Sieht mir ziemlich nach Arial aus ... Oder auch umgekehrt.

Zu Segeo UI und der Verwendung von Schriftarten findet man hier bei Microsoft etwas mehr: https://docs.microsoft.com/en-us/window ... /vis-fonts

Mein Problem ist: ich möchte die Schriftgrösse entsprechend der Skalierung anpassen (das geht zumindest auf meinem PC nicht bzw. nur eingeschränkt automatisch), und dafür müsste ich wissen, welche Schriftart verwendet wird.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: welchen Font verwendet ein Xbase-Part?

Beitrag von Tom »

Hallo, Georg.

Wenn einem XbPart nicht explizit ein Font/Fontobjekt zugewiesen ist, entscheidet das Betriebssystem. Seit Windows 10 ist diese Entscheidung nur noch schwer beeinflussbar. Die Werte hierzu finden sich in der Reg in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts und HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes. Bei Statics landest Du normalerweise auf Segoe UI. Diese Schrift ist hierfür entwickelt worden.

Die einfachste Art, mit Deinem Problem umzugehen, besteht darin, die Schriften selbst zu setzen, sie also in Deiner XbpDialog-Klasse zu setzen und zu vererben.

Ergänzung: Ich meine, Xbase++ wählt noch aus OS/2-Legacy-Gründen irgendwie irgendwo eine Helvetica, die unter Windows üblicherweise als Arial substituiert wird.
Herzlich,
Tom
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: welchen Font verwendet ein Xbase-Part?

Beitrag von georg »

Guten Morgen, Tom -


jein. Es gibt mir um die Fälle, wo der Anwender eine Schriftart definiert hat, also vom Windows-Standard abweicht. Schreibe ich ihm eine andere Schriftart vor, würde meine Anwendung aus dem Rahmen fallen. Daher möchte ich ermitteln, welche Schriftart verwendet wird, und diese entsprechend skalieren.

Die Zweige der Registry listen (vorsichtig geschätzt) alle installierten Fonts und helfen mir so nicht unbedingt weiter, den verwendeten Font zu lokalisieren.

Ach, ich hatte auf eine einfache Lösung gehofft ...

So, ich habe noch einmal etwas gesucht und das hier bei Heise gefunden: https://www.heise.de/tipps-tricks/Windo ... 39691.html

Demnach kann man nicht mehr so einfach die Standardschrift verändern (wieder etwas dazugelernt).
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: welchen Font verwendet ein Xbase-Part?

Beitrag von Tom »

Hallo, Georg.

Ja, der Zweig listet alle installierten Fonts auf, und alles, was der Schriftartfamilie "Segoe UI" als physische Schriftartdatei zugeordnet ist, verwendet Windows für die UI/UX. Und ich schrieb ja, dass es seit Windows 10 für Laien nahezu unmöglich ist, die Windows-Standardschriftart zu beeinflussen, weil das eben nur so geht, indem man also die Fontdateien austauscht. Du dürftest deshalb kaum mit Benutzer konfrontiert sein, die das unter Windows 10 tatsächlich getan haben - höchstens eben noch unter Windows 7.

So oder so, Du wirst bei Statics in aller Regel mit Segoe UI konfrontiert sein. Wir setzen das in unserer Anwendung deshalb auch von uns aus fest, und für SLEs Calibri.
Herzlich,
Tom
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: welchen Font verwendet ein Xbase-Part?

Beitrag von AUGE_OHR »

hi,
georg hat geschrieben: Do, 15. Apr 2021 7:29 Mein Problem ist: ich möchte die Schriftgrösse entsprechend der Skalierung anpassen
denke doch anders rum : User legt den Font im Setup fest :idea:

Windows wählt meistens "best fit" aus aber nur 1:1 stimmt wirklich bei "jeder" DPI (Hardware) / Skalierung (DPIaware)

das Layout von unseren Apps ist doch meistens nicht auf o:resize ausgelegt was beim "maximieren" reagiert.

---

für das Resize ist ein X,Y Faktor eine Lösung.
Die Werte von GraQueryTextBox() / API GetTextExtentPoint32() aus einem Referenz String ergeben dann den X,Y Faktor

---

der Font ergibt, nach Auswalt mit XbpFontDialog(), ein unterschiedliches Aussehen. :-k

ich nutze dazu API Code von Günter Beyes "GetTextExtentPoint32" sowie Font "create"
bei Pablo habe ich seinen Weg mit Ot4Xb genommen ( geht auch ohne Ot4Xb )
das ganze verglichen mit dem "pure" Xbase++ Resultat
CRE3FONT.ZIP
(3.5 KiB) 208-mal heruntergeladen
welche von den 3 Resultaten gefällt euch :?:
gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: welchen Font verwendet ein Xbase-Part?

Beitrag von Tom »

Wenn man Rogers eXpress++ verwendet, muss man nur (einmalig) die Option SCALEFACTOR parametrisieren, und alle Dialoge und Parts verändern ihr Verhalten und Aussehen ganz wunderbar. Übrigens auch in die umgekehrte Richtung.
Herzlich,
Tom
Antworten