- Ошибки, баги, вопросы
- Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
- Как Вам новое оформление сайта?
TextSetFont не работает с ресурсами ни в MT4 ни в MT5. Раньше хоть в MT5 работало, а сейчас ни там ни там, полдня промучился пробуя разные варианты всё впустую, всегда выводит текст в Arial, никаких ошибок при этом нет. Да и вообще ни один вывод текста не принимает шрифты из ресурсов, хоть лейблы стандартные хоть текст.
Обычно постояльцы форума в таких случаях задают вопрос - а где код для воспроизведения?
Обычно постояльцы форума в таких случаях задают вопрос - а где код для воспроизведения?
Несколько лет уже жалуемся, и коды выкладывали сколько раз. Просто решил напомнить, до сих пор не работает.
![Шрифт как ресурс не работает в МТ4 Шрифт как ресурс не работает в МТ4](https://c.mql5.com/36/55/shrift-kak-resurs-ne-rabotaet-v-mt4.jpg)
- 2019.08.08
- www.mql5.com
Точно, только что проверил работает в МТ5 но не работало же! Вот чудеса! Или терминал просто надо было перезапустить. Но в МТ4 не работает.
У меня в MT5 не работает. Вообще, вместо имени шрифта любую белиберду можно передать, TextSetFont() молчит и всегда возвращает истину.
void OnStart() { ResetLastError(); string font = "blablabla"; bool result = TextSetFont(font, 12 * -10, FW_DONTCARE); if(!result) Print("Set font ", font, " failed"); // no message! Print("Error #", _LastError); // 0! // label-object creation test string obj_name = "TestObject"; if(!ObjectCreate(0, obj_name, OBJ_LABEL, 0, 0, 0)) { Print(__FUNCTION__, ": label creation failed! Error = ", _LastError); return; } ObjectSetString(0, obj_name, OBJPROP_FONT, font); ObjectSetInteger(0, obj_name, OBJPROP_FONTSIZE, 12); ObjectSetInteger(0, obj_name, OBJPROP_SELECTABLE, true); ObjectSetInteger(0, obj_name, OBJPROP_HIDDEN, false); }
Вместо шрифта в свойствах пустота, рисует ариалом. У меня linux (wine), если это имеет значение.
Пожалуйста, почините работу TextSetFont()! Нужна работа стандартных объектов с подключённым шрифтом из ресурса.
У меня в MT5 не работает. Вообще, вместо имени шрифта любую белиберду можно передать, TextSetFont() молчит и всегда возвращает истину.
Вместо шрифта в свойствах пустота, рисует ариалом. У меня linux (wine), если это имеет значение.
Пожалуйста, почините работу TextSetFont()! Нужна работа стандартных объектов с подключённым шрифтом из ресурса.
TextSetFont работает только с TextOut "by design". Вы просите не о починке, а о новой фиче. Может когда-нибудь и сделают.
А возврат true при передаче "левого" шрифта - скорее всего, ошибка. Обычно просят предоставить скрипт для воспроизведения проблемы.
TextSetFont работает только с TextOut "by design". Вы просите не о починке, а о новой фиче. Может когда-нибудь и сделают.
А возврат true при передаче "левого" шрифта - скорее всего, ошибка. Обычно просят предоставить скрипт для воспроизведения проблемы.
Нет, вопрос шире. Мне вообще нужно было шрифт из ресурса в кнопки/надписи без канваса засунуть. Оказалось, что множество функций, которые в документации явно не запрещают это делать (или даже должны), по факту это не поддерживают, но при этом молчат как партизаны и ошибок не возвращают. Код воспроизведения уже приводил, но вот ещё более наглядно поправил:
void OnStart() { ResetLastError(); // test function on wrong font string font = "blablabla"; bool result = TextSetFont(font, 12 * -10, FW_DONTCARE); // no errors! if(result) Print("Font ", font, " accepted, why not?"); else Print("Error #", _LastError); // 0! // label-object creation test string obj_name = "TestObject"; if(!ObjectCreate(0, obj_name, OBJ_LABEL, 0, 0, 0)) { Print(__FUNCTION__, ": label creation failed! Error = ", _LastError); return; } // push wrong font name bool no_error = ObjectSetString(0, obj_name, OBJPROP_FONT, font); if(no_error) Print("ObjectSetString() returns true! Very nice!"); }
Нет, вопрос шире. Мне вообще нужно было шрифт из ресурса в кнопки/надписи без канваса засунуть. Оказалось, что множество функций, которые в документации явно не запрещают это делать (или даже должны), по факту это не поддерживают, но при этом молчат как партизаны и ошибок не возвращают. Код воспроизведения уже приводил, но вот ещё более наглядно поправил:
По шрифтам. Соответствующий файл со шрифтом должен лежать в системной папке шрифтов. Это если я правильно помню, как сию проблему решал, но как-то решал)))
Ну конечно я всё проверил. Даже реестр на наличие записи о регистрации шрифта в порядке. Тут проблема, что на явную проблему функция молчит как так и надо (смотрите пример выше). К тому же, исходя из справки я ожидал, что объекты типа кнопки и надписи, тоже могут получать шрифт из ресура, но это не так. Обычный шрифт из системы, конечно, все функции принимают на "ура".
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования