Zitat:
Gibt es irgendeine Möglichkeit zur Laufzeit zu ermitteln welchen Wert die Konstante DEFAULT_CHARSET hat?
Die Konstante DEFAULT_CHARSET hat doch unveränderlich per Definition immer den Wert 1.
Wogegen die dieser Konstanten zugeordneten Fonteigenschaften jeweils der landestypischen Windowsinstallation angepasst sind.
Ist also vielmehr gefragt, welcher Fontname aktuell (zur Runtime) der Konstanten DEFAULT_CHARSET zugeordnet ist (weil das Programm vielleicht zufällig gerade auf einem Rechner in Japan oder sonstwo läuft) ?
Wenn ja, dann:
Code:
function GetFontName(CharSetID: Longint): string; overload;
var
_font: TFont;
FontHandle: THandle;
LogFont: TLogFont;
begin
result := '';
_Font := TFont.Create;
try
FillChar(LogFont, SizeOf(LogFont), #0);
FontHandle := getStockObject(CharSetID);
GetObject(FontHandle, SizeOf(LogFont), @LogFont);
_font.name := StrPas(LogFont.lffaceName);
result := _Font.Name;
finally
_Font.Handle := 0;
_Font.Free;
end;
end;
function GetFontName(CharSetName: string): string; overload;
var
CharsetID: Longint;
begin
IdentToCharset(CharSetName, CharSetID);
result := GetFontName(CharSetID);
end;
// Defined in
Unit Windows:
// DEFAULT_CHARSET = 1;
// ANSI_FIXED_FONT = 11;
//
// Beispiel:
procedure TForm1.Button1Click(Sender: TObject);
begin
Showmessage(format('DEFAULT_CHARSET = %s'#13#10 +
'ANSI_FIXED_FONT = %s', [GetFontName('DEFAULT_CHARSET'), GetFontName(11)]));
end;