Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Ввод и редактирование текста
Ввод и редактирование текста выполняется в специальных полях или областях формы. При необходимости пользователь может изменить отображаемые данные. Для этих целей система Delphi предлагает различные компоненты, например, Edit, MaskEdit, Memo, RichEdit И LabeledEdit.
Однострочные редакторы
Однострочный редактор, или поле редактирования, представляет собой поле ввода текста, в котором возможно отображение и изменение текста. В Delph есть несколько однострочных редакторов, из них наиболее часто используется компонент Edit.
Компонент Edit позволяет вводить и редактировать с клавиатуры различные символы, при этом поддерживаются операции, такие как перемещение по строке с использованием клавиш управления курсором, удаление символов с помощью клавиш <Backspace> и <Delete>, выделение части текста и др. Отметим, что у однострочного редактора отсутствует реакция на управляющие клавиши <Enter> и <Esc>.
Для изменения регистра символов в поле редактирования служит свойство charcase типа TEditcharCase, которое может принимать одно из трех значений:
При использовании компонента Edit для ввода пароля можно воспользоваться свойством Passwordchar типа char, задающим символ для отображения в поле ввода. Этот символ при вводе текста появляется вместо фактически введенного символа. Например, после выполнения инструкций
Editl.PasswordChar := '*';
Editl.Text := 'Пароль';
в поле редактирования появится строка ******, в то время как в действительно¬сти свойство Text имеет значение пароль.
По умолчанию свойство PasswordChar имеет значение #0, и в поле редактирования отображается реально введенный текст.
Компонент MaskEdit также является однострочным редактором, но по сравне¬нию с компонентом Edit он предоставляет дополнительную возможность ввода информации по шаблону. С помощью шаблона (маски) можно ограничить число вводимых пользователем символов, тип вводимых символов (алфавитный, цифровой и т. д.). Кроме того, во вводимую информацию можно вставить дополнительные символы (разделители при вводе даты, времени и т. п.). С помощью редактирования по маске удобно вводить телефонные номера, даты, почтовые индексы и другую информацию заранее определенного формата.
Маска задается в свойстве EditMask типа string и представляет собой последовательность специальных кодов, определяющих для поля редактирования формат содержащегося в ней текста.
Маска состоит из разделенных символом ; трех полей:
Если второе и/или третье поля не определены, то для них действуют значения по умолчанию.
В следующем примере для редактора Editl установлено разрешение ввода только десятичных цифр:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (Key<'0') or (Key>'9') then Key:=#0;
end;
В поле редактирования может содержаться одна строка без символа конца строки, поэтому при нажатии клавиши <Enter> не выполняются никакие действия и в строку ничего не вводится. При необходимости программист должен сам написать код действий, связанных с нажатием клавиши <Enter>. Чаще всего нажатие этой клавиши служит признаком окончания ввода информации в поле редактора, после чего следует перейти к другому элементу управления, то есть передать ему фокус ввода, например, с помощью метода setFocus или установки значения свойства Activecontrol.
Задать реакцию однострочного редактора на нажатие клавиши <Enter> можно так
procedure TForml.EditlKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then begin
Key := #0;
Forml.ActiveControl := Edit2;
end;
end;
procedure TForml.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then begin
Key := #0;
Edit3.SetFocus;
end;
end;
procedure TForml.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then Key := #0;
end;
Информация последовательно вводится в три поля, являющихся компонентами Editl, Edit2 и Edit3. При окончании ввода в первое или второе поля нажатие клавиши <Enter> автоматически активизирует очередное поле. Из третьего поля фокус ввода автоматически не передается. Передача фокуса ввода из разных полей реализована двумя способами: с использованием свойства ActiveControl формы и с помощью метода setFocus.
Многострочный редактор
Для работы с многострочным текстом Delphi предоставляет компонент Мемо. Многострочный редактор имеет практически те же возможности по редактированию текста, что и однострочные редакторы. Главное отличие этих элементов управления заключается в том, что многострочный редактор содержит несколько строк текста.
Для доступа ко всему содержимому многострочного редактора используется свойство Text типа string. В этом случае все содержимое компонента Мемо представляется одной строкой, а конец строки, вставляемый при нажатии клавиши <Enter>, записывается двумя кодами #13#10, поэтому видимых пользователем символов будет меньше, чем их содержится в строке Text. Эту особенность нужно учитывать, например, при определении позиции заданного символа в какой-либо строке компонента Memo.
Для работы с отдельными строками используется свойство Lines типа TStrings. Класс TStrings служит для выполнения операций со строками и имеет различные свойства и методы, которые уже были рассмотрены выше. Компонент Memo позволяет использовать возможности этого класса через свое свойство Lines.
рассмотрим примеры операций с многострочным редактором:
Memol.Lines [3] : = 'asd';
Memo2.Lines.Clear;
КегооЗ.Lines.Add('Новая строка');
Здесь четвертой строке редактора Memo присваивается новое значение asd, так как в классе TStrings нумерация строк начинается с нуля). Содержимое редактора Memo2 полностью очищается. В конец текста редактора МемоЗ добавляется новая строка.
Текст в поле компонента Memo может быть выровнен различными способами. Способ выравнивания определяет свойство Alignment типа TAlignment, которое может принимать одно из следующих значений:
Чтоб очистить содержимое компонента или написать в него строки, щелкните по свойству Lines. Перед вами откроется окно редактора строк, в котором можно набрать многострочный текст.
Работа со списками
Список представляет собой упорядоченную совокупность взаимосвязанных элементов, являющихся текстовыми строками. Элементы списка могут быть отсортированы в алфавитном порядке или размещены в порядке их добавления в список. Как и другие объекты, представляющие собой совокупность данных, списки позволяют добавлять, удалять и выбирать отдельные их элементы (строки).
простой список
Для работы с простым списком в Delphi предназначен компонент ListBox.
Если количество строк больше, чем их может поместиться в видимой области списка, то у области отображения появляется полоса прокрутки. Ориентация полосы прокрутки, а также число столбцов, которые одновременно видны в области списка, зависят от свойства columns типа integer. По умолчанию свойство имеет значение 0. Это означает, что все элементы списка расположены в одном столбце, и при необходимости автоматически появляется вертикальная полоса прокрутки!
Если свойство columns имеет значение, большее или равное 1, то в области списка всегда присутствует горизонтальная полоса прокрутки, а элементы разбиваются на такое число столбцов, чтобы можно было, прокручивая список по горизонтали, просмотреть все его элементы. При этом в видимой области списка отображается число столбцов, равное значению свойства columns.
Список может иметь обычную рамку или не иметь рамки вообще. Наличие рамки определяет свойство BorderStyle типа TBorderStyle, принимающее два возможных значения:
□ bsNone (рамки нет);
□ bssingle (рамка есть) по умолчанию.
Чтобы получить доступ к строкам списка нужно воспользоваться свойством Items.
Свойство ItemIndex указывает на выделенную строку списка выбора. Если написать код:
procedure TForm1.FormActivate(Sender: TObject);
begin
listbox1.ItemIndex:=2;
end;
то при запуске программы выделенной будет третья строка.
Задания
1. Установите два компонента Edit и кнопку. Очистите у обоих компонентов Edit свойство Text. Это свойство отвечает за содержимое строки ввода.
Создайте для кнопки обработчик события OnClick и напишите в нем:
edit2.Text:=edit1.Text;
Запустите программу, введите в первую строку любой текст и нажмите кнопку
2. Измените у первой строки ввода свойство PasswordChar на *. Запустите программу и введите в первую строку текст, затем нажмите на кнопку.
3. Измените OnClick у кнопки:
If edit1.Text=password then
edit2.Text:=Пароль верный
else
edit2.Text:=Пароль неверный;
Затем запустите программу.
4. Установите на форму три компонента Edit.
Для компонента Edit3 напишите код:
procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then
begin
Key:=#0;
Form1.ActiveControl:=Edit4;
end;
end;
Для компонента Edit4 напишите код:
procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then
begin
Key:=#0;
Edit5.SetFocus;
end;
end;
Для компонента Edit5 напишите код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (Key<'0') or (Key>'9') then Key:=#0;
end;
Запустите программу и объясните как она работает.
5. Запустите новый проект. Установите на форму ListBox. Дважды щелкните по его свойству Items, перед вами откроется редактор строк. Наберите в нем 9 названий городов.
Сделайте так, чтобы при запуске выделенным был последний.
Установите на форму еще две кнопки Добавить строку и Удалить строку. Для кнопки Добавить строку напишите код:
Listbox1.Items.Add('Новая строка');
Для кнопки Удалить строку напишите код:
Listbox1.Items.Delete(ListBox1.ItemIndex);
Запустите программ и объясните как она работает.