Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Технологии программирования. Программирование графических интерфейс

.pdf
Скачиваний:
3
Добавлен:
15.11.2022
Размер:
2.24 Mб
Скачать

Основное назначение кнопки – формирование события при нажатии на нее. Кнопка может быть размещена в любом месте формы, где есть необходимость выполнить какие-либо действия при ее нажатии. Кнопка Button является экземпляром класса TButton, предками которого являются классы TButtonControl и TWinControl. Это означает, что кнопка Button представляет собой оконный элемент управления.

В классе TButton добавлены следующие свойства:

property Cancel: Boolean;

Если свойство имеет значение True, то нажатие на клавишу Esc будет эквивалентно нажатию на данную кнопку.

property Default: Boolean;

Если свойство имеет значение True, то нажатие на клавишу Enter будет эквивалентно нажатию на данную кнопку, при условии, что какая-либодругая кнопка не находитсяв фокусе ввода.

type TModalResult = Low(Integer)..High(Integer);

property ModalResult: TModalResult;

Свойство, используемое при закрытии модальных окон. Для обычных окон значение этого свойства должно быть равно

mrNone.

В классе TButton определён метод Сlick:

procedure Click; override;

Выполнение этого метода эквивалентно щелчку по кнопке, т.е. в результате его выполнения возникает событие OnClick для кнопки.

Особенностью кнопки класса TButton является то, что она не обладает свойством Color и цвет фона для неё определяется операционной системой Windows.

Кнопка класса TButton обрабатывает все события, определенные для оконного элемента управления. Событием по умолчанию для кнопки является событие OnClick.

151

9.6.Пример разработки программы

сэлементами управления

1.Откройте новое приложение с помощью команды File|

New Application.

2. Сохраните проект в рабочем каталоге, выполнив коман-

ду меню File|Save Project As.

3. На форме Form1 разместите компоненты Label1, Label2, Label3, Label4: TLabel; Memo1: TMemo; Edit1, Edit2, Edit3:TEdit; Button1, Button2:TButton (рис. 9.1).

Рис. 9.1

4. Свойству Caption метки Label1 задайте значение

«Введите коэффициенты квадратного уравнения

A*X^2+B*X+C=0».

Разместите этот текст в двух строках и выровняйте его по центру, для чего установите следующие значения свойств:

152

AutoSize

False,

WordWrap

True,

Alignment

taCenter.

Размеры метки и ее местоположение отрегулируйте вручную. Перейдите в свойство Font и щелкните по кнопке с тремя точками. В появившемся окне установите подходящий размер

итип шрифта.

5.Для меток Label2, Label3, Label4 установите свойство Caption равным «A=», «B=», «C=» соответственно.

6.Для компонентов Edit1, Edit2, Edit3 установите свойство Text равным пустой строке.

7.Для компонента Memo1 выберите свойство Lines и щелкните по кнопке с тремя точками. В появившемся окне String list editor удалитестроку «Memo1».

8.Для кнопок Button1, Button2 установите свойство Caption равным «Решение» и «Очистить» соответственно.

9.Дважды щелкните на кнопке «Решение» и определите следующий обработчик события OnClick:

procedure TForm1.Button1Click(Sender:TObject); var a,b,c,d,x1,x2:double;

begin a:=StrToFloat(Edit1.Text); b:=StrToFloat(Edit2.Text); c:=StrToFloat(Edit3.Text); d:=b*b-4*a*c;

if d>=0 then begin

x1:=(-b+sqrt(d))/(2*a);

x2:=(-b-sqrt(d))/(2*a); Memo1.Lines.Add(‘Результат’);

Memo1.Lines.Add(‘x1=’+FloatToStr(x1));

Memo1.Lines.Add(‘x2=’+FloatToStr(x2));

end;

if d<0 then Memo1.Lines.Add(‘Решений нет’); end;

153

10. Вернитесь в форму (F12), дважды щелкните на кнопке «Очистить» иопределитеследующийобработчиксобытияOnClick:

procedure TForm1.Button2Click(Sender:TObject); begin

Memo1.Clear;

end;

11. Откомпилируйте и выполните программу.

Вопросы для самоконтроля

1.Какие средства ввода-вывода информации вы знаете?

2.Как задать выравнивание текста в TLabel?

3.Что надо сделать, если размер выводимого в TLabel текста меняется?

4.Как создать многострочную метку?

5.Запишите пример вывода в метке следующего выражения: a+b=c, где a, b, c – вещественные переменные, и в метке выводятся их значения.

6.Что надо сделать, чтобы это выражение выводилось при запуске программы, а при нажатии кнопки TButton значения переменных a, b, c увеличивались в три раза и вводимый текст соответственно изменялся? Запишите пример.

7.Что надо сделать, чтобы выводить в метке текст красными символами на зеленом фоне?

8.Как вывести в TEdit текст?

9.Как сохранить введенный в TEdit текст?

10.Как запретить редактирование текста ?

11.Как вводить в TEdit пароль?

12.Как при вводе преобразовать все буквы в строчные (прописные)?

13.Как удалить текст в TEdit?

14.Как определить, что текст в TEdit был изменен?

15.В чем отличие TMemo от TEdit?

154

16.Как хранятся в TMemo строки?

17.Что надо сделать, чтобы появились горизонтальная и/или вертикальнаяполосаскроллинга?

18.Как сделать, чтобы нажатие Enter не обрабатывалось TMemo (не приводило к переходу на новую строку), а обрабатывалось системой? Как при этом перейти к новой строке?

19.Каким образом разрешить ввод в TEdit или в TMemo только определенных символов? Приведите пример программного кода.

20.Покажите, какие изменения надо внести в программу, чтобы вместо TMemo использовать TEdit.

Упражнения

1.Использовать для вывода результата вместо компонента

TMemo компонент TEdit.

2.Разработать программу для вычисления корней алгебраического уравнения вида f(x)=0 методом:

а) итераций; б) Ньютона;

в) половинного деления.

3.Вычислить значение определенного интеграла вида

F = ydx в пределах интегрирования от a до b методом: а) трапеций; б) Симпсона.

4. Вычислить значение заданной функции f(x) для x от a до b с заданным шагом h, используя разложение функции в степенной ряд.

155

10. СПИСКИ TLISTBOX И TCOMBOBOX

10.1. Компонент TListBox

Страница Палитры компонентов: Standard.

Иерархия: TObject→TPersistent→TComponent→TControl→ TWin-

Control→TCustomListBox→ TListBox

Компонент TListBox предназначен для отображения списка строк на экране – список List Box.

Этот компонент имеет в своем составе объект-список, являющийся экземпляром класса TStrings и содержащий набор строк с ассоциированными с ними произвольными объектами. Таким образом, компонент List Box, являющийся экземпляром класса TListBox, позволяет отображать на экране список строк, каждая из которых может быть связана, например, с некоторым рисунком. Непосредственным предком класса TListBox является класс TCustomListBox, который порожден от класса TWinControl. Следовательно, компонент List Box является оконным управляющим элементом.

Основные характеристики списка List Box заложены в классе TCustomListBox. Главными из них являются наличие списка строк класса TStrings, средств отображения списка и возможность манипулирования его элементами.

Основные свойства класса TCustomListBox:

property Itemlndex: Integer;

Определяет индекс выделенного элемента в списке. Нумерация элементов начинается с нуля. Если выделенного элемента нет, это свойство принимает значение, равное –1. Если в списке может быть выделено несколько элементов, указывается индекс активного выделенного элемента. Свойство доступно только на этапе выполнения программы.

156

property Items: TStrings; Задает элементы списка. property Columns:longint; Количество колонок в списке.

property MultiSelect: Boolean;

Определяет, разрешается ли одновременно выделять несколько элементов списка (если True, то такое выделение возможно, в противном случаевыделитьможнотолькоодинэлемент).

property Selected [Index: Integer]: Boolean;

Если i-й элемент списка выделен, то Selected[i] равняется True, в противном случае – False. Свойство доступно только на этапе выполнения программы.

property Sorted: Boolean;

Указывает, должны ли строки в списке автоматически сортироваться в алфавитном порядке.

Метод procedure Clear удаляет все элементы списка. Событием по умолчанию для списка является событие

OnClick.

10.2. Компонент TComboBox

Страница Палитры компонентов: Standard.

Иерархия: TObject→TPersistent→TComponent→TControl→

TWinControl →TCustomComboBox

Комбинированная строка ввода Combo Box является экземпляром класса TCustomBox и объединяет в себе возможности строки ввода Edit и списка List Box. По внешнему виду компонент Combo Box напоминает обычную строку ввода Edit, но дополнительно имеет в правой части кнопку со стрелкой, направленной вниз.

Если щелкнуть мышью по этой кнопке, появится выпадающий список, подобный списку компонента List Box. Наличие строки ввода у компонента Combo Box расширяет его возможности по сравнению с обычным списком List Box. Например, используя строку ввода, можно вводить в список новые

157

элементы, осуществлять поиск нужного элемента в списке, отображать активный элемент списка.

Основные характеристики комбинированной строки ввода заложены в классе TCustomComboBox, являющимся непосредственным предком класса TCustomBox. Предком класса TCustomComboBox является непосредственно базовый класс всех оконных элементов управления TWinControl.

Основные свойства класса TСustomComboBox:

property DropDownCount: Integer;

Определяет максимальное число элементов, отображаемое в раскрывающемся списке.

property DroppedDown: Boolean;

Указывает, отображается ли раскрывающийся список в данный момент. Свойство доступно только на этапе выполнения программы.

property Itemlndex: Integer;

Определяет индекс выделенного элемента в списке. Нумерация элементов начинается с нуля. Если выделенного элемента нет, оно принимает значение, равное –1. Свойство доступно только на этапе выполнения программы.

property Items: TStrings;

Так же, как и в классе TCustomListBox, задает элементы списка.

type TComboBoxStyle = (csDropDown, csSimple, csDropDownList, csOwnerDrawFixed, csOwnerDrawVariable);

property Style: TComboBoxStyle;

Определяет стиль изображения списка:

csDropDown – строки списка имеют одинаковую фиксированную высоту, совпадающую с окном редактирования, что позволяет вводить или редактировать текст;

csSimple – список всегда раскрыт;

csDropDownList – строки списка имеют одинаковую фиксированную высоту, окно редактирования отсутствует;

158

csOwnerDrawFixed – строки списка имеют высоту, определяемую свойством ItemHeight, и не могут редактироваться в строке ввода;

csOwnerDrawVariable – строки списка имеют высоту, определяемую в обработчике события OnMeasureltem, возникающего при необходимости получения высоты элемента перед его перерисовкой, и не могут редактироваться в строке ввода.

type TCaption = string;

property Text: TCaption;

Содержит текст выбранной или введенной пользователем строки. Свойство унаследовано от класса TControl.

Поскольку в классе TComboBox по сравнению с классом TListBox отсутствует свойство MultiSelect, то в компоненте Combo Box не допускается множественный выбор.

Основные операции для обработки списка в компоненте Combo Box – добавление, удаление, поиск, сортировка элементов – осуществляется так же, как и в списке List Box.

Событием по умолчанию для комбинированной строки ввода Combo Box является событие OnChange, возникающее при изменении текста.

10.3. Класс TStrings

Абстрактный класс TStrings инкапсулирует поля и методы для работы с наборами строк. От него порождены специализированные потомки, обслуживающие наборы данных в таких компонентах, как TComboBox, TListBox и др. Эти классы объявлены в разделах Implementation соответствующих модулей и поэтому скрыты. Единственным доступным наследником

TStrings является TStringList.

Особенность TStrings в том, что элементами набора служат пары строка-объект, в которых строка собственно строка символов, а объект – любой потомок TObject. Это позволяет сохранять

159

в TStrings объекты с текстовыми примечаниями, сортировать объекты, отыскивать нужный объект по его описанию и т.д.

Свойства класса TStrings.

property Strings[index:integer]:string;

Векторное свойство дает доступ к строке с индексом index.

property Count:integer;

Текущее количество строк.

Методы класса TStrings.

function Add(const s:string):integer;

Добавляет строку в набор и возвращает ее индекс.

procedure Clear;

Очищает набор и освобождает память.

procedure Insert(index:integer;const s:string);

Вставляет строку s под индексом index.

procedure Delete(index:integer);

Удаляет строку с индексом index.

function IndexOf(const s:string):integer;

Возвращает индекс строки s.

10.4.Пример создания приложения

1.Открыть новое приложение с помощью команды File|

New Application.

2.Сохраните проект в вашем рабочем каталоге, выполнив команду меню File|Save Project As.

3.Из страницы Standard на Form1 поместить компонен-

ты Edit1:TEdit; Button1, Button2:TButton, ListBox1, ListBox2:TListBox (рис. 10.1).

4.Установить значение свойства Text компонента Edit1 – пустая строка.

5.Установить для левой кнопки значение свойства Caption равным «Ввод», а для правой – «Решение».

160