Настройка компонента TStringGrid

Для установки компонента TStringGrid на форму необходимо на странице Additional меню компонентов щелкнуть мышью по пиктограмме . После этого щелкните мышью в нужном месте формы. Захватывая кромки компонента отрегулируйте его размер. В инспекторе объектов значения свойств ColCount и RowCount установите 2 (две строки и два столбца), а FixedCols и FixedRows установите 1 (один столбец и одна строка с фиксированной зоной). Т.к. компоненты StringGrid2 и StringGrid3 имеют только один столбец, то у них: ColCount= 1, RowCount=2, FixedCols=0 и FixedRows=1. По умолчанию в компонент TStringGrid запрещен ввод информации с клавиатуры, поэтому необходимо свойство Options goEditing для компонентов StringGrid1 и StringGrid2 установить в положение True.

Текст программы приведен ниже.

unit tem4;

 

interface

 

uses

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

StdCtrls, Grids;

 

type

TForm1 = class(TForm)

Label1: TLabel;

Edit1: TEdit;

Button1: TButton;

Button2: TButton;

StringGrid1: TStringGrid;

StringGrid2: TStringGrid;

StringGrid3: TStringGrid;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

const

Nmax=10; // Максимальная размерность массива

Type

Mas2 = array[1..Nmax,1..Nmax] of extended; // Объявление типа двумерного массива размерностью Nmax

Mas1 = array[1..Nmax] of extended; // Объявление типа одномерного массива размерностью Nmax

var

Form1: TForm1;

A : Mas2; // Объявление двумерного массива

B,Y : Mas1; // Объявление одномерных массивов

N,i,j : integer;

 

implementation

 

{$R *.DFM}

 

procedure TForm1.FormCreate(Sender: TObject);

begin

N:=3; // Размерность массива

Edit1.Text:=FloatToStr(N);

{Задание числа строк и столбцов в таблицах}

StringGrid1.ColCount:=N+1;

StringGrid1.RowCount:=N+1;

StringGrid2.RowCount:=N+1;

StringGrid3.RowCount:=N+1;

 

{Ввод в левую верхнюю ячейку таблицы названия массива}

StringGrid1.Cells[0,0]:='Массив A:';

StringGrid2.Cells[0,0]:='Массив B:';

StringGrid3.Cells[0,0]:='Массив Y:';

{Заполнение верхнего и левого столбцов поясняющими подписями}

for i:=1 to N do begin

StringGrid1.Cells[0,i]:=' i= '+IntToStr(i);

StringGrid1.Cells[i,0]:=' j= '+IntToStr(i);

end;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

N:=StrToInt(Edit1.Text);

{Задание числа строк и столбцов в таблицах}

StringGrid1.ColCount:=N+1;

StringGrid1.RowCount:=N+1;

StringGrid2.RowCount:=N+1;

StringGrid3.RowCount:=N+1;

{Заполнение верхнего и левого столбцов поясняющими подписями}

for i:=1 to N do begin

StringGrid1.Cells[0,i]:=' i= '+IntToStr(i);

StringGrid1.Cells[i,0]:=' j= '+IntToStr(i);

end;

end;

 

procedure TForm1.Button2Click(Sender: TObject);

var s: extended;

begin

{Заполнение массива А элементами из таблицы StringGrid1}

for i:=1 to N do

for j:=1 to N do

A[i,j]:=StrToFloat(StringGrid1.Cells[j,i]);

{Заполнение массива B элементами из таблицы StringGrid2}

for i:=1 to N do

B[i]:=StrToFloat(StringGrid2.Cells[0,i]);

{Умножение массива А на массив В}

for i:=1 to N do begin

s:=0;

for j:=1 to N do s:=s+A[i,j]*B[j];

Y[i]:=s;

{Вывод результата в таблицу StringGrid3}

StringGrid3.Cells[0,i]:=FloatToStrf(y[i],fffixed,6,2);

end;

end;

 

end.