Форум: "Основная";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];
ВнизОпределение фиксированного шрифта, медленно работает Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.045 c