При нажатии Shift/F3 вывести суммы всех столбцов в нулевую строку.
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, Menus;
type
arr=array of integer;
matr=array of arr;
TForm1 = class(TForm)
agrid: TStringGrid;
sb1: TScrollBar;
sb2: TScrollBar;
Label1: TLabel;
Label2: TLabel;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
Label3: TLabel;
procedure frmt(g:TStringGrid);
procedure FormCreate(Sender: TObject);
procedure sb1Scroll(Sender: TObject; ScrollCode: TScrollCode;
var ScrollPos: Integer);
procedure sb2Scroll(Sender: TObject; ScrollCode: TScrollCode;
var ScrollPos: Integer);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure agridMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure agridKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
public
end;
var
Form1: TForm1;a,b:matr;n,m:integer;
implementation
procedure TForm1.frmt(g:TStringGrid);
begin with g do begin
width:=(defaultcolwidth+2)*colcount+4;
height:=(defaultrowheight+2)*rowcount+4
end end;
procedure TForm1.FormCreate(Sender: TObject);
begin
frmt(agrid);
randomize;
end;
procedure TForm1.sb1Scroll(Sender: TObject; ScrollCode: TScrollCode;
var ScrollPos: Integer);
begin
agrid.RowCount:=sb1.Position;
frmt(agrid)
end;
procedure TForm1.sb2Scroll(Sender: TObject; ScrollCode: TScrollCode;
var ScrollPos: Integer);
begin
agrid.ColCount:=sb2.Position;
frmt(agrid)
end;
procedure TForm1.N2Click(Sender: TObject);
begin
halt
end;
procedure make(k1,k2:integer);
var i,j:integer;
begin n:=k1;m:=k2;
setlength(a,n,m);
for i:=0 to n-1 do
for j:=0 to m-1 do
a[i][j]:=random(101)- 50; end;
procedure copy(x:matr;var y:matr);
var i,j:integer;
begin setlength(y,n,m);
for i:=0 to n-1 do
for j:=0 to m-1 do
y[i,j]:=x[i,j];
end;
procedure showa(g:TStringGrid);
var i,j:integer;
begin with g do begin
colcount:=m;
rowcount:=n;
for i:=0 to n-1 do
for j:=0 to m-1 do
cells[j,i]:=inttostr(a[i][j]) end;end;
procedure TForm1.N3Click(Sender: TObject);
begin
make(sb1.position,sb2.position);
showa(agrid);copy(a,b);
end;
procedure fill(r,t:integer);
var i:integer;
begin for i:=0 to m-1 do
a[r,i]:=t end;
procedure TForm1.agridMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var r,c,t:integer;G:TGridRect;
begin
if button=mbLeft then
begin r:=agrid.row; c:=agrid.Col;
t:=strtoint(agrid.Cells[c,r]);
fill(r,t);
showa(agrid);
with G do begin left:=0;right:=m;
top:=r;bottom:=r end;
agrid.Selection:=g
end;
end;
procedure TForm1.agridKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key =27) or (key= vk_f1) and(ssalt in shift) then
begin copy(b,a);showa(agrid);end;
end;
end.