Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методическое пособие для самостоятельных работ.doc
Скачиваний:
22
Добавлен:
16.11.2019
Размер:
2.89 Mб
Скачать

Vas :real;

MyRes :Teine;

s6 :string;

begin

Val(Edit4.Text,n,sig);

if sig<>0 then

ShowMessage('Введите целое число')

else

begin

if n>Dan.Count then

ShowMessage('Заданное число не должно быть больше '+IntToStr(Dan.Count))

else

begin

{Извлекаем из списка объект по заданному номеру,}

{ номера начинаются с нуля}

MyRes:=Dan.Items[n-1];

MyRes.Matem(vas);

{MyRes – указатель на i-й объект }

str(vas:6:2,s6);

Edit5.Text:=s6;

end;

end;

end;

end.

Контрольные вопросы

  1. В каких случаях целесообразно использование в программах процедур и функций?

  2. Как открыть модуль, если модули в виде файлов с расширением *.pas уже имеются?

  3. Если есть процедуры (функции) написанные в среде Borland Pascal и возникла необходимость разработать новую реализацию в Delphi. Как их включить в Delphi и использовать?

  4. Поясните классический подход для описания объектов.

  5. Поясните понятие «объект» и «класс».

Примеры составления программ

  1. Работа с файлом инициации

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Spin;

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

edSection: TEdit;

edParam1: TEdit;

edParam2: TEdit;

cbParam4: TCheckBox;

Button1: TButton;

Button2: TButton;

seParam3: TSpinEdit;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure edParam2Exit(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses IniFiles;

const

SectionName = 'InitSection';

IniFileName = 'DemoIni.ini';

var

Ini: TIniFile;

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

//Создает или изменяет файл инициации

begin

if edSection.Text='' then

edSection.Text := SectionName;

Ini := TIniFile.Create(IniFileName);

Ini.WriteString(edSection.Text, 'Param1', edParam1.Text);

Ini.WriteFloat(edSection.Text, 'Param2', StrToFloat(edParam2.Text));

Ini.WriteInteger(edSection.Text, 'Param3', seParam3.Value);

Ini.WriteBool(edSection.Text, 'Param4', cbParam4.Checked);

Ini.Destroy;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

if edSection.Text='' then

edSection.Text := SectionName;

Ini := TIniFile.Create(IniFileName);

edParam1.Text := Ini.ReadString(edSection.Text, 'Param1', 'Delphi');

edParam2.Text := FloatToStr(Ini.ReadFloat(edSection.Text,

'Param2', 3.1415));

seParam3.Value := Ini.ReadInteger(edSection.Text, 'Param3', 100);

cbParam4.Checked := Ini.ReadBool(edSection.Text, 'Param4', True);

Ini.Destroy;

end;

procedure TForm1.edParam2Exit(Sender: TObject);

begin

try

StrToFloat(edParam2.Text)

except

edParam2.SelectAll;

edParam2.SetFocus;

end

end;

end.

  1. Главная форма программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, ExtCtrls;

type

TMainForm = class(TForm)

Button1: TButton;

Image1: TImage;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

MainForm: TMainForm;

implementation

{$R *.DFM}

procedure TMainForm.Button1Click(Sender: TObject);

begin

Close

end;

end.

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

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Buttons;

type

TForm1 = class(TForm)

Memo1: TMemo;

Button1: TButton;

Button2: TButton;

OpenDialog1: TOpenDialog;

BitBtn1: TBitBtn;

Button3: TButton;

FontDialog1: TFontDialog;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses Printers;

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

// Выбор файла с текстом и его загрузка в редактор

begin

if OpenDialog1.Execute then

Memo1.Lines.LoadFromFile(OpenDialog1.FileName)

end;

procedure TForm1.Button2Click(Sender: TObject);

// Печать содержимого редактора как вывод в текстовый файл

var

Prn: TextFile;

k: Integer;

begin

AssignPrn(Prn);

Rewrite(Prn);

// Для печати используем такой же шрифт, как и для показа в редакторе:

Printer.Canvas.Font := Memo1.Font;

// Цикл печати:

for k := 0 to Memo1.Lines.Count-1 do

WriteLn(Prn, Memo1.Lines[k]);

CloseFile(Prn)

end;

procedure TForm1.Button3Click(Sender: TObject);

// Выбор шрифта и связывание его с Memo1

begin

if FontDialog1.Execute then

Memo1.Font := FontDialog1.Font

end;

end.

  1. Использование для печати документа свойства Printer.Canvas

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Buttons;

type

TForm1 = class(TForm)

Memo1: TMemo;

Button1: TButton;

Button2: TButton;

OpenDialog1: TOpenDialog;

BitBtn1: TBitBtn;

Button3: TButton;

FontDialog1: TFontDialog;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses Printers;

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

// Выбор файла с текстом и его загрузка в редактор

begin

if OpenDialog1.Execute then

Memo1.Lines.LoadFromFile(OpenDialog1.FileName)

end;

procedure TForm1.Button2Click(Sender: TObject);

// Печать содержимого редактора c помощью свойства Printer.Canvas

var

Y,dY,X,k: Integer;

S: String;

begin

if Memo1.Lines.Count=0 then Exit;

Screen.Cursor := crHourGlass;

with Printer do

begin

BeginDoc;

with Canvas do

begin

Font := Memo1.Font;

dY := TextHeight('1'); // Определяем высоту строки

Y := 3*dY; // Отступ от верхнего края листа

X := PageWidth div 15; // Отступ от левого края

for k := 0 to Memo1.Lines.Count-1 do

begin

// Выводим очередную строку

TextOut(X,Y,Memo1.Lines[k]);

// Смещаемся на следующую строку листа

inc(Y,dY);

if PageHeight-Y<2*dY then // Нижний край листа?

begin // Да

NewPage; // Переход на новый лист

// Выводим номер страницы посередине листа:

S := '- '+IntToStr(PageNumber)+' -';

TextOut((PageWidth-TextWidth(S)) div 2, dy, S);

// и отчеркиваем его от текста:

MoveTo(X, 3*dy div 2);

LineTo(PageWidth-X, 9*dy div 4);

// Ордината первой строки:

Y := 3*dY

end;

end;

end;

EndDoc;

end;

Screen.Cursor := crDefault;

end;

procedure TForm1.Button3Click(Sender: TObject);

// Выбор шрифта и связывание его с Memo1

begin

if FontDialog1.Execute then

Memo1.Font := FontDialog1.Font

end;

end.

  1. Использование для печати документа компонентов Quick Report

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Buttons;

type

TForm1 = class(TForm)

Memo1: TMemo;

Button1: TButton;

Button2: TButton;

OpenDialog1: TOpenDialog;

BitBtn1: TBitBtn;

Button3: TButton;

FontDialog1: TFontDialog;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses Printers, Unit2, dbtables;

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

// Выбор файла с текстом и его загрузка в редактор

begin

if OpenDialog1.Execute then

Memo1.Lines.LoadFromFile(OpenDialog1.FileName)

end;

procedure TForm1.Button2Click(Sender: TObject);

// Печать содержимого редактора c помощью компонентов Quick Report

begin

if Memo1.Lines.Count=0 then Exit;

with Form2 do

begin

QRLabel1.Caption := OpenDialog1.FileName;

QRStringsBand1.Items.Assign(Memo1.Lines);

QRStringsBand1.Font := Memo1.Font;

QuickRep1.Preview;

end

end;

procedure TForm1.Button3Click(Sender: TObject);

// Выбор шрифта и связывание его с Memo1

begin

if FontDialog1.Execute then

Memo1.Font := FontDialog1.Font

end;

end.

Задания для самостоятельного выполнения

  1. Ввести динамический одномерный массив, состоящий из N элементов. Размер массива N ввести во время выполнения программы в поле Edit1. Значения массива задать функцией Random(R), где R= 11. Вывести сформированный массив на экран в компонент Label1. Найти минимальный элемент массива и его индекс. Результат вывести на экран в компонент Label2. Процедуру выполнения данного задания оформить в событии Button1Click компонента Button1.

  2. Ввести динамический двумерный массив (матрицу) NxM. Размеры массива N и M ввести во время выполнения программы в поле Edit1 и Edit2. Значения матрицы задать функцией Random(R), где R=31. Вывести сформированную матрицу на экран в компонент Label1. Найти сумму значений элементов этой матрицы, лежащих в диапазоне от 7 до 19 и вывести на экран в компонент Label2. Процедуру выполнения данного задания оформить в событии Button1Click компонента Button1.

  3. Ввести динамический одномерный массив, состоящий из N элементов. Размер массива N ввести во время выполнения программы в поле Edit1. Значения массива задать функцией Random(R), где R=30. Вывести сформированный массив на экран в компонент Label1. Найти максимальный и минимальный элементы массива и их сумму. Результат вывести на экран в компонент Label2. Процедуру выполнения данного задания оформить в событии Button1Click компонента Button1.

  4. Ввести динамический двумерный массив (матрицу) NxM. Размеры массива N и M ввести во время выполнения программы в поле Edit1 и Edit2. Значения матрицы задать функцией Random(R), где R=101. Вывести сформированную матрицу на экран в компонент Label1. Найти среднее арифметическое значение элементов этой матрицы, лежащих в диапазоне от 31 до 52 и вывести на экран в компонент Label2. Процедуру выполнения данного задания оформить в событии Button1Click компонента Button1.

  5. Ввести динамический одномерный массив, состоящий из N элементов. Размер массива N ввести во время выполнения программы в поле Edit1. Значения массива задать функцией Random(R), где R= 40. Вывести сформированный массив на экран в компонент Label1. Найти произведение минимального и максимального элементов. Результат вывести на экран в компонент Label2. Процедуру выполнения данного задания оформить в событии Button1Click компонента Button1.

  6. Ввести динамический двумерный массив (матрицу) NxM. Размеры массива N и M ввести во время выполнения программы в поле Edit1 и Edit2. Значения матрицы задать функцией Random(R), где R=28. Вывести сформированную матрицу на экран в компонент Label1. Найти произведение значений всех элементов четных строк этой матрицы и вывести на экран в компонент Label2. Процедуру выполнения данного задания оформить в событии Button1Click компонента Button1.

  7. Ввести динамический двумерный массив (матрицу) NxM. Размеры массива N и M ввести во время выполнения программы в поле Edit1 и Edit2. Значения матрицы задать функцией Random(R), где R=34. Вывести сформированную матрицу на экран в компонент Label1. Найти сумму значений элементов этой матрицы, лежащих в диапазоне от 7 до 19 и вывести на экран в компонент Label2. Процедуру выполнения данного задания оформить в событии Button1Click компонента Button1.