Учебный центр "ANIT Texno Inform"
Опубликован: 25.06.2014 | Доступ: свободный | Студентов: 2595 / 849 | Длительность: 24:39:00
Специальности: Программист
Лекция 5:

Символы и строки

< Лекция 4 || Лекция 5: 12345 || Лекция 6 >

Компоненты для ввода строк

Теперь мы знаем, что такое строки, самое время разобрать способы предоставления пользователю возможностей эти самые строки вводить в нашу программу. Помните второй проект второй лекции? Там мы предлагали пользователю ввести свое имя, которое затем использовали в приветствии. Для этого мы использовали компонент TEdit. Разберем его возможности, и познакомимся с другими аналогичными компонентами.

Для этого закройте старый проект и создайте новый. Как всегда, главную форму назовите fMain, и сохраните проект. При этом проекту дайте имя EditControls (контролами программисты между собой называют компоненты, с помощью которых программа взаимодействует с пользователем), а модуль этой формы назовите Main. Проект сохраните в папку 05-02 там, где у нас хранятся все остальные проекты.

Компонент TEdit

На форму установите компонент TEdit (если не помните, где он находится, смотрите "Анатомия проекта" ). По умолчанию, он имеет ширину 80 пикселей (свойство Width), увеличьте его до 200. Теперь давайте разбираться с основными свойствами этого компонента, которые могут нам понадобиться, для этого он должен быть выделен.

Начнем с самого начала. Рекомендую прочитать пояснения к свойству, а затем "поиграть" с его значениями, меняя их и запуская программу на выполнение, чтобы посмотреть результат. Затем вернуть значение по умолчанию, если не будет предложено иное, после чего переходить к следующему свойству. Таким образом, вы познакомитесь с компонентом более подробно.

Align Выравнивание компонента. С этим свойством мы уже знакомы, оно позволяет компоненту занять весь верх, низ, левую или правую сторону, или же всю форму или панель, на которой компонент находится. В компоненте TEdit это свойство тоже есть, но применяется очень редко - трудно придумать ситуацию, в которой этот компонент потребуется таким образом выровнять. Обычно это свойство не трогают. Значения этого свойства должны быть вам знакомы по лекции №3.
Alignment Выравнивание текста. Вот это свойство используется чаще. Оно позволяет выровнять текст в компоненте по центру, по левому или правому краю. Как выравнивать текст, обычно каждый решает для себя сам, но есть некоторые рекомендации: простой текст выравнивают обычно по левому краю, цифры - по правому, а такие данные, как дата-время можно выровнять по центру. Итак, значения этого свойства:
  • taCenter - по центру.
  • taLeftJustify - по левому краю. Это значение используется по умолчанию.
  • taRightJustify - по правому краю.
Anchors Привязка компонента к краям формы или панели, на которой компонент находится. С этим свойством вы также знакомы по третьей лекции.
AutoSelect Автоматическое выделение текста. Если свойство равно True (по умолчанию), то когда компонент становится активным, выделенным, или как говорят, получает фокус ввода, текст в компоненте, если он есть, автоматически выделяется. Иначе текст будет невыделен.
CharCase Регистр символов текста в компоненте. Может иметь следующие значения:
  • ecLowerCase - Все символы строчные (обычные), даже если набирать текст с нажатой клавишей <Shift> или с включенной <Caps Lock>.
  • ecNormal - Обычный текст, в котором могут быть и строчные, и прописные символы. Используется по умолчанию.
  • ecUpperCase - Все символы прописные (заглавные).
Color Позволяет выбрать цвет фона в компоненте.
Font Позволяет выбрать шрифт, используемый в компоненте. Вообще каждый решает сам, как будет выглядеть дизайн его программы, однако желательно для всех компонентов использовать один и тот же шрифт. Если вас не устраивает шрифт по умолчанию, поменяйте его для всей формы, и он автоматически будет использоваться для всех компонентов, которые вы на этой форме установите! Если же в вашем проекте будет много форм, то выработайте для них какие-то одни стандарты (шрифт, цвет фона, обрамление и т.п.), и придерживайтесь их во всех формах.
Hint Текст подсказки, который будет всплывать, когда пользователь подведет к компоненту указатель мыши.
MaxLength Максимальный размер текста в символах. По умолчанию равен нулю, что снимает ограничение в размерах. Если текст не умещается в поле ввода, он будет прокручиваться. Ограничение на количество символов иногда бывает необходимо, например, если текст будет записан в базу данных или запись, которые имеют фиксированный размер строки. Во всех остальных случаях свойство можно не изменять.
PasswordChar Символ, скрывающий пароль при вводе. Очень интересное свойство. Должно быть, всем приходилось когда-то вводить пароль. И обычно вместо нужных букв и цифр в этом поле отображались звездочки или кружочки. На самом деле, текст остается неизменным, но он прячется от тех, кто может оказаться у вас за спиной и подсмотреть ваш пароль. Реализуется эта возможность как раз данным свойством. Здесь нужно указать номер символа в таблице символов. По умолчанию, это #0 - нулевой символ, означающий, что текст выводится, как есть. Но можно поставить и другой символ, причем указать именно символ, а не его номер. Давайте в этом свойстве укажем символ "*". Как только вы нажмете <Enter>, сразу же изменится и свойство EchoMode - оба эти свойства взаимосвязаны. Мы разберем его чуть ниже, а пока сохраните проект и запустите на выполнение. Теперь любой текст, включая пробелы и другие знаки, будет выводиться на экран в виде звездочек. Однако это не все.

Мы имеем возможность маскировать пароль и другими символами. Выделите компонент TEdit и измените его свойство Font, выбрав там шрифт Wingdings (если у вас ОС Windows). Это тот редкий случай, когда имеет смысл выбрать другой шрифт для отдельного компонента. Теперь нам нужно выбрать символ. Откройте редактор MS Word. Там выполните команду Вставка -> Символ:

Определение кода символа

Рис. 5.3. Определение кода символа

В поле "Шрифт" выберите Wingdings, затем выберите подходящий символ, например, книгу. Потом посмотрите код выбранного знака, в данном случае это 38. Нажмите "Отмена" и закройте MS Word - он нам больше не нужен. Теперь вернитесь к проекту и в свойстве PasswordChar укажите #38 - код выбранного нами знака. Когда нажмете <Enter>, то значение #38 изменится на & - не обращайте внимание. Сохраните проект и запустите его на выполнение - текст будет скрываться за пиктограммой книги. Используя различные шрифты, вы можете подобрать для себя и другие подходящие символы.

EchoMode Тип сообщения. Связан с PasswordChar, и обычно устанавливается автоматически, но можно установить его и вручную. Имеет следующие значения:
  • emNone - вместо символов выводятся пробелы. Сам текст не меняется.
  • emNormal - обычный тип, используется по умолчанию. Устанавливается, если в PasswordChar установлено значение #0.
  • emPassword - тип пароля. Устанавливается, если в PasswordChar вы укажете другое значение, не #0. Сам текст не меняется.
ReadOnly Только для чтения. Разрешает или запрещает пользователю ввод текста. Если False, то пользователь может и читать, и вводить текст, иначе он может только читать его. Однако в любом случае вы можете менять там текст программно. Позже мы разберем такую возможность.
Text Основное свойство этого компонента. Содержит текст, введенный пользователем, или установленный в компоненте программно. Причем даже если вы его скроете, как пароль, сам текст меняться не будет. К этому свойству можно относиться, как к строковой переменной, которую может изменять пользователь. По умолчанию, в это свойство сразу же прописывается имя компонента, в нашем случае, edit1. На практике такой текст вряд ли понадобится, поэтому программист обычно очищает это свойство. Очистите его и вы. Как только для подтверждения нажмете <Enter>, текст в компоненте на форме исчезнет.

Остальные полезные свойства должны быть вам знакомы по предыдущим лекциям. Итак, установите для компонента Edit1 шрифт Times New Roman, размер шрифта пусть будет 11. В свойстве PasswordChar пусть будет значение по умолчанию - #0. Свойство Text очищено, а свойство ReadOnly установлено в True. Теперь ниже TEdit установите кнопку, сгенерируйте для нее обработчик нажатия, и введите там следующий код:

procedure TfMain.Button1Click(Sender: TObject);
begin
  Edit1.Text:= 'Привет!';
end;
        

Здесь мы программно меняем текст в компоненте. Для этого мы обращаемся к нему по имени - Edit1, после чего ставим точку. Обратите внимание - если поставить точку и чуть подождать, всплывет окошко со всеми свойствами, методами и событиями, которые мы можем использовать. Нам нужно свойство Text. Как только мы введем первую "T", список отфильтруется, оставив там только команды на букву "T". Как только мы введем следующую букву "e", то в списке останется только одно подходящее свойство - "Text". То, что нужно. Можно просто нажать <Enter>, не вводя остальных символов, и свойство само вставится в код. Причем вместе с последующим оператором присваивания. Мелочь, а приятно. Останется только указать строку, которую мы хотим присвоить.

Таким образом, можно менять программно многие (но не все) свойства компонентов, их размеры и положение, текст и цвет, и многое другое. Сохраните проект и запустите его на выполнение. Если вы все сделали правильно, то пользователь не сможет вписывать текст в Edit1, а при нажатии кнопки Button1, текст там поменяется программно. Теперь давайте чуть изменим команду присваивания:

Edit1.Text:= Edit1.Text + 'Привет! ';
        

С выражениями мы уже работали, так что тут трудностей быть не должно. Мы просто берем текст, который уже был в свойстве Text (при первом нажатии там будет пустая строка), и прибавляем к нему строку 'Привет! ' - не забудьте после восклицательного знака поставить пробел, чтобы текст не слипался друг с другом. Сохраните проект и запустите его. Нажимая кнопку, мы сможем многократно добавлять слово 'Привет! ' в компонент.

Компонент TLabelEdit

На вкладке Additional Палитры компонентов есть странный компонент TLabelEdit:

Компонент TLabelEdit

Рис. 5.4. Компонент TLabelEdit

Установите его на свободное место на форму, и посмотрите на его свойства в Инспекторе объектов. В общем-то, это гибрид метки TLabel и текстового поля TEdit. Свойства почти все знакомы, но есть и некоторые различия.

EditLabel - раскрывающее свойство, внутри которого находится свой набор подсвойств для метки. Слева от этого свойства мы видим кнопку "+", щелкнув по которой раскроем подсвойства. Здесь нам понадобится, прежде всего, свойство Caption, в котором мы можем записать текст метки. Этот текст будет пояснять назначение текстового поля. Напишем в этом свойстве Фамилия, текст метки изменится, а пользователь сразу поймет, что сюда он должен будет вписать свою фамилию:

Компонент TLabelEdit в Инспекторе объектов и в Редакторе форм

Рис. 5.5. Компонент TLabelEdit в Инспекторе объектов и в Редакторе форм

Можете щелкнуть по кнопке "-" слева от свойства, закрыв список подсвойств, больше ничего интересного там нет. Посмотрим, какие свойства еще нам понадобятся.

LabelPosition - местонахождение метки. Может быть:

  • lpAbove - сверху текстового поля. Это значение по умолчанию.
  • lpBelow - снизу текстового поля.
  • lpLeft - слева
  • lpRight - справа

LabelSpacing - расстояние в пикселях между меткой и текстом. По умолчанию равно 3 пикселя. Изменяя это значение, можно приближать метку к полю или отодвигать ее.

В остальном, этот компонент почти полностью идентичен обычному TEdit.

TLabelEdit будет полезен при создании форм, где пользователь должен вписывать различные данные, для этого раньше применялись отдельно TLabel и TEdit. Данный гибрид, безусловно, удобней.

< Лекция 4 || Лекция 5: 12345 || Лекция 6 >
Инга Готфрид
Инга Готфрид
Александр Скрябнев
Александр Скрябнев

Через WMI, или используя утилиту wmic? А может есть еще какие более простые пути...