Студопедия — Окна редактирования Edit и MaskEdit
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Окна редактирования Edit и MaskEdit






На рис. 3 приведены примеры окон редактирования. Внешнее оформление окон редактирования определяется свойством BorderStyle, влияние которого на вид компонента вы можете увидеть на том же рисунке.

 

Рис. 3 Примеры окон редактирования

В компонентах Edit и MaskEdit вводимый и выводимый текст содержится в свойстве Text. Это свойство можно устанавливать в процессе проектирования или задавать программно. Выравнивание текста, как это имело место в метках и панелях, невозможно. Перенос строк тоже невозможен. Текст, не помещающийся по длине в окно, просто сдвигается и пользователь может перемещаться по нему с помощью курсора.

Свойство AutoSize в окнах редактирования имеет смысл, отличный от смысла аналогичного свойства меток: автоматически подстраивается под размер текста только высота, но не ширина окна.

Окна редактирования снабжены многими функциями, свойственными большинству редакторов. Например, в них предусмотрены типичные комбинации «горячих» клавиш:

Ctrl-C — копирование выделенного текста в буфер обмена (команда Copy),

Ctrl-X — вырезание выделенного текста в буфер (команда Cut),

Ctrl-V — вставка текста из буфера в позицию курсора (команда Paste),

Ctrl-Z — отмена последней команды редактирования.

Свойство AutoSelect определяет, будет ли автоматически выделяться весь текст при передаче фокуса в окно редактирования. Имеет смысл задавать AutoSelect =true в случаях, когда при переключении в данное окно пользователь будет скорее заменять текущий текст, чем исправлять его (нажатие любой клавиши кроме стрелок приведет к стрианию выделенного текста). Имеются также свойства только времени выполнения (нельзя настроить в Инспекторе объектов) SelLength, SelStart, SelText, определяющие соответственно длину выделенного текста, позицию перед первым символом выделенного текста и сам выделенный текст. Например, если в окне имеется текст «Фамилия сотрудника» и в нем пользователь выделил слово «сотрудника», то SelLength = 10, SelStart = 9 и SelText = 'сотрудника'. Если выделенного текста нет, то свойство SelStart просто определяет текущее положение курсора.

Окна редактирования можно использовать и только для отображения текста. Для этого надо установить свойство ReadOnly= true и AutoSelect= false. В этом случае пользователь не сможет изменять отображаемый текст и окно редактирования становится подобным меткам, рассмотренным в разделе 1.2. Но имеются и определенные отличия. Во-первых, окна редактирования оформлены несколько иначе (сравните рис. 1 и 3). А главное — окна редактирования могут вмещать текст, превышающий их длину. В этом случае пользователь может прокручивать этот текст, перемещая курсор в окне. Можно также копировать текст, даже в режиме Readonly.

При использовании окон редактирования для вывода, ввода и редактирования чисел необходимо использовать функции преобразования строк и чисел: FloatToStr и IntToStr. При вводе это функции

StrToFloat — преобразование строки в значение с плавающей запятой,

StrToInt — преобразование строки в целое значение.

Если вводимый текст не соответствует числу (например, содержит недопустимые символы), то функции преобразования генерируют исключение EConvertError. Поэтому в программе необходимо предусмотреть обработку этого исключения. Например:

var A: integer; try A:= StrToInt(Edit1.Text);... {операторы, использующие переменную А} except on EConvertError do ShowMessage('Вы ввели ошибочное число; повторите ввод'); end

Этот код обеспечивает сообщение пользователю об ошибке ввода и предотвращает ошибочные вычисления. Впрочем, лучше, если пользователь просто не сможет ввести неправильные символы. Например, если вы хотите, чтобы пользователь мог вводить в окно редактирования Edit только цифры и символ точки, можно в обработчик события OnKeyPress этого компонента вставить оператор:

if not (Key in ['0'..'9', ',']) then Key:= #0;

Этот оператор не будет позволять вводить символы, кроме цифр и запятой.

Свойство MaxLength определяет максимальную длину вводимого текста. Если MaxLength = 0, то длина текста не ограничена. В противном случае значение MaxLength указывает максимальное число символов, которое может ввести пользователь.

Свойство Modified, доступное только во время выполнения, показывает, проводилось ли редактирование текста в окне. Если вы хотите использовать это свойство, то в момент начала работы пользователя с текстом Modified надо установить в false. Тогда при последующем обращения к этому свойству можно по его значению (true или false) установить, было или не было произведено редактирование.

Свойство PasswordChar позволяет превращать окно редактирования в окно ввода пароля. По умолчанию значение PasswordChar равно #0 — нулевому символу. В этом случае это обычное окно редактирования. Но если в свойстве указать иной символ (например, символ звездочки «*»), то при вводе пользователем текста в окне будут появляться именно эти символы, а не те, которые вводит пользователь (см. рис. 3.5). Тем самым обеспечивается секретность ввода пароля.

Компонент MaskEdit отличается от Edit тем, что в нем можно задать строку маски в свойстве EditMask. Маска состоит из трех разделов, между которыми ставится точка с запятой «;». В первом разделе — шаблоне записываются специальным образом символы (см. таблицу 2), которые можно вводить в каждой позиции, и символы, добавляемые самой маской; во втором разделе записывается 1 или 0 в зависимости от того, надо или нет, чтобы символы, добавляемые маской, включались в свойство Text компонента; в третьем разделе указывается символ, используемый для обозначения позиций, в которых еще не осуществлен ввод. Прочитать результат ввода можно или в свойстве Text, которое в зависимости от вида второго раздела маски включает или не включает в себя символы маски, или в свойстве EditText, содержащем введенный текст вместе с символами маски.


Таблица 2. Символы шаблона маски

! Наличие символа «!» означает, что в EditText недостающие символы предваряются пробелами, а отсутствие символа «!» означает, что пробелы размещаются в конце.
> Символ «>» означает, что все последующие за ним символы должны вводиться в верхнем регистре, пока не кончится маска или пока не встретится символ «<».
< Символ «<» означает, что все последующие за ним символы должны вводиться в нижнем регистре, пока не кончится маска или пока не встретится символ «>».
<> Символы «<>» означают, что анализ регистра не производится.
\ Символ «\» означает, что следующий за ним символ является буквенным, а не специальным, характерным для маски. Например, символ «>» после символа «\» воспримется как знак >, а не как символ, указывающий на верхний регистр.
L Символ «L» означает, что в данной позиции должна бытъ буква.
l Символ «l» означает, что в данной позиции может быть только буква или ничего.
A Символ «А» означает, что в данной позиции должна быть буква или цифра.
a Символ «а» означает, что в данной позиции может быть буква, или цифра, или ничего.
C Символ «С» означает, что в данной позиции должен быть любой символ.
c Символ «с» означает, что в данной позиции может быть любой символ или ничего.
  Символ «0» означает, что в данной позиции должна быть цифра.
  Символ «9» означает, что в данной позиции может быть цифра или ничего.
# Символ «#» означает, что в данной позиции может быть цифра, знак «+», знак «-» или ничего.
: Символ «:» используется для разделения часов, минут и секунд.
/ Символ «/» используется для разделения месяцев, дней и годов в датах.
Пробел Символ «пробел» означает автоматическую вставку в текст пробела.

Вводить маску можно непосредственно в свойство EditMask. Но удобнее пользоваться специальным редактором масок, вызываемым при нажатии кнопки с многоточием в строке свойства EditMask в Инспекторе Объектов. Окно редактора масок имеет вид, представленный на рис. 4.

В редакторе масок окно Sample Masks содержит наименования стандартных масок и примеры ввода с их помощью. В окно Input Mask надо ввести маску. Если вы выбираете одну из стандартных масок, то окно Input Mask автоматически заполняется и вы можете, если хотите, отредактировать эту маску.

Окно Character for Blanks определяет символ, используемый для обозначения позиций, в которых еще не осуществлен ввод (третий раздел маски). Индикатор Save Literal Characters определяет установки второго раздела маски: включен - второй раздел равен 1, выключен - второй раздел равен 0.

Рис. 4 Окно редактора масок с загруженными файлами стандартных масок


Кнопка Masks позволяет выбрать и загрузить какой-либо другой файл стандартных масок. К сожалению, среди файлов стандартных масок, поставляемых с Delphi, отсутствует маска, соответствующая российским стандартам. Но можно сделать такой файл стандартных масок. Он делается в обычном текстовом редакторе и должен сохраняться как «только текст» с расширением .dem. Чтобы редактор масок Delphi видел этот файл, его надо сохранить в каталоге Delphi BIN. Каждая строка файла состоит из трех частей, разделяемых символом вертикальной черты. Первая часть состоит из пояснительного текста, появляющегося в левой панели окна Sample Masks редактора масок. Вторая часть — пример, который появляется в правой панели окна Sample Masks редактора масок (без шаблонных символов). А третья часть — сама маска.

Например, можно подготовить маски и сохранить их в файле с именем ru.dem.

Телефон | 5551212 |!000-00-00;0;_Телефон с кодом страны | 0955551212 |!\(999\) 000-00-00;0;_Почтовый индекс | 123456 |!000000;1;_Паспорт| VII123456 |!L-LL 999999;0;_Дата с указанием дня | 270694 |!99/99/00;1;_Дата без указания дня | 0694 |!99/00;1;_Время с секундами | 210515 |! 90:00:00;1;_Время без секунд | 1345 |!90:00;1;_

Рассмотрим примеры масок. В приведенном выше файле маска для ввода номера телефона имеет вид:

!\(999\) 000-00-00;0;_

В этой маске символ 9 означает, что в соответствующей позиции может быть только цифра. Символ 0 означает, что в данной позиции должна быть цифра. Символ подчеркивания в конце маски будет заполнять пустые позиции. Таким образом, пользователю для ввода в окне будет отображен шаблон):

(___)___-__-__

Поскольку второй раздел маски равен 0, то при чтении введенных пользователем значений свойства EditText и Text будут различаться.

Свойство EditText для примера будет равно (095) 123-45-67,

Свойство Text будет равно 0951234567.

Если второй раздел маски сделать равным 1, то значения обоих свойств будут равны (095) 123-45-67.

Рассмотрим еще пример. Если с помощью EditMask надо ввести, например, целое число без знака, состоящее не более, чем из двух цифр, можно задать маску 99;0;. Если число обязательно должно быть двузначным, то маска должна иметь вид 00;0;.








Дата добавления: 2015-08-27; просмотров: 427. Нарушение авторских прав; Мы поможем в написании вашей работы!



Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Виды нарушений опорно-двигательного аппарата у детей В общеупотребительном значении нарушение опорно-двигательного аппарата (ОДА) идентифицируется с нарушениями двигательных функций и определенными органическими поражениями (дефектами)...

Особенности массовой коммуникации Развитие средств связи и информации привело к возникновению явления массовой коммуникации...

Тема: Изучение приспособленности организмов к среде обитания Цель:выяснить механизм образования приспособлений к среде обитания и их относительный характер, сделать вывод о том, что приспособленность – результат действия естественного отбора...

В теории государства и права выделяют два пути возникновения государства: восточный и западный Восточный путь возникновения государства представляет собой плавный переход, перерастание первобытного общества в государство...

Закон Гука при растяжении и сжатии   Напряжения и деформации при растяжении и сжатии связаны между собой зависимостью, которая называется законом Гука, по имени установившего этот закон английского физика Роберта Гука в 1678 году...

Характерные черты официально-делового стиля Наиболее характерными чертами официально-делового стиля являются: • лаконичность...

Studopedia.info - Студопедия - 2014-2024 год . (0.009 сек.) русская версия | украинская версия