procedure TFmPrtSlMx.StringGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
Buffer,sum:string;
i,j:Integer;
begin
// if key=13 then key:=vk_tab; qyp 20161209 modify 修改成回车一次跳到下一个空格中
case Key of
VK_RETURN:
if TStringGrid(Sender).Col + 1 < TStringGrid(Sender).ColCount then
TStringGrid(Sender).Col := TStringGrid(Sender).Col + 1
else begin
TStringGrid(Sender).Col := TStringGrid(Sender).FixedCols;
if TStringGrid(Sender).Row + 1 < TStringGrid(Sender).RowCount then
TStringGrid(Sender).Row := TStringGrid(Sender).Row + 1
else TStringGrid(Sender).Row := TStringGrid(Sender).FixedRows;
end;
end;
if key=46 then m_mxchange:=true;
if key=vk_F10 then print(Sender);
case Key of
65,97:{A,a}
begin
if([ssCtrl]=Shift)then
begin
Buffer:=StringGrid1.Cells[TStringGrid(Sender).Col,TStringGrid(Sender).Row];
sum:='';
if Buffer='' then Exit;
for i:=1 to TStringGrid(Sender).RowCount-2 do
for j:=1 to TStringGrid(Sender).ColCount-2 do
begin
StringGrid1.Cells[j,i]:=Buffer;
end;
end;
sumgridmx;
end;
87,119:{W,w}
begin
if([ssCtrl]=Shift)then
begin
Buffer:=StringGrid1.Cells[TStringGrid(Sender).Col,TStringGrid(Sender).Row];
sum:='';
if Buffer='' then Exit;
i:=TStringGrid(Sender).Row;
for j:=1 to TStringGrid(Sender).ColCount-2 do
begin
StringGrid1.Cells[j,i]:=Buffer;
end;
end;
sumgridmx;
end;
81,113:{Q,q}
begin
if([ssCtrl]=Shift)then
begin
Buffer:=StringGrid1.Cells[TStringGrid(Sender).Col,TStringGrid(Sender).Row];
if Buffer='' then Exit;
j:=TStringGrid(Sender).Col;
for i:=1 to TStringGrid(Sender).RowCount-2 do
begin
StringGrid1.Cells[j,i]:=Buffer;
end;
end;
sumgridmx;
end;
end;
end;
本文介绍了一个用于处理字符串网格(StringGrid)键盘事件的过程。该过程定义了如何响应不同的按键输入,例如通过回车键导航至下一个单元格,以及使用Ctrl+A、Ctrl+W和Ctrl+Q进行特定操作。

1万+

被折叠的 条评论
为什么被折叠?



