Форум Кладовочки АЛьФ`а

Обсуждение проектов => FormEx => Тема начата: Злоп от 12 октября 2024, 22:35

Название: Шрифт формы - как получить?
Отправлено: Злоп от 12 октября 2024, 22:35
Как через Formex получить шрифт формы?
Через объект "НастройкиПользователей" - можно получить НАСТРОЙКУ через атрибут "ШрифтФорм".
Но это - настройка по умолчанию, а на форму в конфигураторе может быть назначен другой шрифт.
Получить шрифт формы через шрифт какого-либо реквизита формы (например, кнопки кнЗакрыть - не пойдет, т.к. на кнопку может программно быть назначен свой шрифт) - какой реквизит формы брать, который есть всегда?
.
Собственно вот что хотелось: получить шрифт формы, вытащить оттуда размер и, например, на ТЗ назначить типа ШрифтФормы.Размер + 2 (или -2, размер может и в отрицательных значениях задаваться).

PS
Кстати, в 148 релизе код работает, а в 199 - ломается
НП = СоздатьОбъект("НастройкиПользователя");
Предупреждение(НП.ШрифтФорм); // MS SansSerif,-11
Предупреждение(НП.Шрифт); // Arial,-11 ---- Что это за атрибут "Шрифт", в 199 релизе дает ошибку....
Название: Re: Шрифт формы - как получить?
Отправлено: Arbuz от 14 октября 2024, 16:30
РасшФормы.ВнутреннееПредставление
Но придётся парсить — там элемент Frame.
Название: Re: Шрифт формы - как получить?
Отправлено: Злоп от 14 октября 2024, 18:09
хм.. надо посмотреть что там такое...
Название: Re: Шрифт формы - как получить?
Отправлено: Злоп от 18 октября 2024, 21:19
Цитата: 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,"да","нет")+"
|");
Название: Re: Шрифт формы - как получить?
Отправлено: Злоп от 18 октября 2024, 21:21
Тут еще вопрос:
как размеры шрифтов, которые выдает Formex (система) в виде отрицательных чисел, привести к привычному указанию размера шрифта, который выбирается в диалоге выбора размера шрифта обычно..?
Название: Re: Шрифт формы - как получить?
Отправлено: Злоп от 10 ноября 2024, 13:54
никто не знает..?