- •Белорусский национальный технический университет
- •Конспект лекций по курсу «конструирование программ и языки программирования»
- •1. Введение Общие понятия
- •Недостатки ms-dos
- •Преимущества Windows
- •Основные концепции Windows
- •Объекты Windows
- •Механизмы сообщения
- •2. Основы визуального программирования в delphi Принцип создания приложений в Delphi
- •Процесс создания исполняемого файла в Delphi
- •3. Стандартные визуальные компоненты Формы
- •4. События, обрабатываемые формой
- •5. Свойства стандартных компонент Общие сведения
- •Компонент Tlabel
- •Компонент tButton
- •Компонент tEdit
- •Компонента tMemo
- •Компонента tCheckBox Это кнопка с независимой фиксацией. Такой компонент обладает следующими свойствами:
- •Компонент tRadioGroup
- •Компонент tСheckListBox
- •Компонент tPanel
- •К омпонент tScrollBar
- •К омпонент tMainMenu
- •Компонент tPopupMenu
- •Компонент tListBox
- •Компонент tComboBox
- •6. Графические компоненты Общие свойства
- •Компонент tImage (отображение картинок)
- •Компонент tShape (стандартные фигуры)
- •Компонент tBevel (кромка)
- •Компонент tChart (построитель графиков)
- •Компонент tPaintBox
- •Компонента tImage
- •Компонента tShape
- •Компонент tBevel
- •Поддержка графических операций
- •Свойство объектов Canvas
- •7. Табличное представление данных
- •Компонент tStringGrid
- •Компонент tDrawGrid
- •8. Дополнительные компоненты Компонент tBitBtn
- •Компонент tSpeedButton
- •Компонент tToolBar
- •9. Организация стандартных диалогов
- •Компонент tOpenDialog и tSaveDialog
- •Компонент tOpenPictureDialog и tSavePictuteDialog
- •Компонент tColorDialog
- •Компонент tFontDialog
- •Компонент tPrintDialog
- •10. Программирование печати документов
- •11. Вывод графических изображений
- •Компонент tProgressBar
- •Компонент tAnimate
- •Компонент tDateTimePicker
- •Компонент tMediaPlayer
- •Компонент tAnimate
- •Средства создания мультимедийных приложений Что такое мультимедиа
- •Компонент tMediaPlayer
- •Два вида программ мультимедиа
- •Пример программы с мультимедиа
- •Обработка исключительных ситуаций
- •Структурная обработка исключительных ситуаций
- •Модель исключительных ситуаций в Delphi
- •Синтаксис обработки исключительных ситуаций
- •Примеры обработки исключительных ситуаций
- •Вызов исключительной ситуации
- •Доступ к экземпляру объекта exception
- •Предопределенные обработчики исключительных ситуаций
- •Исключения, возникающие при работе с базами данных
- •Заключение
- •Создание и использование ini-файлов
- •Развертывание приложений. Локализация и интернационализация приложений
- •Литература
- •12. Управление программой с помощью панели инструментов
- •Компонент tImageList
- •Компонент tToolBar- инструментальная панель
- •13. Создание программы с несколькими формами и средства управления ими
- •14. Создание многостраничного документа
- •Литература
13. Создание программы с несколькими формами и средства управления ими
Цель: Изучить методы, связанные с созданием программы, в которой используется несколько форм.
Постановка задачи:
Создать главную форму, содержащую название работы, ФИО исполнителей, кнопки изменения цвета формы и вызова другой формы.
Создать вторую форму для задания параметров, необходимых для вычисления определенного интеграла. На вторую форму поместить кнопку, при нажатии которой вычисляется интеграл и абсолютная погрешность его вычисления, а затем открывается третья форма, содержащая полученный результат.
Каждая из форм должна содержать кнопку, при нажатии которой можно вернуться назад в предыдущую форму.
Интерфейс программы, реализующей задания по пп.1-3, показан на фиг.1-4.
Фиг.1. Form1.
Фиг.2. FORM2.
Фиг.3. Form3.
Фиг.4. Form4.
Программные модули, реализующие сформулированную задачу, приведены ниже.
unit DemoMultiForm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, ComCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
StatusBar1: TStatusBar;
ColorDialog1: TColorDialog;
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses lab3_2b;
var
q : integer;
{$R *.DFM}
procedure TForm1.Button2Click(Sender: TObject);
begin
q := Form1.Color;
ColorDialog1.Execute;
Form1.Color := ColorDialog1.Color;
Label1.Font.Color := Form1.Color + 10000;
Button3.Enabled := True;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Form1.Color := q;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.ShowModal;
end;
end.
unit lab3_2b;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, ExtCtrls, Math;
type
TForm2 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Button1: TButton;
Image1: TImage;
Label4: TLabel;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure Edit3KeyPress(Sender: TObject; var Key: Char);
procedure Edit3Exit(Sender: TObject);
procedure Edit2Exit(Sender: TObject);
procedure Edit1Exit(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses lab3_3b;
var
q, w, e, r, t, y, u, i : extended;
{$R *.DFM}
procedure TForm2.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TForm2.Button3Click(Sender: TObject);
begin
Halt;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
q := StrToFloat(Edit1.Text); //nijnii predel
w := StrToFloat(Edit2.Text); //verxnii predel
e := StrToFloat(Edit3.Text); //4islo razbienii
if e =0 then
begin
ShowMessage('Division by ZERO detected !!! The program
will be closed !!!');
Halt;
end;
if q <=0 then
begin
ShowMessage('Division by ZERO detected !!! The program
will be closed !!!');
Halt;
end;
if w <=0 then
begin
ShowMessage('Division by ZERO detected !!! The program
will be closed !!!');
Halt;
end;
if q =1 then
begin
ShowMessage('Division by ZERO detected !!! The program
will be closed !!!');
Halt;
end;
if w =1 then
begin
ShowMessage('Division by ZERO detected !!! The program
will be closed !!!');
Halt;
end;
if q >w then
begin
ShowMessage('Please, change the number''s position and
restart the program !!!');
ShowMessage('The value of the left border MUST be bigger
than the value of the right one !!!');
Halt;
end;
r := (w - q)/e; //6ag
i := 0;
t := 0;
u := w;
while i <e do
begin
t := t + (r*(1/(q*ln(q))));
q := q + r;
i := i + 1;
end;
q := StrToFloat(Edit1.Text); //nijnii predel
y := ((w - q)/24)*sqr(r)*abs((1/(Power(u,3)*ln(u)))*
(2+(2/sqr(ln(u)))+(3/ln(u))));
Form3.Label1.Caption := FloatToStr(t);
Form3.Label2.Caption := FloatToStr(y);
Form3.ShowModal;
end;
procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9', #8, '.']) then key := #27;
end;
procedure TForm2.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9', #8, '.']) then key := #27;
end;
procedure TForm2.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9',#8]) then key := #27;
end;
procedure TForm2.Edit3Exit(Sender: TObject);
begin
if Length(Edit3.Text) <1 then
begin
MessageBox(0,'Please, fill the field with appropriate
number!', 'WARNING!!!', mb_OK);
ActiveControl := Edit3;
end;
end;
procedure TForm2.Edit2Exit(Sender: TObject);
begin
if Length(Edit2.Text) <1 then
begin
MessageBox(0,'Please, fill the field with appropriate
number!', 'WARNING!!!', mb_OK);
ActiveControl := Edit2;
end;
end;
procedure TForm2.Edit1Exit(Sender: TObject);
begin
if Length(Edit1.Text) <1 then
begin
MessageBox(0,'Please, fill the field with appropriate
number!', 'WARNING!!!', mb_OK);
ActiveControl := Edit1;
end;
end;
end.
unit lab3_3b;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, ExtCtrls;
type
TForm3 = class(TForm)
Image1: TImage;
Label1: TLabel;
Button1: TButton;
Image2: TImage;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure Label3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses lab3_4b, lab3_2b;
var
q, w : extended;
{$R *.DFM}
procedure TForm3.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TForm3.Label3Click(Sender: TObject);
begin
Form4.ShowModal;
end;
procedure TForm3.Button2Click(Sender: TObject);
begin
q := (2.3026*(ln(ln(StrToFloat(Form2.Edit2.Text)))-
ln(ln(2))))-(2.3026*(ln(ln(StrToFloat(Form2.Edit1.Text)))-
ln(ln(2))));
w := StrToFloat(Label1.Caption);
ShowMessage(FloatToStr(w - q));
end;
end.
unit lab3_4b;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, ExtCtrls;
type
TForm4 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
{$R *.DFM}
procedure TForm4.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TForm4.FormCreate(Sender: TObject);
begin
end;
end.
program Plaba3_1b;
uses
Forms,
lab3_1b in 'lab3_1b.pas' {Form1},
lab3_2b in 'lab3_2b.pas' {Form2},
lab3_3b in 'lab3_3b.pas' {Form3};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
Application.Run;
end.