Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Компоненты ввода и отображения текстовой информации

Автор: Павел

Перечень компонентов ввода и отображения текстовой информации:

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

Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay