Unser Editor benutzt bisher beim Start die Systemschrift zur Anzeige. Dazu gehen wir einen etwas umständlichen Weg, der aber seine Berechtigung hat. Normalerweise würde folgender Aufruf genügen
mf := GetStockObject(SYSTEM_FONT); if(mf <> 0) then SendMessage(hEdit, WM_SETFONT, mf, 1);
um die Systemschrift zu ermitteln und dem Textfeld zuzuordnen. Wir wollen aber später, dass der Schriftartendialog die bereits aktive Schrift auch anzeigt. Ich möchte nicht zu weit vorgreifen, aber dazu ist eine Variable vom Typ TLogFont erforderlich, die an den Dialog übergeben werden kann.
Mit Hilfe der GDI-Funktion "GetObject" ist es möglich, die Eigenschaften der Systemschrift in das für uns relevante TLogFont-Record kopieren zu lassen
if(GetObject(GetStockObject(SYSTEM_FONT),sizeof(lf),@lf) = sizeof(lf)) then begin
Der erste Parameter ist der schon eingangs gezeigte Befehl "GetStockObject", der uns die Systemschriftart zurückliefert. Der zweite Parameter ist die Größe des TLogFont-Records, der dritte Parameter ist ein Zeiger auf eben dieses Record. Wenn die Funktion erfolgreich war, dann liefert sie die Anzahl der kopierten Bytes zurück, die in diesem Fall also der Recordgröße entsprechen muss.
Nun müssen wir allerdings einen, für das Textfeld verwertbaren Font erzeugen. Dazu benutzen wir die Funktion "CreateFontIndirect", der wir das eben gefüllte TLogFont-Record übergeben:
mf := CreateFontIndirect(lf);
if(mf <> 0) then
SendMessage(hEdit,WM_SETFONT,WPARAM(mf),LPARAM(false));
end;
Wie gesagt, im Erfolgsfall zeigt das Textfeld nun die Systemschriftart an, und wenn Sie den Schriftartendialog aufrufen, dann sollte die Systemschrift auch voreingestellt sein.