Einzelnen Beitrag anzeigen

ASM

Registriert seit: 15. Aug 2004
165 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: Integer property setzen mit RTTI

  Alt 6. Jun 2011, 21:44
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;
  Mit Zitat antworten Zitat