Имя: Пароль:
1C
1С v8
Как получить положение каретки в поле ввода
,
0 MaxisUssr
 
17.07.13
11:15
Как?
1 Wobland
 
17.07.13
11:17
на зачем?
2 MaxisUssr
 
17.07.13
11:20
(1)
Есть тут одна задача - поставить цифру в качестве горячих клавиш, из-за этого появляются проблемы с полями ввода... Если сильный гемор будет - придется задачу переформулировать
3 AdrianBerk
 
17.07.13
11:25
то есть пользователь нажимает цифру 6 например, но она не должна вводиться в  полле вода  а  должно отрабатываться какое либо событие???  может лучше огласить первоначальную задачу. Я думаю должен быть способ решить ее изящно =)
4 Wobland
 
17.07.13
11:26
а если юзер всё же сильно захочет ввести цифру 6, он может написать строкой "шесть"?
5 AdrianBerk
 
17.07.13
11:27
неужели юзеру трудно нажать вместе  с цифрой шесть например alt или ctrl =)
6 palpetrovich
 
17.07.13
11:28
а что такое "положение каретки в поле ввода"?  
активно-ли в данный момент поле ввода или в каком именно месте поля ввода находится курсор?
7 mzelensky
 
17.07.13
11:28
(2) "поставить цифру в качестве горячих клавиш" - это как? Проста назначить горячую клавишу?
8 AdrianBerk
 
17.07.13
11:33
может это поможет....
Расширение поля формы для поля ввода (Form field extension for a text box)
ПолучитьГраницыВыделения (GetTextSelectionBounds)
Синтаксис:

ПолучитьГраницыВыделения(<НачалоСтроки>, <НачалоКолонки>, <КонецСтроки>, <КонецКолонки>)
Параметры:

<НачалоСтроки> (обязательный)

Тип: Число.
Номер строки начала выделения.
<НачалоКолонки> (обязательный)

Тип: Число.
Номер колонки начала выделения.
<КонецСтроки> (обязательный)

Тип: Число.
Номер строки конца выделения.
<КонецКолонки> (обязательный)

Тип: Число.
Номер колонки конца выделения.
Возвращаемое значение:

Возвращает позицию курсора.
Описание:

Получает границы выделенной области текста.
9 MaxisUssr
 
17.07.13
11:34
Оглашу задачу:
есть панель телефонии, она работает. Идет много входящих звонков. При нажатии на цифру должна браться трубка с канала, указанного в цифре (1, 2)

(8)
Попробую щас, спасибо!!
10 AdrianBerk
 
17.07.13
11:43
А вообще... нажимать на цифру чтобы поднять трубку.... при том что цифра еще  и  в  поле ввода.... как то... или  я  не понял до конца... в моем понимании должен быть кнопочный графический интерфейс... просто кнопка  с  названием канала, а  уж она отрабатывает событие... зачем усложнять...
11 MaxisUssr
 
17.07.13
11:44
(10)
Кнопка есть, но она мелкая - им не удобно на нее жать. Поле ввода в форме одно - поле ввода номера телефона - для него и ввожу исключение.
12 AdrianBerk
 
17.07.13
11:48
Сделай отработку события по двойному щелчку по данному полю... а  цифры анализируй сам программно, на какой канал там послать звонок... двойной клик же отличается от ввода  и  редактирования текста... и не будет заморочек... или им принципиально с  клавиатуры нажимать?
13 MaxisUssr
 
17.07.13
11:51
(12)
Принципиально с клавиатуры, НЕ интерактивно
14 MaxisUssr
 
17.07.13
12:03
В общем выкрутился так:

Процедура ГорячаяКлавиша(Кнопка)
   
   Цифра = Число(Прав(Кнопка.Имя, 1));
   
   СтрокаНач=0;
   СтрокаКон=0;
   КолонкаНач=0;
   КолонкаКон=0;

   Если ТекущийЭлемент = ЭлементыФормы.НомерАбонента тогда
       ТекущийЭлемент.ПолучитьГраницыВыделения(СтрокаНач, СтрокаКон, КолонкаНач, КолонкаКон);
       
       ДоВыделения    = Лев(ТекущийЭлемент.Значение  , СтрокаКон - 1);
       ПослеВыделения = Прав(ТекущийЭлемент.Значение , СтрДлина(ТекущийЭлемент.Значение) - (СтрокаКон - 1));
       
       НаВывод = ДоВыделения + Цифра + ПослеВыделения;
       ТекущийЭлемент.Значение = "";
       ТекущийЭлемент.ВыделенныйТекст = НаВывод; //Цифра; //Строка(ТекущийЭлемент.Значение);
       
       Если СтрДлина(НаВывод) > СтрокаКон тогда
           ТекущийЭлемент.УстановитьГраницыВыделения(СтрокаКон + 1, СтрокаКон + 1);
       КонецЕсли;
       Возврат;    
   КонецЕсли;
       
   Если Цифра > 0 тогда
       ПринятьЗвонок(Цифра);    
   ИначеЕсли Цифра = 0 тогда
       
   КонецЕсли;
   
КонецПроцедуры
15 palpetrovich
 
17.07.13
12:11
хм, зачем все это:

...
Возврат;    
КонецЕсли;

...
ИначеЕсли Цифра = 0 тогда
КонецЕсли;
16 AdrianBerk
 
17.07.13
12:18
=) главное что работает, к большинству красота  и правильность кода приходит с  опытом, и  лишь единицы рождаются уже зная весь синтаксис 1С =)
17 MaxisUssr
 
17.07.13
12:30
(15)
Это недописанные куски - там будет еще код, я показал лишь то, о чем спрашивал