Пятница - 23.04.2021 - 07:16:46
2202
0
0
Очень часто приходится сталкиваться с такой ситуацией,
когда собственная программа, на другом компьютере, вместо надписей на
кнопках, лабелах и т.д., отображает какие-то иероглифы. Одна из причин -
в системе отсутствуют шрифты, которыми мы пользуемся в своих программах.
Вещь, конечно, не приятная, чтобы ее исправить, необходимо установить
свои шрифты в системе. Как это сделать и будет показано ниже. И еще мой
совет, пользуйтесь в каждой программе проверкой на наличие шрифтов в
системе - это предохранит от неприятных неожиданностей. Еще добавлена
функция, которая выводит все установленные в системе шрифты. Все, возникнут
вопросы, критика и т.д. - пишите в гоствую книгу.
Среда программирования C++Builder 6.
Среда программирования C++Builder 6.
7. Установка шрифтов в системе
//--------------------------------------------------------- //объявляем в файле .h bool __fastcall IsMyFonts(String nameFont); void __fastcall InstallMyFonts(String nameFont); //********************* файл .сср *************************** //-------------проверка на наличие шрифта------------------- bool __fastcall TMyDataModule::IsMyFonts(String nameFont) { char WinSysDir[256]; GetWindowsDirectory(WinSysDir,256); nameFont=String(WinSysDir)+"\\Fonts\\"+nameFont; if(FileExists(nameFont)) {return 1;} else {return 0;} } //-------------устновка шрифта-------------------------------- void __fastcall TMyDataModule::InstallMyFonts(String nameFont) { char WinSysDir[256]; GetWindowsDirectory(WinSysDir,256); nameFont=String(WinSysDir)+"\\Fonts\\"+nameFont; if(!FileExists(nameFont)) { //у меня шрифт упакован в файл ресурса, поэтому если шрифт //не упакован, тогда нужно изменить код и воспользоваться //функцией копирования файлов. Главное поместить шрифт в системную //папку Fonts. Как вы это сделаете - ваша фантазия. Способов в //Builder-e C++ множество. TResourceStream *pObj=new TResourceStream(0,"FONTSVERDANA1","MYFONT"); pObj->SaveToFile(nameFont); delete pObj; ShowMessage("Шрифт < "+nameFont+" > - установлен");} } //------------------------------------------------------------ //чтобы просмотреть все шрифты, установленные в системе, //используем следующий код: for(int i=0; i<Screen->Fonts->Strings[i]; i++) {ListBox1->Items->Add(Screen->Fonts->Strings[i]);} //------------------------------------------------------------



Полностью обновлены дизайн и структура сайта