Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Не работает ПослеОткрытия() в модальном режиме (число прочтений - 5896 )
Стрелок
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 134
Местоположение: Ukrane
Зарегистрирован: 31. Октября 2008
Пол: Мужской
Не работает ПослеОткрытия() в модальном режиме
10. Июля 2017 :: 11:48
Печать  
Ничего не могу понять.
Конфа пишется "с нуля" на 7.7
ПриНачалеРаботы последоваетельногрузятся 1cpp (3.2.4.1) и Formex (2.0.5.108)
все что надо работает. почти.
при попытке открыть форму модально не срабатывает "ПослеОткрытия". В этой процедуре у меня указано центрирование окна, убраны лишние служебные кнопки на форме и раскрывается дерево справочника через SendKeys. Вот код

Процедура ПослеОткрытия()
     Сообщить("бум бум");
     Эмулятор=СоздатьОБъект("WScript.Shell");      
     Эмулятор.SendKeys("+{TAB}");   
     Для Ном=1 По 50 Цикл            
           Сообщить("бум");
           Эмулятор.SendKeys("{RIGHT}");
           Эмулятор.SendKeys("{DOWN}");
     КонецЦикла;   
     Окно=СоздатьОбъект("Окна");    
     РасширениеФормы=СоздатьОбъект("РасширениеФормы");
     Форма_=РасширениеФормы.ПолучитьФорму();
     Окно.МенюОкна(Форма_,1,0,0,1);   
     Окно.ЦентрироватьОкно(Форма_);
КонецПроцедуры

В немодальном режиме сама процедура срабатывает но не работает разворот дерева. голову сломал. что за фигня то?
Заранее спасибо за хоть какие то намеки на причину
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 631
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Не работает ПослеОткрытия() в модальном режиме
Ответ #1 - 10. Июля 2017 :: 14:11
Печать  
ПослеОткрытия в модальных сломалось, кажется начиная со 105й версии.
Со 115 починено. Новую скачай или откатись.
Или используй аналог в 1с++ - ФормаПриСоздании
Центровать, насколько помню, форму не сможешь. В модальном режиме не все удается делать.
  
Наверх
www  
IP записан
 
Стрелок
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 134
Местоположение: Ukrane
Зарегистрирован: 31. Октября 2008
Пол: Мужской
Re: Не работает ПослеОткрытия() в модальном режиме
Ответ #2 - 10. Июля 2017 :: 18:35
Печать  
Так у меня до кучи еще и SendKeys не срабатывает ни в модальном ни в обычном режиме....

был в кладовочке Альфа - не нашел ничего новее чем версия 108. может кто ссылку даст на свежий релиз?
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 631
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Не работает ПослеОткрытия() в модальном режиме
Ответ #3 - 10. Июля 2017 :: 19:48
Печать  
Стрелок писал(а) 10. Июля 2017 :: 18:35:
был в кладовочке Альфа - не нашел ничего новее чем версия 108. может кто ссылку даст на свежий релиз?

Ты какую то старую кладовочку смотришь
http://dorex.pro/?projects&formex&download
[версия: 2.0.5.124 от 01.02.2017] сейчас

Обсуждение версии: http://www.forum.mista.ru/topic.php?id=788786&page=1
  
Наверх
www  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1537
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Не работает ПослеОткрытия() в модальном режиме
Ответ #4 - 11. Июля 2017 :: 07:16
Печать  
Если надо что-то с окном делать, то лучше использовать ПослеСозданияФормы. Это событие срабатывает после создания формы, но до показа окна. В ПослеОткрытия окно уже показано и все манипуляции с ним будут некрасиво моргать на экране.
  

FormEx developer
Наверх
www  
IP записан
 
Стрелок
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 134
Местоположение: Ukrane
Зарегистрирован: 31. Октября 2008
Пол: Мужской
Re: Не работает ПослеОткрытия() в модальном режиме
Ответ #5 - 02. Августа 2017 :: 22:26
Печать  
Еще вопрос по ПослеСозданияФормы

Не срабатывает центрирование. Т.е. форма открывается не по центру экрана а в том месте где закрывалась последний раз. Вот код

Процедура ПослеСозданияФормы() 
     Окно=СоздатьОбъект("Окна");    
     РасширениеФормы=СоздатьОбъект("РасширениеФормы");
     Форма_=РасширениеФормы.ПолучитьФорму();
     Окно.МенюОкна(Форма_,1,0,0,1);   
     Окно.ЦентрироватьОкно(Форма_);
КнецПроцедуры
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1537
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Не работает ПослеОткрытия() в модальном режиме
Ответ #6 - 03. Августа 2017 :: 06:12
Печать  
Центрируется только модальная форма. Этот метод для того, чтобы при изменении размеров формы выставить ее в центр экрана.
  

FormEx developer
Наверх
www  
IP записан
 
Стрелок
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 134
Местоположение: Ukrane
Зарегистрирован: 31. Октября 2008
Пол: Мужской
Re: Не работает ПослеОткрытия() в модальном режиме
Ответ #7 - 03. Августа 2017 :: 11:07
Печать  
АЛьФ писал(а) 03. Августа 2017 :: 06:12:
Центрируется только модальная форма. Этот метод для того, чтобы при изменении размеров формы выставить ее в центр экрана.


Понял спасибо...
Хотя жаль. Так хотелось выставлять формочку посредине экрана без привязке к разрешению и модальности окна.
  
Наверх
 
IP записан
 
Стрелок
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 134
Местоположение: Ukrane
Зарегистрирован: 31. Октября 2008
Пол: Мужской
Re: Не работает ПослеОткрытия() в модальном режиме
Ответ #8 - 03. Августа 2017 :: 11:10
Печать  
Леша еще один вопрос. Очень нестандартная задача. Есть некий текст в строке неограниченной длины на форме (многострочный) надо из него "надергать" слова в некий список. Что то вроде двойной клик по слову=>выделение слова=>копирование слова в список.
Как то я запутался. Если юзать "БуферОбена" то как пнуть систему что туда нужно выделение скопировать? А если ПриДвойномНажатииЛевойКнопки то как понять что слово выделено а не ткнули дважды мышкой в пробел?
Нарисовал кнопку "скопировать в буфер" а на процедуре которую надо подвесить на эту кнопку завис
Может чего подскажешь чтобы новую тему не создавать.
Заранее спасибо
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1537
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Не работает ПослеОткрытия() в модальном режиме
Ответ #9 - 04. Августа 2017 :: 05:09
Печать  
Стрелок писал(а) 03. Августа 2017 :: 11:10:
Леша еще один вопрос. Очень нестандартная задача. Есть некий текст в строке неограниченной длины на форме (многострочный) надо из него "надергать" слова в некий список. Что то вроде двойной клик по слову=>выделение слова=>копирование слова в список.
Как то я запутался. Если юзать "БуферОбена" то как пнуть систему что туда нужно выделение скопировать? А если ПриДвойномНажатииЛевойКнопки то как понять что слово выделено а не ткнули дважды мышкой в пробел?
Нарисовал кнопку "скопировать в буфер" а на процедуре которую надо подвесить на эту кнопку завис
Может чего подскажешь чтобы новую тему не создавать.
Заранее спасибо


Ну, первое что в голову приходит - попробовать эмулировать нажатие Ctrl+C.
  

FormEx developer
Наверх
www  
IP записан
 
Стрелок
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 134
Местоположение: Ukrane
Зарегистрирован: 31. Октября 2008
Пол: Мужской
Re: Не работает ПослеОткрытия() в модальном режиме
Ответ #10 - 05. Августа 2017 :: 01:35
Печать  
АЛьФ писал(а) 04. Августа 2017 :: 05:09:
Стрелок писал(а) 03. Августа 2017 :: 11:10:
Леша еще один вопрос. Очень нестандартная задача. Есть некий текст в строке неограниченной длины на форме (многострочный) надо из него "надергать" слова в некий список. Что то вроде двойной клик по слову=>выделение слова=>копирование слова в список.
Как то я запутался. Если юзать "БуферОбена" то как пнуть систему что туда нужно выделение скопировать? А если ПриДвойномНажатииЛевойКнопки то как понять что слово выделено а не ткнули дважды мышкой в пробел?
Нарисовал кнопку "скопировать в буфер" а на процедуре которую надо подвесить на эту кнопку завис
Может чего подскажешь чтобы новую тему не создавать.
Заранее спасибо


Ну, первое что в голову приходит - попробовать эмулировать нажатие Ctrl+C.


Пробовал. Как только нажимаю на кнопку фокус с многострочного текста уходит и в буфере пусто
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1537
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Не работает ПослеОткрытия() в модальном режиме
Ответ #11 - 07. Августа 2017 :: 07:51
Печать  
Так можно вернуть фокус обратно.

Код
Выбрать все
	АтрибутФормы = СоздатьОбъект("АтрибутФормы");
	АтрибутФормы.УстановитьАтрибут(Форма, "МойРеквизит");
	АтрибутФормы.Фокус = 1;
 

  

FormEx developer
Наверх
www  
IP записан
 
Стрелок
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 134
Местоположение: Ukrane
Зарегистрирован: 31. Октября 2008
Пол: Мужской
Re: Не работает ПослеОткрытия() в модальном режиме
Ответ #12 - 10. Августа 2017 :: 07:12
Печать  
Леша спасибо за наводку. Правда получилось все равно кривовато. Только так работает :

//************************************
Процедура ПриДвойномНажатииЛевойКнопки(С,КПГ,КПВ,ФСО)
     Если Форма.АктивныйЭлемент()="ТекстИнформации" Тогда
           Эмулятор=СоздатьОБъект("WScript.Shell");      
           Эмулятор.SendKeys("^{INSERT}");      
     КонецЕсли;      
КонецПроцедуры
//************************************
Процедура БуферРабота()
     //АтрибутФормы=СоздатьОбъект("АтрибутФормы");
     //АтрибутФормы.УстановитьАтрибут(Форма, "ТекстИнформации");
     //АтрибутФормы.Фокус=1;
    СтрокаБуфера=Буфер.Получить();
    Сообщить(СтрокаБуфера);
КонецПроцедуры

Фокус закомментировал потому как не срабатывает все равно. Т.е. мне приходится отрабатывать вначале двойной клик и помещать в буфер а уж потом кнопкой из буфера вставлять. Но тут еще одна проблема нарисовалась - при таком коде курсор в многострочном реквизите "улетает" в самое начало текст. А текст например на два экрана. Неудобно....
  
Наверх
 
IP записан
 
Стрелок
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 134
Местоположение: Ukrane
Зарегистрирован: 31. Октября 2008
Пол: Мужской
Re: Не работает ПослеОткрытия() в модальном режиме
Ответ #13 - 10. Августа 2017 :: 07:15
Печать  
Как можно получив координаты курсора (двойного нажатия левой кнопки мышки) вернуть обратно курсор в это же место?
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1537
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Не работает ПослеОткрытия() в модальном режиме
Ответ #14 - 10. Августа 2017 :: 07:22
Печать  
Стрелок писал(а) 10. Августа 2017 :: 07:15:
Как можно получив координаты курсора (двойного нажатия левой кнопки мышки) вернуть обратно курсор в это же место?


Боюсь, что никак. С курсором в текстовом поле старая запара.
  

FormEx developer
Наверх
www  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать