Delphi World - Получить свойство шрифта по его дескриптору
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Получить свойство шрифта по его дескриптору

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

uses
   TypInfo;

 function MakeFontFromHFont(aHandle: HFONT): TFONT;
 var
   LogFont: TLogFont;
 begin
   Result := TFont.Create;
   FillChar(LogFont, SizeOf(LogFont), 0);
   GetObject(aHandle, SizeOf(logfont), @LogFont);
   with LogFont, Result do
   begin
     Name   := StrPas(lffaceName);
     Height := -lfHeight;
     if lfWeight FW_MEDIUM then
       Style := Style + [fsBold];
     if lfItalic 0 then
       Style := Style + [fsItalic];
     if lfUnderline 0 then
       Style := Style + [fsUnderline];
     if lfStrikeout 0 then
       Style := Style + [fsStrikeout];
     case (lfPitchAndFamily and 3) of
       VARIABLE_PITCH: Pitch := fpVariable;
       FIXED_PITCH: Pitch    := fpFixed;
     end;
   end;
 end;


 procedure TForm1.Button1Click(Sender: TObject);
 var
   f: TFont;
   s: string;
   st: TFontStyle;
 begin
   f := MakeFontfromHFont(getStockObject(ANSI_FIXED_FONT));
   try
     memo1.Clear;
     with memo1.Lines do
     begin
       Add(Format('Name: %s', [f.Name]));
       Add(Format('Size: %d', [f.Size]));
       Add(Format('Height: %d', [f.Height]));
       Add(Format('Pitch: %s', [GetEnumName(TypeInfo(TFontPitch),
         Ord(f.Pitch))]));
       S := 'Style: [ ';
       for st := Low(St) to High(st) do
         if st in f.Style then
         begin
           AppendStr(S, GetEnumName(TypeInfo(TFontStyle), Ord(st)));
           AppendStr(S, ' ');
         end;
       AppendStr(S, ']');
       Add(S);
     end;
   finally
     f.Handle := 0;
     f.Free;
   end;
 end;
Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования