Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Schriftart aus Datei laden (https://www.delphipraxis.net/77841-schriftart-aus-datei-laden.html)

SirThornberry 25. Sep 2006 16:50


Schriftart aus Datei laden
 
Hallo, ich suche verzweifelt nach der Funktion mit der man eine Schriftartendatei (*.ttf) laden kann.
Ich weiß das es die Funktion gibt, aber ich komm einfach nicht darauf wie die heißt.

Wenn ich mich recht entsinne brauchte man der Funktion nur den Dateinamen übergeben.

[Edit]Und die Lösung heißt: AddFontRessource[/Edit]

Balu der Bär 25. Sep 2006 16:58

Re: Schriftart aus Datei laden
 
Moin Jens,

Delphi-Quellcode:
// Füge Font hinzu
AddFontResource(PChar('datei.ttf'));
SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);

// Zum Löschen
RemoveFontResource(PChar('datei.ttf'));
SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);

SirThornberry 25. Sep 2006 19:48

Re: Schriftart aus Datei laden
 
Zitat:

Zitat von Balu der Bär
Moin Jens,

Delphi-Quellcode:
// Füge Font hinzu
AddFontResource(PChar('datei.ttf'));
SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);

// Zum Löschen
RemoveFontResource(PChar('datei.ttf'));
SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);

Bringt das Broadcast was. Mein Problem ist folgendes.
Wenn ich den FontNamen bereits gesetzt habe bei einer Komponente (zum Beispiel zur Designzeit) und dann zur Laufzeit die Schriftart lade wird diese nicht übernommen. Die Schriftart wird nur übernommen wenn keine Komponente im Programm die Schriftart zuvor versucht hat zu laden.

Hintergrund ist folgender: Ich starte mein Programm und Linux mit "wine" und da sind die ganzen Schriftarten nicht vorhanden so das ich diese eben zur Laufzeit erst lade.

Flocke 25. Sep 2006 20:47

Re: Schriftart aus Datei laden
 
Lade die Schriftarten aus der DPR-Datei heraus bevor die erste Form erzeugt wird. Alternativ: lade sie im initialization-Abschnitt einer benutzten Unit, dort kannst du sie im finalization-Abschnitt auch wieder entfernen.

Das SendMessage/HWND_BROADCAST ist nur für den Fall gedacht, dass andere Anwendungen die Schriftart auch benutzen können sollen. Wenn du sie privat verwenden willst, dann kann das entfallen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:24 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