Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Мини-класс для непосредственного ввода в элементах диалога V7.7 (число прочтений - 6680 )
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Мини-класс для непосредственного ввода в элементах диалога V7.7
27. Июня 2012 :: 10:50
Печать  
Потестите, кому не лень.

Идея для класса содрана отсюда : http://infostart.ru/public/140861/

Используя фичу с Форма.ТолькоПросмотр(0) позволяет вводить текст во всех реквизитах диалога на форме.
Используя этот "эффект",
класс позволяет искать по наименованию среди элементов справочника. Поиск идет по "like", разделитель слов пробел.
Работает для sql и dbf варианта.
Для работы требуется 1cpp.dll, formex.dll, dynawrap.dll,

для дбф еще и 1sqlite.dll


Для подключения в глобальничке:

Код
Выбрать все
Процедура ПриНачалеРаботыСистемы()

    ЗагрузитьВнешнююКомпоненту("1cpp.dll");

    Настройки=СоздатьОбъект("УправлениеНастройками");

    Настройки.Сбросить("Проверка типов");

    Настройки.Сбросить("Отладка");  

     //Настройки.Сбросить("Оптимизация");  

     Настройки.Включить("Оптимизация");  

     Настройки.Включить("TurboBL");  

     Настройки.Включить("ПерехватитьСобытияГК");    

     Перехватчик = СоздатьОбъект("Перехватчик");  

     ПерехватчикСобытийГМ = СоздатьОбъект("АляВосьмерка");

     Перехватчик.ПерехватитьСобытияГлобальногоМодуля(ПерехватчикСобытийГМ);    

     ЗагрузитьВнешнююКомпоненту("formex.dll");  

     ЗагрузитьВнешнююКомпоненту("1sqlite.dll"); 




http://infostart.ru/public/141197/
« Последняя редакция: 27. Июня 2012 :: 17:40 - Eprst »  

_____________004.rar ( 8 KB | Загрузки )
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Мини-класс для непосредственного ввода в элементах диалога V7.7
Ответ #1 - 27. Июня 2012 :: 11:28
Печать  
Интересная задумка.
Вот только если у мене уже Перехват включен.
Придеться я так понимаю допиливать?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Мини-класс для непосредственного ввода в элементах диалога V7.7
Ответ #2 - 27. Июня 2012 :: 11:51
Печать  
В принципе - да (я у себя так сделал, мне так проще)
Хотя, я особо не баловался с несколькими перехватчиками, которые по-идее, должны работать независимо друг от друга.
  
Наверх
 
IP записан
 
nicesc
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 53
Зарегистрирован: 13. Июня 2009
Пол: Мужской
Re: Мини-класс для непосредственного ввода в элементах диалога V7.7
Ответ #3 - 27. Июня 2012 :: 12:40
Печать  
Здорово! Только меня работает без библиотеки dynawrap.dll, она точно нужна?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Мини-класс для непосредственного ввода в элементах диалога V7.7
Ответ #4 - 27. Июня 2012 :: 13:00
Печать  
nicesc писал(а) 27. Июня 2012 :: 12:40:
Здорово! Только меня работает без библиотеки dynawrap.dll, она точно нужна?


нужна, просто она у тебя уже есть и зарегистрирована в системе..
  
Наверх
 
IP записан
 
sava
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 56
Зарегистрирован: 18. Февраля 2010
Пол: Мужской
Re: Мини-класс для непосредственного ввода в элементах диалога V7.7
Ответ #5 - 27. Июня 2012 :: 14:02
Печать  
В табличной части - не срабатывает (лыжи не едут....)
1sqlite.dll (26 релиз - для 23 не пойдет запрос)
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Мини-класс для непосредственного ввода в элементах диалога V7.7
Ответ #6 - 27. Июня 2012 :: 14:03
Печать  
sava писал(а) 27. Июня 2012 :: 14:02:
В табличной части - не срабатывает (лыжи не едут....)


не.. там просто эта "фича" с ТолькоПросмотр(0) не канает Печаль(

а жаль Печаль
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Мини-класс для непосредственного ввода в элементах диалога V7.7
Ответ #7 - 28. Июня 2012 :: 09:27
Печать  
В свое время ADirks уже делал набор классов по сабжу - а потом мы совместно дорабатывали его для разных провайдеров ДБФ
Чем его работа не устраивает?
не было никакой привязки к ТолькоПросмотр(0) - работало 100%
насчет табличной части, правда, не помню.
ЗЫ публикация должна быть в репозитарии.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Alexx_S
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 41
Местоположение: UA
Зарегистрирован: 23. Сентября 2009
Пол: Мужской
Re: Мини-класс для непосредственного ввода в элементах диалога V7.7
Ответ #8 - 28. Июня 2012 :: 18:23
Печать  
artbear писал(а) 28. Июня 2012 :: 09:27:
ЗЫ публикация должна быть в репозитарии.

Если есть ссылочка киньте пожалуйста
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


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

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Мини-класс для непосредственного ввода в элементах диалога V7.7
Ответ #9 - 28. Июня 2012 :: 19:06
Печать  
http://www.1cpp.ru/forum/YaBB.pl?num=1169222935/156#156 ищи там "СоздатьПоляВыбораАля8НаФорме"
  

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


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Мини-класс для непосредственного ввода в элементах диалога V7.7
Ответ #10 - 29. Июня 2012 :: 10:44
Печать  
Eprst писал(а) 27. Июня 2012 :: 11:51:
В принципе - да (я у себя так сделал, мне так проще)
Хотя, я особо не баловался с несколькими перехватчиками, которые по-идее, должны работать независимо друг от друга.


Перехватчики работают НЕ независимо друг от друга.
Метод ПерехватитьСобытияГК() возвращает текущий обработчик событий (или Неопределено, если перехватчиков еще не навешано и события обрабатывает непосредственно форма).
И чтобы нормально все работало надо запоминать предыдущий перехватчик и, при обработке события, ручками делать вызов ВыполнитьСобытиеГК(), указывая запомненный обработчик в первом параметре.

Собственно, в ветке про перехват я подробно расписывал свою технологию, позволяющую более-менее удобным способом автоматизировать передачу исполнения между навешанными на одну форму перехватчиками.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Мини-класс для непосредственного ввода в элементах диалога V7.7
Ответ #11 - 02. Июля 2012 :: 10:22
Печать  
artbear писал(а) 28. Июня 2012 :: 09:27:
В свое время ADirks уже делал набор классов по сабжу - а потом мы совместно дорабатывали его для разных провайдеров ДБФ
Чем его работа не устраивает?
не было никакой привязки к ТолькоПросмотр(0) - работало 100%
насчет табличной части, правда, не помню.
ЗЫ публикация должна быть в репозитарии.


В той работе придётся для каждого элемента управления описывать действия..
Тут же  - подключил один раз класс и привет - "работает" везде (хотя это и не очень правильно).
Да и.. просто, как демонстрация штатненького бага платформы.
  
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Мини-класс для непосредственного ввода в элементах диалога V7.7
Ответ #12 - 06. Июля 2012 :: 17:21
Печать  
Eprst писал(а) 02. Июля 2012 :: 10:22:
artbear писал(а) 28. Июня 2012 :: 09:27:
В свое время ADirks уже делал набор классов по сабжу - а потом мы совместно дорабатывали его для разных провайдеров ДБФ
Чем его работа не устраивает?
не было никакой привязки к ТолькоПросмотр(0) - работало 100%
насчет табличной части, правда, не помню.
ЗЫ публикация должна быть в репозитарии.


В той работе придётся для каждого элемента управления описывать действия..
Тут же  - подключил один раз класс и привет - "работает" везде (хотя это и не очень правильно).
Да и.. просто, как демонстрация штатненького бага платформы.


Хорошо работает. Надо бы добавить исправления по реквизитам, у которых Доступность = 0.
Например в классе поменять процедуру на:
Код
Выбрать все
//======================================================================
Функция Событие_ПослеСозданияФормы() Экспорт
	флТолькоПросмотр = КонтФормы.Форма.ТолькоПросмотр();
	Если флТолькоПросмотр=0 Тогда
		КонтФормы.Форма.ТолькоПросмотр(0);//включаем "редактирование полей диалога"
		Атр = Расшф.ДобавитьАтрибут("флПриНачалеВыбораЗначения",2,"Число");
		Атр.Видимость=0;
		Для к = 0 По РасшФ.КоличествоАтрибутов() - 1 Цикл
		    АтрФормы = РасшФ.ПолучитьАтрибут(к);
			Если (АтрФормы.Тип=2) И (АтрФормы.Доступность = 1) Тогда	//	2 - 1CEDIT (Поле ввода)
			    АтрФормы.Формула = "ДопФормула(Контекст);"+СокрЛП(АтрФормы.Формула);
			    АтрФормы.АвтоВыбор=0;
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	Возврат	Перехватчик.ВыполнитьОригинальноеСобытиеГК(КонтФормы,"ПослеСозданияФормы");
КонецФункции
 



Только не понял как сделать чтобы недоступный атрибут не возможно было редактировать (вводить символы).
  
Наверх
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Мини-класс для непосредственного ввода в элементах диалога V7.7
Ответ #13 - 09. Июля 2012 :: 09:14
Печать  
Еще раз ему доступность в 0 выставить попробовать
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать