Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Шрифт формы (число прочтений - 3967 )
BuZZZard
Full Member
***
Отсутствует



Сообщений: 112
Местоположение: Калининград
Зарегистрирован: 15. Октября 2007
Пол: Мужской
Шрифт формы
01. Ноября 2007 :: 17:56
Печать  
Люди добры, подскажите, как добраться до шрифта формы чтобы его изменить?

Как изменить я примерно представляю. Но у какого объекта есть это свойство?
Никак не могу найти  Плачущий

Задача в том, чтобы масштабировать форму для отдельного пользователя. Т.е. динамически.
  
Наверх
ICQ  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Шрифт формы
Ответ #1 - 01. Ноября 2007 :: 18:14
Печать  
Для слабовидящего, что ли?
Можно менять дефолтный шрифт всех форм. Если шрифт какой-нибудь формы установлен не дефолтный, то он не изменится при этом действии. Так что вполне решаемо.
Подробней задачу опиши.
  
Наверх
ICQ  
IP записан
 
BuZZZard
Full Member
***
Отсутствует



Сообщений: 112
Местоположение: Калининград
Зарегистрирован: 15. Октября 2007
Пол: Мужской
Re: Шрифт формы
Ответ #2 - 02. Ноября 2007 :: 10:03
Печать  
Нет. Шрифт всех форм менять не надо. Надо одной конкретной и для конкретного пользователя.

Пробовал играться со шрифтом, который для всех форм.
Т.е. в нужной форме включаю увеличенный, а при вызове другой формы возвращаю обычный, при возвращении в первую снова увеличиваю шрифт...
Выглядит забавно. И кроме того если первая форма была максимизирована при вызове второй, то при возвращении 1С похоже не может увеличить форму и валится.
  
Наверх
ICQ  
IP записан
 
chicago
Senior Member
****
Отсутствует


1C++, I have nothing to
say more!

Сообщений: 316
Местоположение: Тернополь-Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Шрифт формы
Ответ #3 - 05. Ноября 2007 :: 10:10
Печать  
Код
Выбрать все
	СерРас = СоздатьОбъект("СервисРасшФормы");
	СерШри = СерРас.СоздатьШрифт(,, 7);

	ФорРас = СоздатьОбъект("РасширениеФормы");
	ФорРас.УстановитьФорму(Форма);
	Для ЛічАтр = 0 По ФорРас.КоличествоАтрибутов() - 1 Цикл
		ФорРас.ПолучитьАтрибут(ЛічАтр).Шрифт = СерШри;
	КонецЦикла; 


А так?
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Шрифт формы
Ответ #4 - 05. Ноября 2007 :: 10:35
Печать  
Потом только надо незабыть удалить этот шрифт. В противном случае GDI не напасешься...
  
Наверх
 
IP записан
 
BuZZZard
Full Member
***
Отсутствует



Сообщений: 112
Местоположение: Калининград
Зарегистрирован: 15. Октября 2007
Пол: Мужской
Re: Шрифт формы
Ответ #5 - 06. Ноября 2007 :: 10:04
Печать  
chicago писал(а) 05. Ноября 2007 :: 10:10:
Код
Выбрать все
	СерРас = СоздатьОбъект("СервисРасшФормы");
	СерШри = СерРас.СоздатьШрифт(,, 7);

	ФорРас = СоздатьОбъект("РасширениеФормы");
	ФорРас.УстановитьФорму(Форма);
	Для ЛічАтр = 0 По ФорРас.КоличествоАтрибутов() - 1 Цикл
		ФорРас.ПолучитьАтрибут(ЛічАтр).Шрифт = СерШри;
	КонецЦикла; 


А так?



Видимо после открытия такого нельзя делать.... что-то происходит, но явно не то, что ожидается.
Буду пробовать ПриОткрытии

Мысль понравилась Подмигивание Зачет!
  
Наверх
ICQ  
IP записан
 
BuZZZard
Full Member
***
Отсутствует



Сообщений: 112
Местоположение: Калининград
Зарегистрирован: 15. Октября 2007
Пол: Мужской
Re: Шрифт формы
Ответ #6 - 06. Ноября 2007 :: 13:22
Печать  
Нет.... ПриОткрытии такой номер вообще не проходит.

А ПослеОткрытия...  шрифт становится жирным, но не увеличивается.

А вот если на уже открытой форме пробежать по атрибутам, то корректно шрифт увеличивается только у текста. На кнопках и прочих элементах так и остается жирным Печаль


Неужели добраться непосредственно до шрифта формы невозможно?
  
Наверх
ICQ  
IP записан
 
chicago
Senior Member
****
Отсутствует


1C++, I have nothing to
say more!

Сообщений: 316
Местоположение: Тернополь-Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Шрифт формы
Ответ #7 - 06. Ноября 2007 :: 13:42
Печать  
BuZZZard писал(а) 06. Ноября 2007 :: 13:22:
Нет.... ПриОткрытии такой номер вообще не проходит.
А ПослеОткрытия...  шрифт становится жирным, но не увеличивается.
А вот если на уже открытой форме пробежать по атрибутам, то корректно шрифт увеличивается только у текста. На кнопках и прочих элементах так и остается жирным Печаль
Неужели добраться непосредственно до шрифта формы невозможно?


Код давай.
  
Наверх
ICQ  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Шрифт формы
Ответ #8 - 06. Ноября 2007 :: 13:46
Печать  
to BuZZZard
Ты задачу опиши, зачем все это. Сдается мне, проще все можно сделать.
  
Наверх
ICQ  
IP записан
 
BuZZZard
Full Member
***
Отсутствует



Сообщений: 112
Местоположение: Калининград
Зарегистрирован: 15. Октября 2007
Пол: Мужской
Re: Шрифт формы
Ответ #9 - 06. Ноября 2007 :: 13:50
Печать  
Задача в том, чтобы для конкретного пользователя увеличить одну конкретную форму.
При массовом вводе данных просто устают глаза у него.
  
Наверх
ICQ  
IP записан
 
BuZZZard
Full Member
***
Отсутствует



Сообщений: 112
Местоположение: Калининград
Зарегистрирован: 15. Октября 2007
Пол: Мужской
Re: Шрифт формы
Ответ #10 - 06. Ноября 2007 :: 13:57
Печать  
// ******************************
// Описание                              :      
// Параметры:
//      *      Параметр1                  -      описание параметра
//
Процедура МасштабированиеФормы(КонтекстФормы) Экспорт

     ТекущаяФорма      = СоздатьОбъект("РасширениеФормы");
     ТекущаяФорма.УстановитьФорму(КонтекстФормы.Форма);      
     
     ПолныйТипОбъекта      = ТекущаяФорма.ПолныйТипОбъекта();
     сПолныйТипОбъекта      = """" + СтрЗаменить(ПолныйТипОбъекта, ".", """,""") + """";
     СЗПолныйТипОбъекта      = СоздатьОбъект("СписокЗначений");
     СЗПолныйТипОбъекта.ИзСтрокиСРазделителями(сПолныйТипОбъекта);
     Если СЗПолныйТипОбъекта.ПолучитьЗначение(1) = "ВнешнийОтчет" Тогда
           ПутьКФайлу      = "";
           ИмяФайла      = "";
           КонтекстФормы.РасположениеФайла(ПутьКФайлу, ИмяФайла);
           Позиция      = Найти(ПутьКФайлу, КаталогИБ());
           Если Позиция > 0 Тогда
                 ПутьКФайлу      = "." + Сред(ПутьКФайлу, СтрДлина(КаталогИБ()));
           КонецЕсли;
           
           ПолныйТипОбъекта = ПолныйТипОбъекта + "." + ПутьКФайлу + ИмяФайла;
           СЗПолныйТипОбъекта.ДобавитьЗначение(ПутьКФайлу + ИмяФайла);
           СЗПолныйТипОбъекта.ДобавитьЗначение("Форма");
     КонецЕсли;

     Масштаб                        = Число(ВосстановитьЗначение("Масштабирование_" + сПолныйТипОбъекта));
     Если Масштаб = 0 Тогда
     Иначе

           Сервис                        = СоздатьОбъект("Сервис");
           ШрифтФормы                  = Сервис.СоздатьШрифт("Tahoma", Масштаб);          
           Для ИндАтр = 0 По ТекущаяФорма.КоличествоАтрибутов() - 1 Цикл
                 ТекущаяФорма.ПолучитьАтрибут(ИндАтр).Шрифт = ШрифтФормы;
           КонецЦикла;
           Сервис.УдалитьШрифт(ШрифтФормы);
     КонецЕсли;
     
КонецПроцедуры // МасштабированиеФормы()

//*****************************************************************************
Процедура ПослеОткрытия(КонтекстФормы)
     
     МасштабированиеФормы(КонтекстФормы);
     
КонецПроцедуры // ПослеОткрытия()

// ******************************
Процедура глДействия(КонтекстФормы) Экспорт

     ТекущаяФорма      = СоздатьОбъект("РасширениеФормы");
     ТекущаяФорма.УстановитьФорму(КонтекстФормы.Форма);      
     
     ПолныйТипОбъекта      = ТекущаяФорма.ПолныйТипОбъекта();
     сПолныйТипОбъекта      = """" + СтрЗаменить(ПолныйТипОбъекта, ".", """,""") + """";
     СЗПолныйТипОбъекта      = СоздатьОбъект("СписокЗначений");
     СЗПолныйТипОбъекта.ИзСтрокиСРазделителями(сПолныйТипОбъекта);
     Если СЗПолныйТипОбъекта.ПолучитьЗначение(1) = "ВнешнийОтчет" Тогда
           ПутьКФайлу      = "";
           ИмяФайла      = "";
           КонтекстФормы.РасположениеФайла(ПутьКФайлу, ИмяФайла);
           Позиция      = Найти(ПутьКФайлу, КаталогИБ());
           Если Позиция > 0 Тогда
                 ПутьКФайлу      = "." + Сред(ПутьКФайлу, СтрДлина(КаталогИБ()));
           КонецЕсли;
           
           ПолныйТипОбъекта = ПолныйТипОбъекта + "." + ПутьКФайлу + ИмяФайла;
           СЗПолныйТипОбъекта.ДобавитьЗначение(ПутьКФайлу + ИмяФайла);
           СЗПолныйТипОбъекта.ДобавитьЗначение("Форма");
     КонецЕсли;
     
     ТипОбъекта                  = СЗПолныйТипОбъекта.ПолучитьЗначение(1);
     ВидОбъекта                  = СЗПолныйТипОбъекта.ПолучитьЗначение(2);
     
     СписокДействий = СоздатьОбъект("СписокЗначений");
     СписокДействий.ДобавитьЗначение("Установить масштабирование формы");      

     Действие      = "";
     Если СписокДействий.ВыбратьЗначение(Действие, , , , 1) = 0 Тогда
           Возврат;
     КонецЕсли;

   // обработка выбора действия
     Если Действие = "Установить масштабирование формы" Тогда
           
           Масштаб      = 0;
           Если ВвестиЧисло(Масштаб, "Введите коэффициент масштабирования", 2, 0, 10) = 1 Тогда
                 СохранитьЗначение("Масштабирование_" + сПолныйТипОбъекта, Масштаб);
                 МасштабированиеФормы(КонтекстФормы);
           КонецЕсли;
           
     КонецЕсли;

КонецПроцедуры // глДействия()



=====================
В форме кнопка глДействия(Контекст)
Пользователь сам выбирает размер шрифта.
в процедуре ПослеОткрытия вызываем МасштабированиеФормы.

В МасштабированиеФормы читаем размер шрифта установленный пользователем для этой формы и .... ничего не получается  Смущённый
« Последняя редакция: 06. Ноября 2007 :: 16:21 - BuZZZard »  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать