Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка DELPHI.DOC
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
2.73 Mб
Скачать

Пример 1

Создадим приложение, выполняющее какие-либо “полезные” действия. Для этого продолжим работу над проектом, форма которого представлена на рис.11. Пусть приложение будет выполнять сложение двух чисел s = a + b. Создадим форму, приведенную на рис.13.

Рис. 13. Форма к примеру 1.

В данном проекте использовались два новых компонента TLabel и TEdit (по сравнению с рис. 11). Компонент TLabel позволяет отобразить статический, нередактируемый текст. Используя этот компонент, задаются заголовки для других интерфейсных элементов. Текст заголовка вводится с помощью инспектора объектов (свойство Caption). Если свойство AutoSize равно “True”, то размер компонента динамически изменяется в зависимости от размера текста. Для того чтобы текст располагался в нескольких строчках, нужно свойству WordWrap задать True.

Компонент TEdit понадобился для создания полей ввода. С помощью этого компонента строятся строки редактирования – прямоугольные окна, в которых возможен ввод и редактирование текста. TEdit – однострочный редактор. Этот редактор содержит свойство Text, с помощью которого можно передавать данные внутрь приложения. Числа вводятся в виде текста, полученный текст программно преобразуется в числа с помощью функций преобразования. Окончание ввода осуществляется путем передачи фокуса другому компоненту, используя нажатие клавиши Tab. Если свойству ReadOnly задать значение True, то можно запретить ввод данных в данное поле ввода и использовать компонент TEdit для вывода результатов расчетов.

В качестве события, инициализирующего выполнение сложения, выберем нажатие на первую кнопку Button1 (кнопка “Расчет”). Выберем подходящее встроенное для кнопки Button1 событие - событие OnClick.

В рассматриваемом примере используются Label1, Label2, Label3, Edit1, Edit2, Edit3, Button1, Button2. Так как вводятся числа, то первоначально в свойстве Text интерфейсных элементов Edit1 и Edit2 нужно удалить с помощью инспектора объектов имеющийся текст. Далее необходимо задать свойство TabOrder для всех элементов – оно задает порядок “обегания” всех объектов на форме с помощью клавиши Tab. После запуска приложения фокус должен быть на Edit1. Поэтому необходимо задать свойство TabOrder для элемента Edit1 равным 0. Для Edit2 свойство TabOrder необходимо задать равным 1, Button1 - 2, Button2 – 3.

Далее запрограммируем обработчик события на нажатие кнопки “ Расчет”. Для этого в редакторе кода необходимо “вызвать” заготовку требуемого обработчика. Заготовку события OnClick в редакторе кода будет сгенерирована, если выполнить двойной щелчок с помощью левой клавиши мыши на элементе Button1. Между begin и end нужно написать код обработки события, выполняющий следующее:

  • взять строку Edit1.Text и преобразовать ее в число;

  • взять строку Edit2.Text и преобразовать ее в число;

  • выполнить сложение этих чисел;

  • полученный числовой результат преобразовать в текст и этот текст поместить в свойство Edit3.Text для отображения на экране дисплея.

Примем, что в данном случае будем работать с целыми числами. Решим проблему ограничения ввода только цифр. Этого можно достичь, если задать обработчик событий OnKeyPress – этот обработчик обрабатывает каждое нажатие клавиши на клавиатуре при вводе текста (в данном случае чисел). Таких обработчиков нужно два: для Edit1 и Edit2.

Вначале сформируем обработчик OnKeyPress для Edit1. Для этого необходимо выполнить следующее: мышью выбрать Edit1 на форме, в инспекторе объектов перейти на страницу событий (Events), выбрать OnKeyPress и выполнить двойное нажатие левой кнопкой мыши в поле справа от названия события. Появится редактор кода, в котором будет заготовка нужного обработчика. Введем текст:

If not (key in [‘0’..’9’]) then Key:=#0;

Этот оператор “отсеет” все символы, кроме цифр. Фактически этот обработчик исполняет роль фильтра, заменяя введенные нецифровые символы на самый первый символ (#0) из таблицы ASCII, который не имеет графического начертания.

Теперь сформируем обработчик OnKeyPress для Edit2. Так как он будет таким же, что и для Edit1, поступим следующим образом. Выберем Edit2, перейдем на страницу событий в инспекторе объектов, мышью выберем OnKeyPress - справа в этой строчке будет стрелка. Мышью нажмем на стрелку - появится в окошке строка Edit1KeyPress. Выберем мышью эту строку – один обработчик события OnKeyPress будет работать на два элемента Edit1 и Edit2.

Ниже приводится полный текст модуля Unit1.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type

TForm1 = class(TForm)

{Список используемых интерфейсных элементов}

Label1: TLabel;

Edit1: TEdit;

Label2: TLabel;

Edit2: TEdit;

Label3: TLabel;

Edit3: TEdit;

Button1: TButton;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Edit1KeyPress(Sender: TObject;

var Key: Char);

end;

var Form1: TForm1;

implementation

{$R *.dfm}

{Программные коды используемых обработчиков событий}

procedure TForm1.Button1Click(Sender: TObject);

begin

Edit3.Text:=IntToStr(StrToInt(Edit1.Text)+

StrToInt(Edit2.Text));

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

Close;

end;

procedure TForm1.Edit1KeyPress(Sender: TObject;

var Key: Char);

begin

if not (key in ['0'..'9','-',#8,#13]) then key:=#0;

end;

end.

В обработчике OnKeyPress фильтр был расширен, чтобы появилась возможность ввода следующих дополнительных символов: ‘-‘, #8 – Backspace, #13 – Enter.

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