Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Горячая тема (более 10 ответов) Активизация многострочного поля ввода с позиционированием курсора (число прочтений - 12420 )
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Активизация многострочного поля ввода с позиционированием курсора
Ответ #15 - 17. Октября 2011 :: 01:13
Печать  
Satans Claws писал(а) 14. Октября 2011 :: 10:56:
chessman писал(а) 13. Октября 2011 :: 05:27:
Можно еще перехватить процедуру окна.
ээээ *туплю*
Читать как "перехватить процедуру обновления окна"?
Подчеркни, что между звездами.
В винде все окна имеют процедуру-вертушку, обрабатывающую сообщения и реагирующую на них... это основной принцип оконного интерфейса винды...
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Активизация многострочного поля ввода с позиционированием курсора
Ответ #16 - 17. Октября 2011 :: 09:30
Печать  
Мини-пример перехвата сообщений Windows.
EDIT_CONTROL больше не выделяется, при получении фокуса.
В мсдн написано, еще что-то про стиль контрола. Возможно, если его поменять, тогда и перехват не потребуется.
  

ED_CTRL.ert ( 8 KB | Загрузки )
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Активизация многострочного поля ввода с позиционированием курсора
Ответ #17 - 18. Октября 2011 :: 03:49
Печать  
О, спасибо, попробую.
Щас разгребусь с очередным завалом и уделю время программингу "для души" Улыбка
  
Наверх
 
IP записан
 
mszsuz
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 33
Зарегистрирован: 18. Октября 2010
Re: Активизация многострочного поля ввода с позиционированием курсора
Ответ #18 - 18. Октября 2011 :: 06:56
Печать  
chessman писал(а) 17. Октября 2011 :: 09:30:
Мини-пример перехвата сообщений Windows.
EDIT_CONTROL больше не выделяется, при получении фокуса.
В мсдн написано, еще что-то про стиль контрола. Возможно, если его поменять, тогда и перехват не потребуется.

Отлично работает! А как добавить ещё один контрол этой формы?
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Активизация многострочного поля ввода с позиционированием курсора
Ответ #19 - 18. Октября 2011 :: 07:03
Печать  
Их иожно привязать к одной процедуре из скрипта(сделать по аналогии), т.к. родная процедура у них одна, так что все должно работать.
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Активизация многострочного поля ввода с позиционированием курсора
Ответ #20 - 03. Ноября 2011 :: 09:00
Печать  
Бгг
выкроил время "для души" - удалось обойтись почти штатными методами.

Код
Выбрать все
ТипРеквизитаДиалога = 0;
РеквизитДиалога = "";
фНужноРеАктивизироватьТекущуюФорму = 0;
Конт = "";
Сервис = СоздатьОбъект("Сервис");
Если Сервис.АктивныйКонтекст(Конт) <> 1 Тогда
	фНужноРеАктивизироватьТекущуюФорму = -1;
ИначеЕсли ТипЗначенияСтр(Конт) <> "Таблица" Тогда
	оФорма = СоздатьОбъект("РасширениеФормы");
	оФорма.УстановитьФорму(Конт.Форма);

	РеквизитДиалога		= Конт.Форма.АктивныйЭлемент();
	ТипРеквизитаДиалога	= оФорма.ПолучитьАтрибут(РеквизитДиалога).Тип;
КонецЕсли;
 



ну а потом

Код
Выбрать все
Если фНужноРеАктивизироватьТекущуюФорму > 0 Тогда
	Попытка
		Если ТипЗначенияСтр(Конт) = "Таблица" Тогда
			Конт.Показать(,, 1);
		Иначе
			Конт.Активизировать(РеквизитДиалога);
			Если ТипРеквизитаДиалога = 2 Тогда
				Сервис.ЭмулироватьКлавиатуру("^{END}");
			КонецЕсли;
		КонецЕсли;
	Исключение
	КонецПопытки;
КонецЕсли;
 



Попытно выяснив один эффект, способный взорвать мозг при попытке его анализа:

Если в конце делать не Конт.Активизировать(РеквизитДиалога);
а просто Конт.Активизировать(); - то в некоторых случаях активный элемент сохраняется, а в некоторых - не сохраняется (активным становится самый левый-верхний элемент).
По первичным наблюдениям - НЕ сохраняется для форм отчетов/обработок и форм журналов документов.
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


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

Сообщений: 854
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Активизация многострочного поля ввода с позиционированием курсора
Ответ #21 - 30. Марта 2022 :: 14:52
Печать  
Забавно. Сейчас опять столкнулся с этой проблемой - выделения текста в многострочном поле.
Многострочное поле во внешнем отчете. Сделал для него отдельную закладку и слой. На слое поле одно.

Так вот я чего-то решил добавить еще какой-то элемент формы - в частности это получилось с кнопкой - и в обходе реквизитов поставил кнопку выше этого многострочного поля. После этого при переходе на закладку - текст уже не выделяется.
  

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