Использование компонента stringgrid для ввода-вывода элементов матрицы
Исходная форма

Текст программного модуля
unit Unit1;
Interface
usesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, Grids;
Type
TForm1 = class(TForm)
StringGrid1: TStringGrid; StringGrid2: TStringGrid; BitBtn1: TBitBtn;
Button2: TButton; Edit1: TEdit; Edit2: TEdit;
Label1: TLabel; StaticText1: TStaticText; Label2: TLabel;
Label3: TLabel; Memo1: TMemo; Button1: TButton;
Button3: TButton; Button4: TButton; Label4: TLabel;
procedure FormActivate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private { Private declarations }
public { Public declarations }
end;
const mm=10; nn=10 ; // максимальная размерность
type matr1 = array [1..mm,1..nn] of real; // тип пользователя -
// массив действительных чисел
Var
Form1: TForm1;
m,n:integer;
a,b : matr1;
implementation
{$R *.DFM}
procedure TForm1.FormActivate(Sender: TObject);
begin
edit1.SetFocus;
end;
//ввод размерности матрицы, анализ чисел, заготовка таблицы
procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
begin
m:=strtoint(edit1.text); // кол-во строк
n:=strtoint(edit2.text); // кол-во столбцов
if ( m > mm ) or ( n > nn ) // анализ введенной размерности
then begin showmessage('неверный ввод') ;
edit1.text:=''; edit2.text:='';
exit;
end ;
stringgrid1.colcount:=N+1; // формирование
stringgrid2.colcount:=N+1; // внешнего вида
stringgrid1.rowcount:=m+1; // таблиц stringgrid1
stringgrid2.rowcount:=m+1; // и stringgrid2
// очистить ячейки таблиц stringgrid1 , stringgrid2,нумерация строк, столбцов
for i := 1 to m do
for j:=1 to n do
begin stringgrid1.cells[j,i]:=''; stringgrid2.cells[j,i]:='';
stringgrid1.cells[0,i]:=inttostr(i);stringgrid1.cells[j,0]:=inttostr(j)';
stringgrid2.cells[0,i]:=inttostr(i);stringgrid2.cells[j,0]:=inttostr(j)';
end;
stringgrid1.SetFocus ; // установить фокус в таблицу stringgrid1 для ввода
label3.Show;
end;
procedure TForm1.Button2Click(Sender: TObject);
var i,j:integer;
begin
// формирование матрицы А в памяти ЭВМ из таблицы stringgrid1
for i := 1 to m do
for j:=1 to n do a[i,j]:=strtofloat(stringgrid1.cells[j,i]);
end;
// контроль вводимых символов в StringGrid1
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if((key<'0') or (key>'9')) and (key<>',') and(key<>'-') then key:=chr(0);
end;
procedure TForm1.Button3Click(Sender: TObject);
var i,j : integer;
begin
b:=a; // матрица В равна матрице А
for i := 1 to m do b[i,1]:=i; // замена первого столбца
for i := 1 to m do // вывод матрицы В в stringgrid2
for j:=1 to n do
stringgrid2.cells[j,i]:=floattostr(b[i,j]);
end;
// подготовка программы для новых исходных данных
procedure TForm1.Button4Click(Sender: TObject);
var i, j : integer;
begin
for i := 1 to m do
for j :=1 to n do begin
stringgrid1.cells[j,i]:=''; // два апострофа
stringgrid2.cells[j,i]:='';
end;
edit1.Text:=''; edit2.Text:='';
label3.Hide; edit1.setfocus;
end;
// контроль вводимых символов в Edit1
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if((key<'1') or (key>'9'))
then begin showmessage('неверный ввод') ;
key:=chr(0);
end
end;
// контроль вводимых символов в Edit2
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if((key<'1') or (key>'9'))
then begin showmessage('неверный ввод') ;
key:=chr(0);
еnd
end;
End.