Borland Delphi >Статьи
Компоненты ввода и отображения текстовой
информации
Перечень компонентов ввода и отображения
текстовой информации:
Компонент |
Страница |
Описание |
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:
Размер меток 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, возникающее при каждом изменении пользователем
состояния индикатора. Его можно использовать для обработки результатов
изменения.
|