Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.19;
Скачать: CL | DM;

Вниз

Определение фиксированного шрифта, медленно работает   Найти похожие ветки 

 
Pavel__   (2006-01-20 16:57) [0]

...функция. Написал, вот:


function IsFixedFont(const FontName: TFontName): Boolean;
var
 DC: HDC;
 Save: THandle;
 Metrics: TTextMetric;
 Font: TFont;
begin
 Font := TFont.Create;
 try
   Font.Name := FontName;
   DC := GetDC(0);
   Save := SelectObject(DC, Font.Handle);
   GetTextMetrics(DC, Metrics);
   SelectObject(DC, Save);
   ReleaseDC(0, DC);
   Result := (((Metrics.tmPitchAndFamily and FF_MODERN) <> 0) and
     ((Metrics.tmPitchAndFamily and $01) = 0));
 finally
   Font.Free;
 end;
end;


Работает нормально, но при проходе списка вида


for I := 0 to Screen.Fonts.Count - 1 do
 if IsFixedFont(Screen.Fonts[I]) then
   something.Items.Add(Screen.Fonts[I]);


слишком долго соображает. Может есть другие методы определения сабжа? Или можно поправить этот? Спасибо.


 
MBo ©   (2006-01-20 17:02) [1]

EnumFontFamilies(Ex)?


 
Игорь Шевченко ©   (2006-01-20 17:05) [2]


> слишком долго соображает


Уж не из-за этой ли строчки ?


>  something.Items.Add(Screen.Fonts[I]);


 
Pavel__   (2006-01-20 21:36) [3]

2 MBo

пример нашел, http://vsokovikov.narod.ru/Msdn_api/Global_SDK/Reference_API/Functions/Fn_E/fn_enumfontfamiliesex.htm, вот только не пойму как передать чтобы именно с фиксированной шириной текст вывело..

2 Игорь Шевченко

> Уж не из-за этой ли строчки ?


Сомнительно. Закомментировал -- ничего не изменилось. something -- стандартный tcombobox.


 
Pavel__   (2006-01-20 21:40) [4]

Пардон, заговариваюсь уже.


> вот только не пойму как передать чтобы именно с фиксированной
> шириной текст вывело..


читать как


> вот только не пойму, какие параметры передать, чтобы вывело
> список шрифтов с фиксированной шириной..


 
Leonid Troyanovsky ©   (2006-01-23 13:10) [5]


> Pavel__   (20.01.06 21:40) [4]

> > вот только не пойму, какие параметры передать, чтобы вывело
> > список шрифтов с фиксированной шириной..


Передавать, видимо, logfont.lfCharSet.
А вот фильтровать в EnumProc (var elf: TEnumLogFontEx, ..):

if (elf.elfLogFont.lfPitchAndFamily and FIXED_PITCH <> 0) then {fixed}

--
Regards, LVT.


 
Pavel__   (2006-01-23 15:40) [6]

2 Leonid Troyanovsky

Огромное спасибо, разобрался.



Страницы: 1 вся ветка

Текущий архив: 2006.02.19;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.048 c
6-1130333737
AlexAndroID
2005-10-26 17:35
2006.02.19
перехватить контент до браузера, обработав, отдать ему


2-1138427962
ArtemESC
2006-01-28 08:59
2006.02.19
Тип String


1-1137775503
sco
2006-01-20 19:45
2006.02.19
Диафильм в TListView


2-1138628089
Neo Trinitron
2006-01-30 16:34
2006.02.19
Иконки зарегистрированных типов


1-1136990344
DelphiLexx
2006-01-11 17:39
2006.02.19
Сохранить рисунок с TPanel