Шрифт формы - как получить?

Автор Злоп, 12 октября 2024, 22:35

« назад - далее »

Злоп

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

PS
Кстати, в 148 релизе код работает, а в 199 - ломается
НП = СоздатьОбъект("НастройкиПользователя");
Предупреждение(НП.ШрифтФорм); // MS SansSerif,-11
Предупреждение(НП.Шрифт); // Arial,-11 ---- Что это за атрибут "Шрифт", в 199 релизе дает ошибку....

Arbuz

РасшФормы.ВнутреннееПредставление

Но придётся парсить — там элемент 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 (система) в виде отрицательных чисел, привести к привычному указанию размера шрифта, который выбирается в диалоге выбора размера шрифта обычно..?