![]() |
![]() |
![]() |
|
v7: Обработка. Поле ввода неограниченной длины. Как определить что текст в поле изменен..? | ☑ | ||
---|---|---|---|---|
0
Злопчинский
31.08.19
✎
00:17
|
Простая обработка.
На обработке поле строка, неограниченная многострочная. При открытии обработки в поле кладем текст (не сильно большой, краткое описание товара). Как определить что в поле текст изменен (клавишами, мышкой) - сразу после изменения (фокус остается на этом же поле)? (максимально приближено к штатно, формекс присутствует) - т.е. по сути смоделировать Модифицированность()..? . ? |
|||
1
Злопчинский
31.08.19
✎
00:22
|
||||
2
Злопчинский
31.08.19
✎
00:33
|
Пока в качестве теста извернулся так
Процедура ПриОтжатииКнопкиКлавиатуры(код, _а, _ш, _к, символ, ФСО) //а=фуМодифицированность(); //Если флТекстИзменен=1 Тогда РасширениеФормы.Обновить(); КонецЕсли; флТекстИзменен=1; Если флТекстИзменен=1 Тогда Форма.кнЗакрыть.Заголовок("Закрыть ( ИЗМЕНЕНИЯ НЕ СОХРАНЕНЫ )"); РасширениеФормы.Обновить(); КонецЕсли; КонецПроцедуры //ПриОтжатииКнопкиКлавиатуры() Работает, но экран промаргивает после каждого нажатия кнопки... И.. как-то не сильно красиво... |
|||
3
Злопчинский
31.08.19
✎
00:49
|
предварительно так, усовершенстовано предыдущее несущественно
Если Форма.АктивныйЭлемент()<>"ОписаниеТовара" Тогда Возврат; КонецЕсли; Если (код<32) И (код<13) Тогда Возврат; КонецЕсли; //непечатные символы флТекстИзменен=1; Если флТекстИзменен=1 Тогда Форма.кнЗакрыть.Заголовок("&Закрыть ( ИЗМЕНЕНИЯ НЕ СОХРАНЕНЫ )"); РасширениеФормы.Обновить(); КонецЕсли; |
|||
4
Злопчинский
31.08.19
✎
00:56
|
но, как например отследить операции вставки вырезания мышкой?
как понять, какая операция выполнялась мышкой? |
|||
5
GreyK
31.08.19
✎
01:39
|
(0) А что, формула не передает в модуль изменения?
|
|||
6
Злопчинский
31.08.19
✎
02:11
|
(5) какая формула? штатно пока фокус с реквизита не ушел - хрен ты что получишь по содержимому этого реквизита.
|
|||
7
GreyK
31.08.19
✎
02:29
|
(6) Формула скрытого текстового поля, которая сравнивает значение объявленной переменной, в которой хранится предыдущее значение этого текста, заметь не "крайнее", а то работать не будет.
|
|||
8
Злопчинский
31.08.19
✎
02:35
|
(7) пробовал. не катит. пока фокус с этого поля ввода не уйдет - хрен ты получишь измененной значение
|
|||
9
Злопчинский
31.08.19
✎
02:36
|
это я самое первое попробовал, хотя и знал что не взлетит ;-)
|
|||
10
GreyK
31.08.19
✎
02:42
|
(9) Ну подвесь обработку ожидания.
|
|||
11
Злопчинский
31.08.19
✎
02:45
|
и что она делать будет?
вдобавок с обработкой ожидания и активным полем ввода тоже не все хорошо, текст насколько мне помнится будет выделяться полностью |
|||
12
GreyK
31.08.19
✎
02:50
|
(11) Будет сравнивать изменения поля формы с предыдущим значением. Я с формексом не работаю, может там можно получить выделенный текст, не знаю короче.
|
|||
13
GreyK
31.08.19
✎
03:00
|
(11) А зачем делать отклик программы на редактирование диалога ввода.
Я сдаюсь, с обработкой у меня не получается, может сделать фейковый справочник, ну или специальную форму к существующему справочнику. |
|||
14
Злопчинский
31.08.19
✎
03:43
|
(12) не будет. пока фокус с поля не уйдет - новое значение в это поле не "запомнится". хотя на экране как бы оно набито и видно его
|
|||
15
Злопчинский
31.08.19
✎
03:43
|
(13) " может сделать фейковый справочник, ну или специальную форму к существующему справочнику."
- это я тоже с самого начала подумал. но это - некузяво. |
|||
16
Злопчинский
31.08.19
✎
03:45
|
(13) "А зачем делать отклик программы на редактирование диалога ввода. "
- шоб было!! открыл текст в поле. отвлекся. вернулся. курсор все еще в поле. уже нихера не помню правил что-то или нет. ХОЧУ ВИДЕТЬ ПРИЗНАК ЭТОГО - правил или нет. |
|||
17
Злопчинский
31.08.19
✎
03:46
|
(13) я сделал по кнопкам реагирует норм, промаргивает правда, но не сильно напрягает, с учетом того, что редактирвоание будет редко и мало.
|
|||
18
Злопчинский
31.08.19
✎
03:48
|
можно конечно тупо. при жмаке на кнопку закрыть - сравнивать текущий текст с исходным. если различие - вопрос...
но хотелось красиво... |
|||
19
Ёпрст
гуру
31.08.19
✎
03:53
|
(0) Штатно, только обновлением формы и шанец потери текста.
А так, любой активикс на форме решает проблему. Типа ActiveX TextBox |
|||
20
Злопчинский
31.08.19
✎
04:27
|
(19) не, активикс это излишества.
|
|||
21
Ёпрст
гуру
31.08.19
✎
04:29
|
(20) тогда мучайся
|
|||
22
Ёпрст
гуру
31.08.19
✎
04:30
|
можно конечно, либо tabledoc на форму кинуть, или йоксель и там ловить
|
|||
23
Ёпрст
гуру
31.08.19
✎
04:30
|
где-то там, точно ловит
|
|||
24
Злопчинский
31.08.19
✎
04:32
|
В итоге - отслеживание нажатий клавиш убрал, сделал типа как в (18).
При нажатии на кнопку "закрыть" - если не взведен флаг изменения - сравниваю текущий текст с исходным, взвожу флаг, надпись на кнопке закрытия - с флагом; - проверяю флаг изменения - вопрос 1. сохранить и выйти 2. выйти без сохранения 3.остаться в редактировании При перерисовке формы - если не взведен флаг изменения - сравниваю текущий текст с исходным, взвожу флаг, надпись на кнопке закрытия - с флагом; . В итоге получилось вполне ок. Что-то я в (0) перемудрил с хотелкой... ;-) Спсб. закрыто. |
|||
25
Ёпрст
гуру
31.08.19
✎
08:27
|
(24) хрень же.. У тебя текст на кнопке меняется только в момент её нажатия ?
)) |
|||
26
Сияющий в темноте
31.08.19
✎
12:24
|
у поля ввода можно запросить его текст,через системные вызовы,но не факт,что 1с корректно их отработает,хотя и должна.
SendMessage(hctrl,WM_GETTEXT,... вопрос только,откуда его вызывать. и,если "подогнать" dll к процессу,то можно все события окна перехватить через SubClassing,но это уже системное программирование. я для ввода текста открывал окно "осла" поверх 1с и в нем все события работали прекрасно,и текст в переменной менялся сразу,а не как в 1с,по окончании. |
|||
27
Злопчинский
31.08.19
✎
12:40
|
(25) Норм получислоь! вот видео https://www.screencast.com/t/k4Zgaq6tae
|
|||
28
Злопчинский
31.08.19
✎
12:40
|
(26) была мысль и такая, но я во вне1Сных приблудах не силен. да и явное излишество в этой задаче.
|
|||
29
Ёпрст
гуру
31.08.19
✎
13:11
|
(27) :)))
А вот разместил бы табледок, и получил бы текст на кнопке сразу |
|||
30
Злопчинский
31.08.19
✎
13:14
|
Эта, пиплы...
никто не делал "расширение" механизма подключения ВПФ как в ТиС, чтобы типовой код и механизм ВПФ юзать для подключения ВПФ к внешним ОБРАБОТКАМ. https://content.screencast.com/users/Che66/folders/Jing/media/6b5c321b-d58b-4a75-aacf-69475dcc81f3/2019-08-31_1250.png |
|||
31
Злопчинский
31.08.19
✎
13:14
|
(29) ну... ;-)
|
|||
32
Ёпрст
гуру
31.08.19
✎
13:16
|
(30) ща я посмотрю, вроде было у нас так
|
|||
33
Ёпрст
гуру
31.08.19
✎
13:17
|
прикручивали впф ко всему
|
|||
34
Ёпрст
гуру
31.08.19
✎
13:27
|
Не соврамши, для встроенных обработок тока прикручивал, для внешних, как-то и так можно было допилить любую форму печати
|
|||
35
Ёпрст
гуру
31.08.19
✎
13:28
|
для встроенных, там чутка кода в ВнешниеПечатныеФормы прикрутить и всё
|
|||
36
Злопчинский
31.08.19
✎
14:10
|
(35) ага, посмотри если можно и скинь если не в лом.
|
|||
37
Злопчинский
31.08.19
✎
14:10
|
e.meil@mail.ru
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |