
Учебное пособие информатика
.pdf
Задание 5. Разработка многоформенных приложений
Данное задание целиком базируется на предыдущем, изменяется только графический интерфейс разрабатываемого приложения.
Часто при разработке приложений возникает необходимость использования нескольких форм одновременно. Рассмотрим, как это можно реализовать в среде Lazarus.
Запустите Lazarus, выполните стандартные команды создания нового приложения Файл – Создать – Приложение и сохраните созданный проект в отдельной папке.
Созданный проект имеет одну форму. Выполните последовательно 2 раза команду: Файл – Создать форму. Обратите внимание, что кроме появления двух новых форм Form2 и Form3, в окне редактора кода появилось два модуля unit – unit2 и unit 3 (рис. 5.1).
Рис. 5.1. Окно редактора кода
41

Следовательно, каждая форма соответствует своему модулю unit, и при сохранении проекта будут сохранены последовательно три файла unit1.pas, unit2.pas и unit3.pas.
Теперь организуем: в первой форме – ввод данных, во второй форме - табличный вывод результатов расчётов, в третьей форме – построение графиков. Основные расчёты будут происходить в модуле unit1.pas. Для выполнения программы необходимо использовать индивидуальное задание.
Для того, чтобы данные из одного модуля были доступны в другом модуле, необходимо выполнить следующие действия:
- в модуле unit1.pas напишите дополнительный код: между строками inmplementation и {TForm1} запишите две строки:
uses
Unit2, Unit3;
как это показано на рис. 5.2;
Рис. 5.2. Объявление доступа к модулям Unit2 и Unit3 из модуля Unit1 - в модулях unit2.pas и Unit3.pas сделайте аналогичным образом запись:
uses
Unit1;
42
Теперь модуль Unit1 может быть доступен из модулей Unit2 и Unit3, то есть переменные, объявленные в модуле Unit1, могут использоваться в модулях
Unit2.
Расставьте компоненты на формах Form1, Form2, Form3 приблизительно так, как показано на рис. 5.3. Создайте код в модуле Unit1.pas в соответствии с образцом, рис. 5.4.
Для кнопок «Закрыть» на формах Form2 и Form3 создайте обработчики
OnClick с текстом Form2.Close и Form3.Close соответственно.
Убедитесь в работоспособности разработанного приложения.
Затем самостоятельно добавьте форму Form4, установите на неё компонент Grid и измените код приложения так, чтобы одновременно с формами Form2 и Form3 показывалась форма Form4 с табличным выводом значений на участке от а до f. Для этого необходимо изменить код цикла от a до f.
43

Рис. 5.3. Компоненты на экранных формах Form1, Form2, Form3
44

Рис. 4. Образец кода в модуле Unit1.pas
45
Приложение 1. Образец оформления задания
Московский государственный автодорожный институт (Государственный технический университет)
Сочинский филиал
ОТЧЁТ к заданию №1 по дисциплине «Информатика»
«СОЗДАНИЕ КАЛЬКУЛЯТОРА»
Выполнил: студент гр. МТ-09-1 Василенко М.С. Принял: доцент Белецкий А.В.
СОЧИ, 2010
46

Задание 1
Разработать интерфейс и код программы для сложения, вычитания, деления и умножения чисел с плавающей точкой. Разработать алгоритм программы. Оформить отчёт в редакторе Word.
1. Алгоритм программы
Ввод А,Б.
|
|
Да |
|
|
|
|
|
||
|
|
|
|
|
|
||||
Кнопка 1 нажата? |
|
|
|
|
|
C=A*B |
|
||
|
|
|
|
|
|
||||
|
|
|
|
|
|||||
Нет |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
Да |
|
|
|
|
|||
Кнопка 2 нажата? |
|
|
|
|
C=A-B |
|
|||
|
|
|
|
|
|||||
Нет |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
Да |
|
|
|
|
|||
Кнопка 3 нажата? |
|
|
|
|
C=A/B |
|
|
||
|
|
|
|
|
|
||||
Нет |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
Да |
|
|
|
||||
Кнопка 4 нажата? |
|
C=A+B |
|
|
|
||||
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
Вывод С
Конец.
47
2. Текст программы
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Label1: TLabel; Label2: TLabel; Label4: TLabel;
procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject);
private
{private declarations } public
{public declarations }
end;
var
Form1: TForm1; a,b,c:Real;
implementation
{ TForm1 }
48
procedure TForm1.Button1Click(Sender: TObject); begin
a:=StrToFloat(Edit1.text);
b:=strtofloat(edit2.text);
c:=a*b;
edit3.text:=floattostr(c);
end;
procedure TForm1.Button2Click(Sender: TObject); begin
a:=StrToFloat(Edit1.text);
b:=strtofloat(edit2.text); c:=a-b; edit3.text:=floattostr(c);
end;
procedure TForm1.Button3Click(Sender: TObject); begin
a:=StrToFloat(Edit1.text);
b:=strtofloat(edit2.text);
c:=a/b;
edit3.text:=floattostr(c);
end;
procedure TForm1.Button4Click(Sender: TObject); begin
a:=StrToFloat(Edit1.text);
b:=strtofloat(edit2.text);
c:=a+b;
edit3.text:=floattostr(c);
end;
initialization {$I unit1.lrs}
end.
49

3.Результат работы программы
50