Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.46 MB
Время: 0.026 c
2-1138716658
TimScorp
2006-01-31 17:10
2006.02.19
Формы


2-1138710802
Lenka_per
2006-01-31 15:33
2006.02.19
Переменная в переменной


2-1138979999
User2
2006-02-03 18:19
2006.02.19
коннект с SQL SERVER по сети


4-1133550476
Хинт
2005-12-02 22:07
2006.02.19
Как избежать TerminateProcess?


3-1135069265
ANB
2005-12-20 12:01
2006.02.19
Как лучше сделать ссылку на 2 сущности ? (Oracle и MS SQL)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский