Installierte Schriften ermitteln |
|
| System | Win9x, WinNT, Win2000, WinXP, Vista, Win7 |
|---|---|
| Ab Delphi-Version | Delphi 1 |
| Letzte Änderung | 28.09.2010 |
Das TScreen-Objekt enthält eine Liste mit allen installierten Schriften, die auf dem Bildschirm dargestellt werden können:
procedure TForm1.Button1Click(Sender: TObject);
begin
Listbox1.Items.Assign(Screen.Fonts);
end;
Das bedeutet jedoch nicht, dass jede dieser Schriften auch gedruckt werden kann. Eine entsprechende Liste des aktuellen Druckers enthält das TPrinter-Objekt:
Printers;
procedure TForm1.Button1Click(Sender: TObject);
begin
Listbox1.Items.Assign(Printer.Fonts);
end;
Um zusätzlich noch weitere Informationen zu den Fonts zu erhalten, benutzen Sie diese Procedure:
var
Log: TLogFont;
function _EnumFontFamExProc(EnumLogFontEx: PEnumLogFontEx;
NewTextMetric: PNewTextMetric;
FontType: Longword;
LParam: Longword): integer; stdcall;
begin
Result := 1;
TStrings(LParam).Add(StrPas(EnumLogFontEx.elfFullName));
end;
begin
FillChar(Log, SizeOf(Log), 0);
Log.lfCharSet := Default_Charset;
Log.lfFaceName := '';
Log.lfPitchAndFamily := 0;
EnumFontFamiliesEx(ACanvas.Handle, Log, @_EnumFontFamExProc, Integer(ADest), 0);
end;
Sie listet zu einem TCanvas alle darstellbaren Fonts auf. Teilweise werden Schriften mehrfach aufgelistet. Es liegt daran, dass eine Schrift in mehreren Sprachen installiert wurde. Weitere Informationen finden Sie in der PSDK unter dem Stichwort "ENUMLOGFONT".Ein Beispielaufruf sieht so aus:
begin
ListFonts(Canvas, Listbox1.Items);
end;