Das TChooseFont-Record


Für den Schriftartendialog benötigen wir ein Record namens TChooseFont, das uns Zugriff auf den Dialog bietet. Zuerst müssen wir es initialisieren und ihm seine eigene Größe und das Parent-Fenster zuweisen:

cf.lStructSize := sizeof(cf);
cf.hWndOwner   := hwndEdit;

Wie im letzten Kapitel bereits erwähnt soll der Dialog beim allerersten Aufruf die voreingestellte Systemschriftart anzeigen. Dazu benötigen wir nun die TLogFont-Variable, die wir an unser Record weitergeben:

cf.lpLogFont   := @lf;

Sofern die Variable "lf" nun eine gültige Schriftart enthält, wird diese im Dialog bereits gesetzt. Wie gesagt, beim allerersten Aufruf des Dialogs sollte das die Systemschrift sein. Bie jedem weiteren Aufruf hängt es davon ab, ob der Anwender eine andere Schriftart ausgewählt hat.
Und beim Beenden mit OK wird die Variable entsprechend unserer Auswahl angepasst, so dass wir die Schriftart in unserem Editor recht einfach ändern können. In diesem Fall müssen wir aber das Flag "CF_INITTOLOGFONTSTRUCT" setzen, weil sonst die lpLogFont-Membervariable nicht berücksichtigt wird:

cf.Flags       := CF_SCREENFONTS or CF_INITTOLOGFONTSTRUCT or
  CF_NOSCRIPTSEL;

Weitere Flags finden Sie im MSDN und/oder im PSDK. In unserem Fall zeigt der Dialog lediglich die Schriftarten, -stile und -größen an.