- 0
Друзья, помогите получить шрифты
-
Похожий контент
-
- 1 ответ
- 949 просмотров
-
AppTethering не отправляет поток данных в Android-приложение
От Delpher-X,
- delphi
- delphi 10.3.3
- (и ещё 3 )
- 5 ответов
- 1 710 просмотров
-
- 24 ответа
- 9 172 просмотра
-
- 1 ответ
- 2 974 просмотра
-
Как изменить цвет фона или текста заголовка tstringgrid
От BelovAlex,
- tstringgrid
- firemonkey
- (и ещё 1 )
- 0 ответов
- 1 554 просмотра
-
- 0 ответов
- 1 595 просмотров
-
- 3 ответа
- 2 409 просмотров
-
- 0 ответов
- 1 721 просмотр
-
- 8 ответов
- 4 180 просмотров
-
- 11 ответов
- 4 499 просмотров
-
-
Последние посетители 0 пользователей онлайн
- Ни одного зарегистрированного пользователя не просматривает данную страницу
Вопрос
nikolaynik
Здравствуйте, дорогие друзья!
Открыл для себя firemonkey, и неожиданно поняд, что крос платформенность - тяжелая для меня ноша!
Я хочу выполнить простую операцию, подгрузить в приложение список системных шрифтов, чтобы пользователь, мог сам выбрать, что ему нравится.
Обнаружил, что в firemonkey нет TFontDialog, нет TFontList.
Ситуация бесfontовая!
Благо есть интернет. И там, добрый человек - честь и хвала ему - детально раскладывает, как решить эту задачу хоть для windows, хоть для Mac.
https://delphiscience.wordpress.com/2012/11/20/getting-system-fonts-list-in-firemonkey-the-new-tplatformextensions-class/
Но снова судьба злодейка кинула! Коды на Delphi! А я только начал разбираться в СИ++.
В общем, прошу Вас, друзья, помочь мне адаптировать тот код под СИ, и вконце концов получить список системных шрифтов:
TPlatformExtention.h
//--------------------------------------------------------------------------- #ifndef PlatformExtentionH #define PlatformExtentionH //--------------------------------------------------------------------------- #include <System.Classes.hpp> //--------------------------------------------------------------------------- class TPlatformExtention: public TObject{ public: void FGetSystemFonts( TStringList *FontList ); }; //--------------------------------------------------------------------------- #endifTPlatformExtention.cpp
//--------------------------------------------------------------------------- #pragma hdrstop #include <string> #include "PlatformExtention.h" //--------------------------------------------------------------------------- int FEnumFonts( TLogFont LogFont, TTextMetric TextMetric, unsigned long FontType, long Data ){ TStringList *List = new TStringList(); UnicodeString fName; fName = LogFont.lfFaceName; if( List->Count == 0 || (AnsiCompareText(List[List->Count-1].Text, fName) != 0 ) ){ List->Add( fName ); return 1; } return 0; } //--------------------------------------------------------------------------- void TPlatformExtention::FGetSystemFonts( TStringList *FontList ){ HDC dContext; TLogFont *LogFont = new TLogFont; dContext = GetDC(0); StringOfChar( *(LogFont->lfFaceName), sizeof( LogFont ) ); LogFont->lfCharSet = DEFAULT_CHARSET; EnumFontFamiliesEx( dContext, LogFont, FEnumFonts, 0, 0 ); ReleaseDC(0, dContext); } //--------------------------------------------------------------------------- #pragma package(smart_init)Моя признательность всем откликнувшимся не знает границ.
Всем спасибо
0 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.