Как через Formex получить шрифт формы?
Через объект "НастройкиПользователей" - можно получить НАСТРОЙКУ через атрибут "ШрифтФорм".
Но это - настройка по умолчанию, а на форму в конфигураторе может быть назначен другой шрифт.
Получить шрифт формы через шрифт какого-либо реквизита формы (например, кнопки кнЗакрыть - не пойдет, т.к. на кнопку может программно быть назначен свой шрифт) - какой реквизит формы брать, который есть всегда?
.
Собственно вот что хотелось: получить шрифт формы, вытащить оттуда размер и, например, на ТЗ назначить типа ШрифтФормы.Размер + 2 (или -2, размер может и в отрицательных значениях задаваться).
PS
Кстати, в 148 релизе код работает, а в 199 - ломается
НП = СоздатьОбъект("НастройкиПользователя");
Предупреждение(НП.ШрифтФорм); // MS SansSerif,-11
Предупреждение(НП.Шрифт); // Arial,-11 ---- Что это за атрибут "Шрифт", в 199 релизе дает ошибку....
РасшФормы.ВнутреннееПредставление
Но придётся парсить — там элемент Frame.
хм.. надо посмотреть что там такое...
Цитата: Arbuz от 14 октября 2024, 16:30РасшФормы.ВнутреннееПредставление
парсингом никогда не занимался, так что втупую...
РасшФормы = СоздатьОбъект("РасширениеФормы");
ВП = РасшФормы.ВнутреннееПредставление;
//ОТЛАДКА Сообщить(РазделительСтрок+ВП);
//{"Dialogs",
//{"Frame",
//{"-11","0","0","0","400","0","0","0","204","1","2","1","34","MS Sans Serif","320","165"," ","","","128","","1","1","6","29","-1","0","128",
ВП = СтрПолучитьСтроку(ВП,3);
//ОТЛАДКА Сообщить(РазделительСтрок+ВП);
ВП = СокрЛП(СтрЗаменить(ВП,"{",РазделительСтрок));
ВП = СтрЗаменить(ВП,",",РазделительСтрок);
ВП = СтрЗаменить(ВП,"""","");
ШрифтПоУмолчанию = Число(СтрПолучитьСтроку(ВП,22));
ШрифтИмя = СтрПолучитьСтроку(ВП,14);
ШрифтРазмер = Число(СтрПолучитьСтроку(ВП,1));
ШрифтЖирный = Число(СтрПолучитьСтроку(ВП,5));
ШрифтНаклонный = Число(СтрПолучитьСтроку(ВП,6));
ШрифтПодчеркнутый = Число(СтрПолучитьСтроку(ВП,7));
ШрифтЗачеркнутый = Число(СтрПолучитьСтроку(ВП,8));
ШрифтРазмерПриведенный = ШрифтРазмер * (-0.77273);
ШрифтРазмерПриведенныйДробь = ШрифтРазмерПриведенный - Цел(ШрифтРазмерПриведенный);
ШрифтРазмерПриведенныйДробь = ?(ШрифтРазмерПриведенныйДробь<0.5,0,0.5);
ШрифтРазмерПриведенный = Цел(ШрифтРазмерПриведенный)+ШрифтРазмерПриведенныйДробь;
Сообщить("Форма, шрифт:
|"+СимволТабуляции+"шрифт по умолчанию: "+?(ШрифтПоУмолчанию<>0,"да","нет")+"
|"+СимволТабуляции+"имя: "+ШрифтИмя+"
|"+СимволТабуляции+"размер: "+ШрифтРазмер+"(?"+ШрифтРазмерПриведенный+"пт)
|"+СимволТабуляции+"начертание: "+?(ШрифтЖирный=400,"нормальный","жирный")+"
|"+СимволТабуляции+"наклонный: "+?(ШрифтНаклонный<>0,"да","нет")+"
|"+СимволТабуляции+"подчеркнутый: "+?(ШрифтПодчеркнутый<>0,"да","нет")+"
|"+СимволТабуляции+"зачеркнутый: "+?(ШрифтЗачеркнутый<>0,"да","нет")+"
|");
Тут еще вопрос:
как размеры шрифтов, которые выдает Formex (система) в виде отрицательных чисел, привести к привычному указанию размера шрифта, который выбирается в диалоге выбора размера шрифта обычно..?
никто не знает..?