Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Горячая тема (более 10 ответов) мини-класс "КрасиваяКнопка" (число прочтений - 12500 )
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 851
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: мини-класс "КрасиваяКнопка"
Ответ #15 - 07. Ноября 2012 :: 12:05
Печать  
Да, интересное решение.

А на счет картинки - это нужно подождать chessman-а. Он говорил, что попробует вытащить идентификатор картинки у кнопки. Если он это сделает, то тогда не нужно будет изменять Идентификаторы для кнопок с картинками. Как это делаю я сейчас при замене на АктивИкс.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 851
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: мини-класс "КрасиваяКнопка"
Ответ #16 - 25. Января 2013 :: 13:13
Печать  
aou1c, расскажи, как ты переносишь фокус на маленькую кнопку, в которую копируешь формулу?
Это ж нужно, что бы Сервис.ЭмулироватьКлавиатуру("{Enter}") нажал именно её, а не 3D-кнопку.

Что-то у меня не получилось этого сделать. Эмуляция срабатывает на 3D.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
aou1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 183
Местоположение: Екатеринбург
Зарегистрирован: 29. Мая 2006
Пол: Мужской
Re: мини-класс "КрасиваяКнопка"
Ответ #17 - 07. Февраля 2013 :: 10:02
Печать  
alyuev писал(а) 25. Января 2013 :: 13:13:
aou1c, расскажи, как ты переносишь фокус на маленькую кнопку, в которую копируешь формулу?
Это ж нужно, что бы Сервис.ЭмулироватьКлавиатуру("{Enter}") нажал именно её, а не 3D-кнопку.

Что-то у меня не получилось этого сделать. Эмуляция срабатывает на 3D.


Функция Событие_ОбработкаВнешнегоСобытия(Источник,Событие,Данные) Экспорт
     если Источник="КрасиваяКнопка" Тогда
           если Событие = "НажатаКнопка" Тогда
                 Расш = СоздатьОбъект("РасширениеФормы");
                 Расш.УстановитьФорму(_КонтекстФормы.Форма);
                 ИдКнопки = _КонтекстФормы.Форма.АктивныйЭлемент();
                 Кнопка = Расш.ПолучитьАтрибут(ИдКнопки);
                 Лево = 0;Верх=0;Ширина=0;Высота=0;



                 Кнопка.ПолучитьКоординаты(Лево,Верх,Ширина,Высота);
                 
                 если Расш.НайтиАтрибут(2,"__Кнопка")=1 Тогда
                       Атрибут = Расш.ПолучитьАтрибут("_кн");
                 Иначе
                       Атрибут = Расш.ДобавитьАтрибут("_кн",3);
                 КонецЕсли;
                 Атрибут.УстановитьКоординаты(Лево,Верх+Высота,1,1);
                 Атрибут.Заголовок = "__Кнопка";
                 Атрибут.Формула = Данные;
                 Атрибут.Видимость = 1;
                 Сервис = СоздатьОбъект("Сервис");
                 _КонтекстФормы.Активизировать("_кн");
                 Сервис.ЭмулироватьКлавиатуру("{ENTER}",0);
           КонецЕсли;
           //Сервис.ВыполнитьПроцедуру(_КонтекстФормы,Данные);
     КонецЕсли;
     Возврат  _Перехватчик.ВыполнитьСобытиеГК(_ПредОбработчикСобытий, _КонтекстФормы, "ОбработкаВнешнегоСобытия",Источник,Событие,Данные);
КонецФункции
  
Наверх
ICQ  
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 851
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: мини-класс "КрасиваяКнопка"
Ответ #18 - 07. Февраля 2013 :: 11:55
Печать  
aou1c, Спасибо! Получилось.

Осталось одно НО. Не получается разобраться с кнопкой по умолчанию - для которой поставлен флажок в её свойствах - как прочитать это свойство? У нас часто пользуются комбинацией Ctrl+Enter.
Да и свойство "Горячие клавиши" тоже бы желательно получать.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
aou1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 183
Местоположение: Екатеринбург
Зарегистрирован: 29. Мая 2006
Пол: Мужской
Re: мини-класс "КрасиваяКнопка"
Ответ #19 - 08. Февраля 2013 :: 15:47
Печать  
а с картинками разобрался?

Кнопка по умолчанию, одна на форме, можно и вручную навесить.
Горячая клавиша на кнопке, вроде там спец. символ в идентификаторе ставят, чтоб подсвечивать горячую клавишу.
  
Наверх
ICQ  
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 851
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: мини-класс "КрасиваяКнопка"
Ответ #20 - 10. Декабря 2018 :: 09:51
Печать  
Класс подключается строкой в defcls.prm:

Код (C++)
Выбрать все
класс КрасиваяКнопка = КрасиваяКнопка.ert:АктивИкс {}	//// Класс для подмены стандартных кнопок на ActiveX кнопки. Заменяются только те, у которых есть идентификатор 

  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать