1. Запустите среду программирования Delphi 7.
2. Создайте новое приложение (VCL Form Application), сохраните его в рабочей папке. Для этого однократно щелкните левой клавишей мыши по кнопке «Save (Ctrl+S)». Назовите файл, например, Lab_1.
3. В окне Object Inspector задайте свойства основной формы Form1, перечисленные в таблице 1.
4. Последовательно расположите на форме Form1 (см. рис. 1) перечисленные в таблице 1 объекты и установите для них указанные значения свойств. Объекты сгруппированы на панели инструментов Delphi. По мере добавления объектов на форму регулярно выполняйте запуск программы (кнопка «Run (F9)»). Немного поработайте с приложением, чтобы разобраться с его особенностями. Попробуйте, перетаскивая границы изменить размеры окна, сменить его положение, свернуть, максимизировать, развернуть до нормальных размеров, понажимать на кнопки, ввести в редактируемые элементы произвольную текстовую, числовую информацию, нажать клавиши Alt+N, Alt+M и т.д. Закройте приложение. Постарайтесь разобраться с назначением свойств объектов. С этой целью можно попытаться установить значения свойств, отличные от указанных в таблице 1, запуская при этом программу и наблюдая за происходящими изменениями. Не забудьте по окончании экспериментов восстановить для всех объектов значения свойств из таблицы 1.
|
|
Таблица 1
№ п.п. | Объект: Класс\Группа инструментов | Свойство | Значение |
1. | Form1: TForm | Caption | Сложение матриц |
Font\Size | 9 | ||
Position | poScreenCenter | ||
BorderStyle | bsDialog | ||
2. | Button1: TButton\Standard | Caption | Выход |
3. | Edit1: TEdit\Standard | Width | 50 |
4. | UpDown1: TUpDown\Win32 | Associate | Edit1 |
Max | 10 | ||
Min | 1 | ||
5. | Label1: Label\Standard | Caption | &N–количество строк: |
FocusControl | Edit1 | ||
6. | Edit2: TEdit\Standard | Width | 50 |
7. | UpDown2: TUpDown\Win32 | Associate | Edit2 |
Max | 10 | ||
Min | 1 | ||
8. | Label2: TLabel\Standard | Caption | &M–количество столбцов: |
FocusControl | Edit2 | ||
9. | GroupBox1: TGroupBox\Standard | Caption | Матрица A: |
10. | StringGrid1: TStringGrid\Additional | Align | alClient |
ColCount | 2 | ||
DefaultColWidth | 30 | ||
Options\goEditing | True | ||
RowCount | 2 | ||
ScrollBars | ssNone | ||
11. | GroupBox2: TGroupBox\Standard | Caption | Матрица B: |
12. | StringGrid2: TStringGrid\Additional | Align | alClient |
ColCount | 2 | ||
DefaultColWidth | 30 | ||
Options\goEditing | True | ||
RowCount | 2 | ||
ScrollBars | ssNone | ||
13. | GroupBox3: TGroupBox\Standard | Caption | Матрица C: |
14. | StringGrid3:TStringGrid\Additional | Align | alClient |
ColCount | 2 | ||
DefaultColWidth | 30 | ||
Options\goEditing | False | ||
RowCount | 2 | ||
ScrollBars | ssNone | ||
15. | Label3: TLabel/Standard | Caption | + |
Font\Size | 24 | ||
Font\Style\fsBold | True | ||
16. | Label4: TLabel/Standard | Caption | = |
Font\Size | 24 | ||
Font\Style\fsBold | True |
5. Добавьте в описание приватных процедур класса TForm1 (верхняя часть окна редактирования модуля Unit1) описание процедуры ReCalculation:
type
TForm1 = class(TForm)
Panel1: TPanel;
…
StringGrid3: TStringGrid;
private
procedure ReCalculation;
public
end;
6. В разделе implementation текста модуля Unit1 добавьте процедуру ReCalculation:
implementation
{$R *.dfm}
procedure TForm1.ReCalculation;
|
|
Var
I,J,N,M,A,B,C:Integer;
Begin
N:=StrToInt(Edit1.Text);
M:=StrToInt(Edit2.Text);
for I:=1 to N do
for J:=1 to M Do
try
A:= StrToInt(StringGrid1.Cells[J,I]);
B:= StrToInt(StringGrid2.Cells[J,I]);
C:=A+B;
StringGrid3.Cells[J,I]:=IntToStr(C)
except
beep;
StringGrid3.Cells[J,I]:='?';
end;
end;
7. Одинарным щелчком мыши по объекту Button1 на форме Form1 («Сложение матриц») или в окне ObjectTreeView выберите объект Button1 («Выход»).
8. Дважды щелкните левой клавишей мыши по строке выбора метода для события onClick в закладке Events окна Object Inspector. На экране должно появиться окно редактирования программы, содержащее шаблон метода Button1Click, определяющего реакцию формы Form1 («Сложение матриц») на нажатие клавиши Button1 («Выход»).
9. Наберите текст процедуры Button1Click:
procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;
10. Последовательно добавьте соответствующим объектам перечисленные ниже методы, определяющие реакцию приложения на различные события (см. п. 7–9). По мере добавления методов регулярно выполняйте запуск программы, при необходимости исправляйте допущенные ошибки.
a. Метод FormCreate – реакция на событие onCreate, создание формы Form1 («Сложение матриц») при запуске приложения:
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[0,1]:='1';
StringGrid1.Cells[1,0]:='1';
StringGrid1.Cells[1,1]:='0';
StringGrid2.Cells[0,1]:='1';
StringGrid2.Cells[1,0]:='1';
StringGrid2.Cells[1,1]:='0';
StringGrid3.Cells[0,1]:='1';
StringGrid3.Cells[1,0]:='1';
StringGrid3.Cells[1,1]:='0'
end;
b. Метод Edit1Change – реакция на события onChange, изменение Edit1 (количества строк N):
procedure TForm1.Edit1Change(Sender: TObject);
Var
J,N,M:Integer;
Begin
M:=StrToInt(Edit2.Text);
N:=StrToInt(Edit1.Text);
StringGrid1.RowCount:=N+1;
StringGrid2.RowCount:=N+1;
StringGrid3.RowCount:=N+1;
StringGrid1.Cells[0,N]:=Edit1.Text;
StringGrid2.Cells[0,N]:=Edit1.Text;
StringGrid3.Cells[0,N]:=Edit1.Text;
for J:=1 to M do
begin
if StringGrid1.Cells[J,N]=''then
StringGrid1.Cells[J,N]:='0';
if StringGrid2.Cells[J,N]='' then
StringGrid2.Cells[J,N]:='0';
end;
ReCalculation
end;
c. Метод Edit2Change – реакция на события onChange, изменение Edit2 (количества столбцов M):
procedure TForm1.Edit2Change(Sender: TObject);
Var
I,N,M:Integer;
begin
M:=StrToInt(Edit2.Text);
N:=StrToInt(Edit1.Text);
StringGrid1.ColCount:=M+1;
StringGrid2.ColCount:=M+1;
StringGrid3.ColCount:=M+1;
StringGrid1.Cells[M,0]:=Edit2.Text;
StringGrid2.Cells[M,0]:=Edit2.Text;
StringGrid3.Cells[M,0]:=Edit2.Text;
for I:=1 to N do
begin
if StringGrid1.Cells[M,I]='' then
StringGrid1.Cells[M,I]:='0';
if StringGrid2.Cells[M,I]='' then
StringGrid2.Cells[M,I]:='0';
end;
ReCalculation
end;
d. Метод StringGrid1KeyUp – реакция на события onKeyUp, редактирование матрицы A (StringGrid1)и матрицы B (StringGrid2):
procedure TForm1.StringGrid1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
ReCalculation;
end;
11. Выполните запуск программы. Строки ввода и ячейки матриц последовательно заполните данными 1-го и 2-го контрольных примеров. Убедитесь в правильности работы программы. При необходимости исправьте допущенные ошибки.
12. Сохраните исходный файл проекта в своей рабочей папке.
13. Выйдите из среды программирования Delphi с помощью меню File\Exit.
Приложение С (справочное)