Здравствуйте. Стоит задача Динамически подсчитывать количества символов с строке,
1)Пробовал Обработкой ожидания formEx но при срабатывании обработки выделается весь вводимый текст, и перезаписывается. Может я что то делаю не так?
2)слышать про TextBox из АктивИКС тоже можно такое реализовать, но ни где не нашел как его создать , сто писать в строке АктивИКС.СоздатьЭУ("????"); пробовал "microsoft forms 2.0 object library " , "MSForms"
пишет "Создание элемента управления MSForms.TextBox не удалось". Помогите кто сталкиваться с АктивИкс
---
dvk09, Спасибо большое именно то, что искал ! доделал немного добавил одну функция , а то в этом варианте при удалении символов, подсчет не обновлялся. доделал работает!.
А самое обидное что я пробовал создать объект textBox1=АтрФормы.СоздатьЭУ("Forms.TextBox") , а надо было textBox1=АтрФормы.СоздатьЭУ("Forms.TextBox.1"); Будем знать.
---
ToJIuK, Может ПриНажатииКнопкиКлавиатуры из FormEx ?
---
vcv, Это можно попробовать , Но все таки хочется textBox Победить ).
---
ToJIuK, Победишь, отпишись. Тоже очень интересно...
---
как написал vcv(2)
ПриНажатииКнопкиКлавиатуры из FormEx (1c++) самое очевидное решение вашей задачи
---
tandy82, (12) MirrorDen, Проблема в том, что пока поле не потеряет фокус, 1С не вернёт какие-либо изменения с нём. Сами проверьте, если, например ловить ПриНажатииКнопкиКлавиатуры и выводить Сообщить значение реквизита формы, то его значение не будет меняться, пока поле ввода не потеряет фокус.
Можно попробовать (сам не проверял) ловить нажатия кнопок, при нажатии вызывать закрытие формы Форма.Закрыть(0), а ПриЗакрытии делать СтатусВозврата(0). Но, боюсь, положение курсора не будет сохраняться.
Тут, скорее всего, нужно действовать через системные вызовы windows, что бы получить значение в поле ввода. Если встроенные средства безопасности не обломают такое подозрительное действие - из одного приложения получить текст в поле ввода в другом приложении.
---
Нет у нас программистов, которые с АктивИкс имели дело? Нужно помощь
---
Смотря куда считать символы:
Можно текстовое поле поставить с обновлением на форму
Из него вызывать функцию
( на пусть считает количество символов)
---
ra9000, текстовое поле поставить с обновлением на форму Это как? Пока на Enter не нажмешь, значение не получишь... А нужно раньше.
---
Просто интересно, а для чего сие требуется? Почему нельзя подсчитать символы после их ввода или ограничить ввод нужным количеством символов?
В крайнем случае, можно вводить симовлы с псевдо-виртуальной клавиатуры, тогда запросто отследить каждое нажатие.
---
Vlan, Необходимо для динамического подсчета количества символом , соответственно СМС, при отправке, ограничивать не надо просто нужно количество , набираешь текст, а он подсчитывает количество символов (определяет количество смс).
---
Vlan, Просто интересно, а для чего сие требуется?
Просто не понимаю, зачем заказчики такие вещи хотят?

Например им мало того, что они видят что им звонили, кто именно звонил... Им надо, чтобы это выглядело красочно)) А то на упущенные вызовы смотреть скучно)))
---
А не проще ли просто повесть обычную функцию на форму, и в ней просчитывать количество символов?
---
ПриНажатииКнопкиКлавиатуры действительно меняться не будет, а вот ПриОтжатииКнопкиКлавиатуры очень даже измениться
---
не работает.
---
dvk09, Попробовал не работает. Показывает только, то что уже введено. То есть таже проблема.
---
Это я на (14) ответил. А то так заявлено...)))
А что не работает, я знал.
---
А ОбработкаОжидания 1-2 раза в секунду?
---
v3rter, Читайте (13) "Проблема в том, что пока поле не потеряет фокус, 1С не вернёт какие-либо изменения с нём."
---
Вот это должно работать.
Нарыл на форуме 1cpp.
---
Только я тут долго не думал. Символы добавляются в конец текста.
Там есть намек, куда дальше рыть. Но у меня рабочий день закончился.
Я домой. Доведешь до ума, брось в этой ветке.
---
Кстати, только сейчас заметил, что это пример Ёпрста)))
Если что не так. Прошу сильно не пинать))
---
dvk09, Спасибо большое именно то, что искал ! доделал немного добавил одну функция , а то в этом варианте при удалении символов, подсчет не обновлялся. доделал работает!.
А самое обидное что я пробовал создать объект textBox1=АтрФормы.СоздатьЭУ("Forms.TextBox") , а надо было textBox1=АтрФормы.СоздатьЭУ("Forms.TextBox.1"); Будем знать.
---
Вот, немного скорректировал, чтобы работало нормально.
Нашел в том же месте, следующее сообщение за ЁПРСТом))

В общем ничего сам не сочинял.
---
Для версии 8.1.3.13 нашел еще способ.

Проверял для реквизита объекта (Форма элемента справочника)

```1c
    &НаКлиенте
    Процедура ОсновнойТекстИзменениеТекстаРедактирования(Элемент, Текст, СтандартнаяОбработка)
    Объект.ШаблонТекстаЯдро = Текст;
    ДлинаТекста = СтрДлина(Текст);
    УстановитьЗаголовокДекорации(ДлинаТекста);
    КонецПроцедуры

    &НаКлиенте
    Функция УстановитьЗаголовокДекорации(ДлинаТекста = 0)
    ОсталосьЗнаков = 1200-ДлинаТекста;
    ЗаголовокДекорации = СтрШаблон("Рекомендованное число символов: 1200; Осталось %1", Строка(ОсталосьЗнаков));
    Элементы.ДекорацияЗаголовокСимволов.Заголовок = ЗаголовокДекорации;
    КонецФункции
```
---
Для версии 8.1.3.13 нашел еще способ. А ничего, что тема жила в разделе "Платформа 1С v7.7 (все механизмы)"?

Так что вы вашу попытку сделать искусственное дыхание покойнице делаете... гм... не с той стороны.