Контролируемый ввод текста в поле
IOField
Павел; 25.6.04
Задача при вводе текста в поле ввода/вывода необходимо после
каждого нового добавленного символа производить действие связанное
с тем что вводится. Проблемы- цеплятса за изменение поля Инпут -
бесполезно, т.к. оно меняется только по нажатию кнопы Интер, за
поле Оутпут - вообще не то. Заявленное свойство - Немедленный ввод
- не помогает и вообще с ним или без него разницы нет. Поле Инпут
обновляется только после нажатия Интер или потери фокуса, т.е.
когду уже все введено, а задча делать это во время исполльзуя то
что введено. Путано немного, но пршу помочь....
Re: Контролируемый ввод текста в поле
IOField
Павел
Кобелев; 25.6.04
Вот так, навскидку, стандартными средствами WinCC не получится.
Можно было бы обрабатывать события KeyUp и KeyDown, но нет средств
определить текущее положение курсора в поле ввода.
Используя IndustrialX - легко.
Re: Контролируемый ввод текста в поле
IOField
Nick Gashevsky; 25.6.04
Навскидку 2 варинта
1. Сваяй свой элемент управления (Ole object) какой тебе нужно,
вставь в WinCC.
2. Перехватывай нажатия на клавиши
Re: Контролируемый ввод текста в поле
IOField
Павел; 26.6.04
Для Павла Кобелева:
Возможно ли по входным параметрам этих событий определить какая
кнопка нажата, т.к. например при русском активном языке определить
что нажато довольно проблематично.
Re: Контролируемый ввод текста в поле
IOField
Владимир; 27.6.04
Вставляешь объект Static Text/IO Field, на нем в Events - keyboard
- press пишешь все что тебя волнует :-)
я так делал, когда потребовалось создать сой оригинальный
обработчик ввода данных.
вобщем то никаких проблем.
Re: Контролируемый ввод текста в поле
IOField
Павел; 28.6.04
Сразу вопрос, как использовать входные параметры этого события
КейПресс, особенно на предмет активного русского языка?? И вообще
есть где нить помощь по событиям всяких там элемнотов
ГрафРедактора.
Re: Контролируемый ввод текста в поле
IOField
Павел
Кобелев; 28.6.04
В событие передается код клавиши без учета языка ввода. Проблемы
могут возникнуть при редактировании уже существующего значения, так
как в отличие от полноценных визуальных языков, нет возможности
определить позицию в которой осуществляется ввод.
Re: Контролируемый ввод текста в поле
IOField
Павел; 29.6.04
Похоже что интерес к этой теме угас, а жаль...
А то у меня еще пара вопросов:
1. Как WinCC вообще переключается на русский ввод? При вводе текста
в ИОполе вывожу по фунции GetKeyboardLayout текущий язык. И блин!!,
он всегда АНГЛИЦКИЙ!!! - 000409!!! Но текст, то вводится по РУССКИ,
а это 000419!!! Просто ШАМАНЫ от Сименса.
2. Те параметры что передаются в события КейПресс(Даун) просто
обман покупателя! Смысл имеет только nChar содержащий СканКод кноп,
а остальное просто плосский немецкий юмор! Вот например по схожим
событиям Американского ТекстБокса - имеем СканКод и ВиртуалКод
кноп, плюс имеется реакция на переключения Языка.
А вы так просто взяли и забыли эту интересную тему....
Re: Контролируемый ввод текста в поле
IOField
Кобелев
Павел; 29.6.04
То что вам надо присутствует в стандартном элементе управления
Microsoft Visual Basic, который называется TextBox. Воспользуйтесь
им, или создайте свой. Используя IndustrialX в него можно включить
работу с тегами вашего проекта. Если есть вопросы, могу ответить по
E-mail.
Re: Контролируемый ввод текста в поле
IOField
Павел; 29.6.04
IndustrialX это еще одна замануха от Сименса стоимость 1.500
евриков как минимум. Ведь есть же заявление что ВинСС полностью
поддерживает АктивХ, но на деле то одно глючит, то другое вообще
систему роняет.
А вообще имеется демо версия ИндстХ 1.0 и адпдейт на нее 1.1, но
она чего то не хочет инсталится, пишет что надо ВинСС выше 4.1, ну
а у меня 5.1. Вот таки дела...
Re: Контролируемый ввод текста в поле
IOField
Nick Gashevsky; 29.6.04
Можно попробовать так:
Добавь Соntrol типа S7WCNumber (из Simatic Net) и на его Events
KeyPress привязать функцию типа
SetPropDouble(
lpszPictureName,"IOFieldTest","OutputValue",KeyID);
В поле IOFieldTest увидим код клавиши (с русским)
Правда позиция текста неизвестна
Re: Контролируемый ввод текста в поле
IOField
Владимир; 29.6.04
В моем случае, действительно, требовался ввод только цифр.
Проблема раскладок меня не коснулась...
Re: Контролируемый ввод текста в поле
IOField
Павел; 2.7.04
Для Nick - спасибо за помощь, к сожелению не смогу это проверить
еще дней 15, ушел в отпуск.
А реальность оказалась еще суровей, по nChar не то что языки нельзя
различать, но даже верхний/нижний регистры не получится.
Хотя, параметры этих событий (КейДоун и Пресс) очень похожи при
обработке события WM_CHAR для ВизуалС. Вот только там, nChar - это
символ с учетом и языка и регистра, nRepcnt - число повторений
нажатия, nFlags - дополнительные флаги. В нашей ВинСС все гораздо
скромней, или я не прав?
Re: Контролируемый ввод текста в поле
IOField
Darwin; 2.7.04
А для какой ситуации то надо обрабатывать все это? Просто жутко
любопытно стало для чего все это надо.
Re: Контролируемый ввод текста в поле
IOField
Кобелев Павел; 2.7.04
Ну ежели очень сильно надо так глубоко лезть - пиши верхний уровень
на том-же Visual Basic + OPC сервер.