Компоненты ввода и отображения текстовой информации
Автор: Павел
Перечень компонентов ввода и отображения текстовой информации:
Компонент |
Страница |
Описание |
Label |
Standard |
Отображение
текста, который не изменяется пользователем во время работы) |
StaticText
(метка с бордюром) |
Additional |
В дополнение к
Label обеспечивает возможность задания стиля бордюра. |
Panel |
Standard |
Является
контейнером для группирования элементов управления, но может
использоваться и для отображения текстовой информации. |
Edit |
Standard |
Отображение, ввод
и редактирование однострочных текстов |
MaskEdit
(окно маскированного редактирования) |
Additional |
Используется для
форматирования данных или для ввода символов в соответствии с шаблоном |
Memo |
Standard |
Отображение ввод и
редактирование многострочных текстов |
RichEdit
(многострочное окно редактирования в формате rtf) |
Win32 |
Окно
редактирования в обогащенном формате rtf, позволяющее производитьвыбор
шрифтов, поиск текста и др. |
ListBox
(окно списка) |
Standard |
Отображение
стандартного окна списка Windows, позволяющее пользователю выбирать из
него пункты (Items) |
CheckListBox
(список с индикаторами) |
Additional |
Комбинация свойств
списка ListBox и CheckBox |
ComboBox
(редактируемый список) |
Standard |
Объединяет функции
ListBox и Edit. Пользователь может либо ввести текст, либо выбрать его
из списка (items) |
StringGrid
(таблица) |
Additional |
Отображение
текстовой информации в таблице из строк и столбцов с возможностью
перемещаться по ячейкам и осуществлять выбор (Cells) |
Помимо перечисленных компонентов отображать текстовые надписи можно непосредственно на свойстве Canvas (холст) любого компонента, имеющего это свойство (в частности , непосредственно на форме. Например:
Canvas.TextOut(60,16,'Canvas');
Тексты, отображаемые в компонентах Label, StaticText, Panel определяются их свойством Caption. Его можно задавать в процессе проектирования или изменять программно:
Label1.Caption:='Новый текст';
Если требуется отобразить числовую информацию, можно воспользоваться функциями FloatToStr и IntToStr:
Label1.Caption:='Число сотрудников: '+ IntToStr(I);
Размещение всех рассматриваемых компонентов на форме определяется свойствами Top,Left, Height, Witch, Align - общими для всех оконных компонентов. Эти свойства определяют координаты компонента, его размеры и их изменение при изменении пользователем родительского компонента
При изменении пользователем размеров окна приложения надо перерисовывать компоненты, изображающие текст, иначе выравнивание текста может нарушаться. Чтобы этого не было, надо в обработку события формы onResize вставить операторы, перерисовывающие компоненты методом Repaint:
StaticText1.Repaint;
Размер меток Label, StaticText опередляется свойством AutoSize. Если AutoSize=true, то вертикальные и горизонтальные размеры определяются размером надписи.
У метки Label свойство WordWrap при значении AutoSize=false задает возможность многострочных надписей.
Окна редактирования Edit и MaskEdit
Вводимый и выводимый текст содержится в свойстве Text. Его можно задавать в процессе проектирования или изменять программно. Выравнивание текста и перенос строк невозможен. Свойством AutoSize автоматически подстраивается только высота текста, но не ширина. Если текст не помещается в окне, то его можно прокручивать с помощью курсора. Для них предусмотрены типичные комбинации горячих клавиш:
Ctrl-C - копирование выделенного текста в буфер обмена ClipBoard
Ctrl-X - вырезание выделенного текста в буфер обмена ClipBoard
Ctrl-V - вставка из буфера обмена ClipBoard в позицию курсора
Ctrl-Z - отмена последней команды редактирования
Можно установить свойство ReadOnly=false и это не позволит редактировать текст.
При использовании окон редактирования для ввода, вывода и редактирования чисел необходимо использовать функции взаимного преобразования строк и чисел. Если вводимый текст не соответствует числу, то функция преобразования генерирует исключение EconvertError. Поэтому в программе необходимо предусмотреть обработку этого исключения:
var
A: integer;
: ..
try
A := StrToInt(Edit1.Text);
: : .
except
on EconvertError do
ShowMessage('Вы ввели ошибочное число');
end;
Свойство MaxLength определяет максимальную длину вводимого текста (при MaxLength=0 - длина не ограничена).
Свойство Modified, доступное только во время выполнеия, показывает, проводило ли редактирование текста в окне (вначале устанавливается false, а затем проверяется.
Свойство PasswordChar позволяет превращать окно редактирования в окно ввода пароля, если установить PasswordChar=*, то при вводе пользователем текста, в окне будут появляться именно эти символы, обеспечивая секретность пароля.
В компоненте MaskEdit можно задать строку маски в свойстве EditMask.
Многострочные окна редактирования Memo и RichEdit.
В них предусиотрены <горячие> клавиши:
Ctrl-C - копирование выделенного текста в буфер обмена ClipBoard
Ctrl-X - вырезание выделенного текста в буфер обмена ClipBoard
Ctrl-V - вставка из буфера обмена ClipBoard в позицию курсора
Ctrl-Z - отмена последней команды редактирования
В компоненте Memo формат(шрифт, его атрибуты, выравнивание) одинаков для всего текста и определяется свойством Font компонента, помещенного на форму.
Компонент RichEdit работает с текстом в формате rtf. Изменить арибуты вновь водимого текста можно свойством SelAttributes. Это свойство имеет тип TtextAttributes, которое в свою очередь имеет подсвойства: Color, Name(имя шрифта), Size, Style и др. Если поместить на форму со строницы Dialog палитры кмпонент стандартный диалог выбора шрифта FontDialog и кнопку, с помощью которой этот диалог будет вызываться, то можно связать возвращаемые даилогом атрибуты текста со свойствами текстового редактора:
procedure TForm1.Button1Click(Sender: TObject);
begin
if FontDialog1.Execute then
with RichEdit1.SelAttributes do
begin
Color.FontDialog1.Font.Color;
Name.FontDialog1.Font.Name;
Size.FontDialog1.Font.Size;
Style.FontDialog1.Font.Style;
end;
RichEdit1.SetFocus;
end;
Можно присвоить сразу все свойства одного объекта другому, т.к. объекты SelAttributes и Font совместимы по типу:
procedure TForm1.Button1Click(Sender: TObject);
begin
if FontDialog1.Execute then
RichEdit1.SelAttributes.Assign(FontDialog1.Font);
RichEdit1.SetFocus;
end;
Общие свойства этих окон редактирования:
- Alignмent - выравнивание текста
- WordWrap - допустимость переноса длинныз строк
- ReadOnly - true - только для чтения
- MaxLength - максимальная длина вводимого текста
- WantReturns - допустимость ввода пользователем в текст символа перевода строки
- WantTab - допустимость ввода пользователем в текст символа табуляции
- ScrollBars - наличие полос прокрутки
Основное свойство окон редактирования Memo и RichEdit - Lines, содержащее текст окна в виде списка строк и имеющее тип TStrings.
- Lines - начальное значение текста в процессе проектирования в Инспекторе объектов
- Count - количество строк в тексте
- Memo1.Lines.Strings[0] - доступ к отдельной (первой) строке текста по индексу. Индексы меняются как везде в Delphi от 0 до Count-1
- Memo1.Lines.Add (Append) - при занесении новой строки в окно редактирования
- Memo1.Lines.LoadFromFile('text.txt'); - загрузить текст из файла
- Memo1.Lines.SaveToFile('text.txt'); - сохранение текста в файле
- SelStart - позиция курсора в тексте
- Memo1.CaretPos.Y+1 и Memo1.CaretPos.X+1 - номер строки и символа в ней перед которым расположен курсор
Компоненты выбор из списков ListBox, CheckListBox, ComboBox.
Компоненты ListBox, ComboBox отображают списки строк.
ListBox только отображает данные и позволяет выбирать.
ComboBox позволяет также редактировать данные.
Основное свойство обоих компонентов - Items, имеющее тип Tstrings. Его можно заполнить в процессе проектирования. Во врямя выполнения работать с этим свойством можно, пользуясь свойствами иметодами класса Tstrings - Clear, add, и др.!!!!
CheckListBox выглядит как ListBox, но около каждой строки имеется индикатор, который пользователь может переключать, в том числе и программно. Все свойства компонета CheckListBox как списка аналогичны ListBox. Состояние индикаторов определяют два свойства - индексированные массивы: State и Checked, каждый элемент которых соответствует индексу строки, устанавливаемые в том числе и программно. При каждом щелчке пользователя на индикаторе его состояние изменяется, проходя в общем случае последовательно три значения: выделение(появление черной галочки), промежуточное (серое окно индикатора и серая галочка) и не выделенное ( пустое окно индикатора).Эти м трем состояниям соответствуют три значения свойства компонента State (при AllowGrayed=true):
CbChecked, CbGrayed, сbUnchecked
При AllowGrayed=false (значение по умолчанию) допускаются только два состояния: выделенное и не выделенное.
Проверять состояние индикатора можно не только по значению State, но и по значению свойства Checked. Если Checked=true, то индикатор выбран, а если false, State равно либо CbGrayed либо сbUnchecked. Обращение к свойствам:
CheckListBox1.Checked[1]:= true
CheckListBox1. State[2]:= CbGrayed
Оператор
for I := 0 to CheckListBox1.Items.Count - 1 do
if CheckListBox1.Checked[i] then
...
В компоненте CheckListBox имеется также событие onClickCheck, возникающее при каждом изменении пользователем состояния индикатора. Его можно использовать для обработки результатов изменения.
|