2,497
社区成员
发帖
与我相关
我的任务
分享
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
procedure StringGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
private
aa:string;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key = 37) or (key = 38) or (key = 39) or (key=40) then
begin
aa:=StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row];
end;
end;
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
begin
if aa<>'' then
begin
StringGrid1.Cells[ACol,ARow]:=aa;
end;
end;
end.
unit Unit1;
...
var
Form1: TForm1;
SelFieldValue: Variant; //全局变量,记录移动前单元格的值
...
procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key = 37) or (key = 38) or (key = 39) or (key=40) then
begin
//记录焦点移动前的字段值
SelFieldValue := DBGrid1.SelectedField.AsVariant;
end;
end;
procedure TForm1.DBGrid1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key= 37) or (key =38) or (key=39) or (key=40) then
begin
//鼠标移动后,自动填充单元格
DBGrid1.SelectedField.AsVariant := SelFieldValue;
end;
end;
...