Строка редактирования

Строка редактирования является еще одним вариантом реализации интерфейса IKeyHandler. Задача строки редактирования – обеспечить возможность ввода и редактирования произвольной строки символов. Компонент реализован посредством ActiveX-компонента EditString.

Идентификаторы подключения

  • ProgID: AXEditString.EditString;

  • CLSID: 71A1319C-47D7-44E2-98C5-ECA2FF6F604E.

Свойства

  • BkgndPath – URI изображения для отображения подложки в активном состоянии.

  • BkgndUnfocusedPath – URI изображения для отображения подложки в неактивном состоянии.

  • BkgndDisablePath – URI изображения для отображения подложки в запрещенном состоянии.

  • CodePage – кодовая страница, используемая для отображения текста.

  • Cx – ширина строки редактирования.

  • Cy – высота строки редактирования.

  • TextColor – цвет текста на кнопке для нормального режима.

  • UnfocusedTextColor – цвет текста на кнопке для режима «вне фокуса ввода».

  • DisabledTextColor – цвет текста на кнопке для режима «запрещена».

  • OffsetLeft – отступ области ввода в строке редактирования от левого края ActiveX-компонента.

  • OffsetTop – отступ области ввода в строке редактирования от верхнего края ActiveX-компонента.

  • OffsetRight – отступ области ввода в строке редактирования от правого края ActiveX-компонента.

  • OffsetBottom – отступ области ввода в строке редактирования от нижнего края ActiveX-компонента.

  • FontFace – имя шрифта, которым следует отображать текст в строке редактирования.

  • FontSize – размер шрифта, которым следует отображать текст в строке.

  • Alignment – алгоритм выравнивания текста в строке редактирования по горизонтали. Возможные значения:

    • 0 – слева (alignLEFT);

    • 1 – справа (alignRIGHT);

    • 2 – по центру (alignCENTER).

  • VAlignment – выравнивание текста в строке редактирования по вертикали. Возможные значения:

    • 0 – сверху (valignTOP);

    • 1 – снизу (valignBOTTOM);

    • 2 – по центру (valignCENTER).

  • InitState – Начальное состояние строки редактирования. Возможные значения:

    • 0 – доступна (stateENABLED);

    • 1 – невидима (stateINVISIBLE);

    • 2 – запрещена (stateDISABLED).

  • MaxCharsCount – максимальное количество символов при вводе строки;

  • CorrectAlgorithm – алгоритм обработки нажатия кнопки CORRECT. Возможные значения:

    • 0 – очистка всей строки;

    • 1 – очистка крайнего правого символа.

  • DefaultLanguage – язык ввода, устанавливаемый по умолчанию. Кодируется согласно правилам Language Identifiers для Windows. Возможна установка предопределенных значений: ENGLISH (английский язык) и RUSSIAN (русский язык).

  • DotMean – значение, добавляемое к редактируемой строке при нажатии кнопки FK_DECPOINT.

  • SlashMean – значение, добавляемое к редактируемой строке при нажатии кнопки FK_RES1.

  • MultiLine – флаг многострочного режима ввода.

  • PasswordChar – символ, используемый для маскирования текста при вводе пароля.

  • Mask – описание маски ввода.

  • PinMode – флаг режима ввода PIN-кода, в этом случае компоненту приходит только уведомление о факте нажатия клавиши, но не приходит ее код.

  • Filter – имя объекта-фильтра (реализует интерфейс IEditFilter) событий компонента.

  • ShowCaret – флаг, определяющий отображение каретки.

  • BkgndColor – цвет фона компонента.

  • Autowrap – флаг автопереноса.

  • IsInputReady – признак завершенности ввода согласно установленной маске.

  • Visible – статус видимости строки редактирования.

  • DefaultText – текст-подсказка, выводимый в пустое поле без фокуса.

  • SuppressWinKbdInput – игнорировать ввод с клавиатуры Windows.

  • bIgnoreFocusLoss – игнорировать произвольную потерю фокуса (реагировать только на Deactivate).

Правила задания маски ввода

Общий формат поля маски, описанный регулярным выражением:

*^\\\\\d*,?\d*[n,x,c,s,N,X,C,S]
  1. *^\\ – фиксированная часть маски, состоящая из любых символов кроме обратног слеша (необязателен);

  2. \\ (обратная косая черта) – символ определяющий начало переменной части маски ввода;

  3. \d* – число, определяющее минимальное количество вводимых символов (необязателен);

  4. ,? – символ «запятая» (необязателен);

  5. \d* – число, определяющее максимальное количество символов вводимых в поле (необязателен);

Отсутствие минимального и максимального количества символов трактуется как разрешение ввода строго одного символа (пример: «N»). Отсутствие минимального количества символов трактуется как разрешение ввода от одного до максимального количества символов включительно (пример: «,4N»). Отсутствие максимального количества символов трактуется как разрешение ввода от минимального любого количества символов включительно (пример: «2,N»). При этом максимально разрешенное количество вводимых символов равно 64. Отсутствие минимального и максимального количества символов, но наличие запятой трактуется как разрешение ввода от одного любого количества символов (пример: «,N»).

  1. [n,x,c,N,X,C] – символ определяющий тип поля, т.е. какие символы могут быть введены в это поле, регистр не учитывается.

  • «N» или «n» – ввод десятичных чисел [0-9];

  • «X» или «x» – ввод шестнадцатиричных чисел [0-9] или [A-F] или [a-f];

  • «C» или «c» – ввод букв [A-Z] или [a-z], [А-Я] или [а-я] (включая букву ё), а также символ подчеркивания.

  • «S» или «s» – ввод любых символов, кроме пробела.

Если все поля маски имеют фиксированную длину, такая маска считается подстрокой с фиксированной длиной (ПФД). Если среди полей маски есть хотя бы одно поле переменной длины, такая маска считается подстрокой с переменной длиной (ППД). Минимальной (максимальной) длиной ППД считается длина самого короткого (длинного) поля. Все фиксированные символы должны находиться слева от ППД (если такие встречаются). Все ПФД должны находиться слева от ППД (если такие встречаются). Если встречаются две подряд идущие ППД, то максимальная длина левой ППД должна быть меньше минимальной длины правой ППД.

Методы

IsEnable()

Функция получения статуса разрешенности ввода.

IsVisible()

Функция получения статуса видимости строки редактирования.

Show(VARIANT_BOOL bVisible)

Установка статуса видимости строки редактирования.

Enable(VARIANT_BOOL bEnable)

Установка статуса разрешенности ввода.

Activate()

Функция Установки фокУса ввода на данную строку редактирования.

Put(BSTR bstrText)

Функция Установки текстового значения строки редактирования.

Get()

Функция получения текстового значения строки редактирования.

GetUnmasked()

Функция получения значения строки редактирования без фиксированных символов маски.

Undo()

Функция отмены последней операции по вводу символа.

CancelCurrentOperation()

Функция отмены выполнения текущей операции.

GetCurrentLanguage()

Функция возвращает текущую установленную раскладку клавиатуры.

GetEditStringLength()

Функция, вычисляющая максимальную длину вводимой строки.

PutWithNotify(BSTR bstrText)

Установка текстового значения строки редактирования. В процессе выполнения вызываются Script-обработчики при изменении текста.

SetVolatileChar(BSTR bstrVal)

Установка временного символа (используется при СМС-наборе).

ResetVolatileChar

сброс временного символа (используется при СМС-наборе).

Add(BSTR bstrText)

Функция добавления подстроки в конец строки.

ClearLast

Функция удаления последнего символа в строке.

IsActivated

Функция, возращающая статус активности строки ввода.

Deactivate

Функция обратная функции Activate – снимает фокус, строка ввода перестаёт реагировать на нажатия.

Уведомления

OnBeforeEdit(BSTR bstrNewText)

Уведомление, генерируемое перед тем, как текст в строке редактирования изменится.

OnChar(BSTR bstrChar)

Уведомление, генерируемое при вводе нового символа.

OnInputReady()

Уведомление, генерируемое при полном совпадении ввода с маской.

OnInputNotReady()

Уведомление, генерируемое при не полном совпадении ввода с маской.

OnMaskError()

Уведомление, генерируемое при ошибочной маске.

Пример кода

<object ID='EditString'  CLASSID='CLSID:71A1319C-47D7-44E2-98C5-ECA2FF6F604E'
width='210' height='16'>
                <param name='CorrectAlgorithm' value='0'>
                <param name='FontFace' value='Courier New'>
                <param name='FontSize' value='8'>
                <param name='MaxCharsCount' value='4'>
                <param name='OffsetLeft' value='0'>
                <param name='OffsetTop' value='0'>
                <param name='OffsetRight' value='0'>
                <param name='OffsetBottom' value='0'>
                <param name='MultiLine' value='0'>
                <param name='DotMean' value='.'>
                <param name='SlashMean' value='\'>
                <param name='InitState' value='0'>
                <param name='Mask' value='NNNNN'>
                <param name='ShowCaret' value='0'>
                <param name='PasswordChar' value='*'>
                <param name='PinMode' value='1'>
</object>
<script language='javascript' for='window' event='OnLoad()'>
EditString.Enable(1);
</script>

<script LANGUAGE='JavaScript' FOR=' EditString ' EVENT='onchar(strKeyName)'>
                alert(strKeyName);
</script>