Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Горячая тема (более 10 ответов) Не работает ПослеОткрытия() в модальном режиме (число прочтений - 5894 )
Стрелок
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 записан
 
Стрелок
Full Member
***
Отсутствует


I Love YaBB 2!

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


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


печаль.... ладно буду думать как обойти эту ситуацию.
Леш так а чего не срабатывает Фокус? Я вообще хотел обойтись без ПриДвойномНажатии и помещать в буфер и читать из него только в процедуре по кнопке - а зась. не работает. не понимает 1С что надо вернуться на поле и там уже отработать вставку в буфер
  
Наверх
 
IP записан
 
Стрелок
Full Member
***
Отсутствует


I Love YaBB 2!

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



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


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


печаль.... ладно буду думать как обойти эту ситуацию.
Леш так а чего не срабатывает Фокус? Я вообще хотел обойтись без ПриДвойномНажатии и помещать в буфер и читать из него только в процедуре по кнопке - а зась. не работает. не понимает 1С что надо вернуться на поле и там уже отработать вставку в буфер


Скорее всего смена фокуса отрабатывает после окончания работы всего кода.
  

FormEx developer
Наверх
www  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



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


Насколько я помню, подобную задачу решали размещением на форме текста RTF в активиксе.
  

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


I Love YaBB 2!

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


Так и есть Печаль
Уже проверил и убедился
  
Наверх
 
IP записан
 
Стрелок
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 134
Местоположение: Ukrane
Зарегистрирован: 31. Октября 2008
Пол: Мужской
Re: Не работает ПослеОткрытия() в модальном режиме
Ответ #20 - 10. Августа 2017 :: 08:32
Печать  
АЛьФ писал(а) 10. Августа 2017 :: 08:22:
Стрелок писал(а) 10. Августа 2017 :: 07:35:
И сразу обратная задача - есть слово в списке. надо найти все вхождения этого слова в текст и выделить это слово в тексте во всех местах где оно встречается. Улыбка
Альтернативу то я придумал - ищем, помещаем в таблицу позиции от начала текста а дальше навигация аналогичная веб-странички. Но опять же - как поместить курсор в нужную позицию? СендКейсом? Кривовато как то. А хочется то совсем красиво Улыбка


Насколько я помню, подобную задачу решали размещением на форме текста RTF в активиксе.


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



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


Навскидку не смогу подсказать.
  

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


I Love YaBB 2!

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


Навскидку не смогу подсказать.

Ладно, буду искать...

Ты извини - но я тебе немного еще подостаю по ФормЕксу если ты не против. Большая работа и активно приходится пользовать. Гораздо больше и шире чем раньше.

На форме элемента справочника есть список. Заполняется извне по условию (галочка на форме
НЕ реквизит справочника). Как только ставлю галочку тут же взводится флаг модифицированности и соответственно возникает вопрос при закрытии хотя ничего не меняли - просто изменили условие заполнения списка. Пробовал СбросМодифицированности() в процедуре привязанной к обработке значения флажка - не срабатывает. Только псевдозапись поможет?
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1537
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Не работает ПослеОткрытия() в модальном режиме
Ответ #23 - 10. Августа 2017 :: 12:22
Печать  
Стрелок писал(а) 10. Августа 2017 :: 09:31:
АЛьФ писал(а) 10. Августа 2017 :: 08:53:
Стрелок писал(а) 10. Августа 2017 :: 08:32:
спасибо за наколку.... а где посмотреть не подскажешь?


Навскидку не смогу подсказать.

Ладно, буду искать...

Ты извини - но я тебе немного еще подостаю по ФормЕксу если ты не против. Большая работа и активно приходится пользовать. Гораздо больше и шире чем раньше.

На форме элемента справочника есть список. Заполняется извне по условию (галочка на форме
НЕ реквизит справочника). Как только ставлю галочку тут же взводится флаг модифицированности и соответственно возникает вопрос при закрытии хотя ничего не меняли - просто изменили условие заполнения списка. Пробовал СбросМодифицированности() в процедуре привязанной к обработке значения флажка - не срабатывает. Только псевдозапись поможет?


Так может лучше мэйлом? alf@dorex.pro
На форме явно что-то меняется. Надо искать в тексте. Начать с того, что вообще с галки убрать вызов функции. Потом содержимое функции заремарить и постепенно разремаривая посмотреть какая строка дает изменение формы.
  

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


I Love YaBB 2!

Сообщений: 134
Местоположение: Ukrane
Зарегистрирован: 31. Октября 2008
Пол: Мужской
Re: Не работает ПослеОткрытия() в модальном режиме
Ответ #24 - 10. Августа 2017 :: 12:50
Печать  
ОК
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать