Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Яровой_Информатика.doc
Скачиваний:
49
Добавлен:
13.04.2015
Размер:
3.2 Mб
Скачать

Размещение компонентов на форме и задание им нужных свойств

После первого запуска, Delphi автоматически открывает страницу Standard(Стандартные) палитры компонентов. В других случаях выбираем страницу Standard ( ЩЛК на закладке Standard) палитры компонентов и находим кнопки с выплывающими подсказками Edit, Memo, Button, которые отображают нужные нам компоненты в палитре.

Затем размещаем компоненты на форме:

- в палитре компонентов выбираем компонент (ЩЛК по нему);

- ЩЛК в точке рабочей области формы, где должен располагаться левый верхний угол компонента.

ЩЛК на кнопке Edit, а затем ЩЛК в точке рабочей области формы разместим компонент Edit1. Аналогично размещаем компонент Edit2. Затем разместим компонент Memo1 и три компонента Button1, Button2, Button3 согласно рис.1. Компоненты можно перетаскивать по форме и менять их размеры.

Компоненты размещенные на форме будем называть объектами.

Изменение свойств объектов производится в окне Object Inspector(Инспектор объекта). Это окно имеет 2 страницы: страницу Properties(Свойства),которая открывается при ЩЛК на закладке Properties, и страницу Events(события), которая открывается при ЩЛК на закладке Events. После первого запуска, Delphi автоматически открывает страницу Properties.

Изменяются свойства следующим образом:

- выбирается нужный объект (ЩЛК на нем) на форме или в выпадающем списке в верхней части окна Инспектора объекта;

- в левой колонке страницы находится названия свойства, а в правой колонке – его значение которое меняется на новое. Изменения можно производить вводом нового значения с клавиатуры или выбором одного из предопределенных значений из списка.

Свойства могут быть простыми (определяемые одним значением) или сложными (многосоставными), определяемые совокупностью значений. Слева от названия сложного свойства ставится символ +, при двойном щелчке ЩЛК (2 ЩЛК) на его названии оно раскрывается и показывает все свои вложенные подсвойства.

Изменим нужные свойства формы Form1 и размещенных на ней объектов:

  1. Изменим, текст заголовка окна Form1. Для этого выберем Form1(ЩЛК на пустом месте рабочей области Form1). Затем на странице Properties окна Object Inspector в левой колонке найдем свойство Caption(Заголовок) и правой колонке введем с клавиатуры новый заголовок окна, т.е. текст “Перемножение матриц”.

  2. Аналогично изменим тексты заголовков объектов:

Button1 на “Ввод a[i,j]”;

Button2 на “Ввод b[i,j]”;

Button3 на “Вычислить”.

  1. Для объектов Edit1 и Edit2 свойству Text в правой колонке зададим, пустую строку (т.е. с клавиатуры удалим автоматически отображаемое значение Edit1)

  2. Внимание. Заголовок объекта Memo1 не изменять.

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

В создаваемой программе необходимо запрограммировать 4 события:

1. ЩЛК на кнопке “Ввод a[i,j]” (OnClick).

2. ЩЛК на кнопке “Ввод b[i,j]” (OnClick).

3. ЩЛК на кнопке “Вычислить” (OnClick).

4. Создание формы окна (OnCreate).

С событием OnCreate (при создании) связана процедура-обработчик Form Create, заголовок которой Delphi выдает автоматически:

procedure TForm1.FormCreate (Sender: TObject);

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

Чтобы получить заготовку процедуры-обработчика FormCreate необходимо:

- выбрать форму Form1, т.е. ЩЛК на пустом месте рабочей области

формы;

- в окне Инспектора объекта открыть страницу Events, т.е. ЩЛК на

вкладке Events;

- в левой колонке найти строку с названием события OnCreate и

произвести двойной щелчок (2ЩЛК) в правой колонке этой же строки.

При этом Delphi вызовет редактор программы, в окне кода автоматически создаст нужный текст и разместит курсор в месте начала ввода операторов:

procedure TForm1.FormCreate (Sender : TObject);

begin

end;

Эта процедура – обработчик часто называется методом класса TForm1 и описывает главную форму Form1. Параметр Sender ( передающий тип) характеризует источник сообщения о случившемся событии.

Чтобы получить заготовку процедуры-обработчика события Click на кнопке ’’Ввод a[i,j]’’, надо дважды щелкнуть на ней левой клавишей мыши (2ЩЛК). При этом Delphi сделает активным окно кода, вызовет редактор программы, автоматически создаст нужный текст и разместит курсор в том месте, где можно начинать ввод операторов процедуры:

procedure TForm 1.Button1Click (Sender : TObject);

begin

end;

Аналогично создаются заготовки процедур-обработчиков, вызываемых при ЩЛК на кнопках ’’ Ввод b[i,j]’’ и ’’ Вычислить ’’.

Перед созданием очередной заготовки процедуры необходимо переместить курсор в начало пустой строки, следующей после end; (т.е. в начало строки очередной заготовки).

В каждую из 4-х полученных заготовок введем операторы, реализующие нужные алгоритмы.

1. В процедуре TForm1.FormCreate присвоим начальные значения 1 переменным i,j, определяющим соответственно номера строк и столбцов массива а, и переменным k,l, определяющим номера строк и столбцов массива b. Отображение в строке Edit1.Text подсказки ’’a[1,1]=’’ реализуем оператором присваивания:

Edit1.Text := ’a[’+IntToStr(i)+’,’+IntToStr(j)+’]=’;

Текст процедуры может выглядеть так:

procedure TForm1.FormCreate(Sender: TObject);

begin

i:=1;j:=1;k:=1;l:=1;

Edit1.Text:='a['+IntToStr(i)+','+IntToStr(j)+']=';

end;

2. В процедуре TForm1.Button1Click (Sender: TObject) запишем операторы ,реализующие:

- присвоение элементу массива a числа, введенного в строке Edit2.Text;

- отображение в строке Edit1.Text подсказки очередного вводимого

элемента матрицы a;

- нужные изменения значений переменных i,j, обеспечивающие «построчный» ввод элементов матрицы a;

- отображение в Мемо1 текста «Элементы матрицы А введены», а в строке Edit1. Text - подсказки «b[1,1] =» о начале ввода элементов матрицы В. Условием отображения этой информации является равенство i=5.

Текст процедуры может выглядеть так:

procedure TForm1.Button1Click(Sender: TObject);

begin

if i<5 then begin

a[i,j]:=StrToFloat(Edit2.Text);

Memo1.Lines.Add('a['+IntToStr(i)+','+IntToStr(j)+']='+FloatToStr(a[i,j]));

if i<=4 then j:=j+1;

if j>4 then

begin

i:=i+1;j:=1;

end;

if i<5 then Edit1.Text:=’a[‘+IntToStr(i)+’,’+ IntToStr(j)+’]=’;

end else

begin

Memo1.Lines.Add(‘Элементы матрицы А введены’);

Edit1.Text:=’b[‘+IntToStr(k)+’,’+IntToStr(l)+’]=’;

end;

end;

3. Аналогично в процедуре TForm2.Button2Click (Sender: TObject) запишем операторы, реализующие:

- присвоение элементу массива b числа, введенного в строке Edit2.Text;

- отображение в строке Edit1.Text подсказки очередного вводимого

элемента матрицы b;

- нужные изменения значений переменных l,k, обеспечивающие «построчный» ввод элементов матрицы b;

- отображение в Мемо1 текста «Элементы матицы В введены».

Условием отображения этой информации является равенство k=5.

Текст процедуры может выглядеть так:

procedure TForm1.Button2Click(Sender: TObject);

begin

if k<5 then begin

b[k,l]:=StrToFloat(Edit2.Text);

Memo1.Lines.Add('b['+IntToStr(k)+','+IntToStr(l)+']='+FloatToStr(b[k,l]));

if k<=4 then l:=l+1;

if l>4 then

begin

k:=k+1; l:=1;

end;

if i<5 then Edit1.Text:=’b[‘+IntToStr(k)+’,’+ IntToStr(l)+’]=’;

end else

Memo1.Lines.Add(‘Элементы матрицы В введены’);

end;

4. В процедуре TForm1.Button3Click (Sender: TObject) запишем операторы, реализующие:

- очистку строк редактора Memo1, которая производится стандартной процедурой Clear (Очистить);

- вычисления элементов матрицы C по формуле (5);

- отображение в строках редактора Memo1 значений элементов матрицы C.

Текст процедуры:

procedure TForm1.Button3Click(Sender: TObject);

begin

Memo1.Lines.Clear;

For i:=1 to 4 do

for j:=1 to 4 do

begin

c[i,j]:=0.0;

for k:=1 to 4 do

c[i,j]:=c[i,j]+a[i,k]*b[k,j];

Memo1.Lines.Add('c['+IntToStr(i)+','+IntToStr(j)+']='+floatToStr(c[i,j]));

end;

end;

5. Областью видимости переменных i, j, l, k и массивов a, b, c, называется связь места их описания(объявления) в модуле и места их использования. Дадим их описания в интерфейсном разделе модуля, сделав их видимыми и доступными внутри модуля (из всех процедур-обработчиков событий) и из внешних модулей:

var

Form1: TForm1;

i, j, l, k: integer;

a, b, c: array[1..4,1..4] of real;

Тогда окончательно получим текст модуля:

unit Unit1;

interface

uses

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

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Edit1: TEdit;

Edit2: TEdit;

Memo1: TMemo;

Button1: TButton;

Button2: TButton;

Button3: TButton;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

i,j,l,k: integer;

a,b,c: array[1..4,1..4] of real;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

i:=1;j:=1;k:=1;l:=1;

Edit1.Text:='a['+IntToStr(i)+','+IntToStr(j)+']=';

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

if i<5 then begin

a[i,j]:=StrToFloat(Edit2.Text);

Memo1.Lines.Add('a['+IntToStr(i)+','+IntToStr(j)+']='+FloatToStr(a[i,j]));

if i<=4 then j:=j+1;

if j>4 then

begin

i:=i+1; j:=1;

end;

if i<5 then Edit1.Text:='a['+IntToStr(i)+','+IntToStr(j)+']=';

end else

begin

Memo1.Lines.Add('Элементы матрицы А введены');

Edit1.Text:='b['+IntToStr(k)+','+IntToStr(l)+']=';

end;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

if k<5 then begin

b[k,l]:=StrToFloat(Edit2.Text);

Memo1.Lines.Add('b['+IntToStr(k)+','+IntToStr(l)+']='+FloatToStr(b[k,l]));

if k<=4 then l:=l+1;

if l>4 then

begin

k:=k+1; l:=1;

end;

if k<5 then Edit1.Text:='b['+IntToStr(k)+','+IntToStr(l)+']=';

end else

Memo1.Lines.Add('Элементы матрицы В введены');

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

Memo1.Lines.Clear;

for i:=1 to 4 do

for j:=1 to 4 do

begin

c[i,j]:=0.0;

for k:=1 to 4 do

c[i,j]:=c[i,j]+a[i,k]*b[k,j];

Memo1.Lines.Add('c['+IntToStr(i)+','+IntToStr(j)+']='+FloatToStr(c[i,j]));

end;

end;

end.