Исходники.Ру - Программирование
Исходники
Статьи
Книги и учебники
Скрипты
Новости RSS
Магазин программиста

Главная » Статьи по программированию » 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:

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, возникающее при каждом изменении пользователем состояния индикатора. Его можно использовать для обработки результатов изменения.


Может пригодится:


Автор: Неизвестен
Прочитано: 11913
Рейтинг:
Оценить: 1 2 3 4 5

Комментарии: (2)

Прислал: Max-xaM
Цитирую: ---------- Можно установить свойство ReadOnly=false и это не позволит редактировать текст. ---------- Не FALSE, а TRUE. Внимательнее надо быть...

Прислал: Егор
Еще вопрос, а как из текстого файла случайным образом брать определенные фрагменты текста и разместить этот фрагмент в мемо?

Добавить комментарий
Ваше имя*:
Ваш email:
URL Вашего сайта:
Ваш комментарий*:
Код безопастности*:

Рассылка новостей
Рейтинги
© 2007, Программирование Исходники.Ру