如何 在stringGrid中使用回车键模拟TAB键切换单元格的功能?

flexlonger 2006-09-01 11:14:15
我的GRID1第一列,第一行是固定的。fixedcols=1,fixedrows=1
第一列,我用来做行序号,1 2 3 4 5
下面的代码好像有点问题,但请高手看看,谢谢。


procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
label
nexttab;
begin
if key=#13 then
begin
key:=#0;
nexttab:
if (stringgrid1.Col<stringgrid1.ColCount-1) then
begin
stringgrid1.Col:=stringgrid1.Col+1;
end
else
begin
if stringgrid1.Row>=stringgrid1.RowCount-1 then
stringgrid1.RowCount:=stringgrid1.rowCount+1;
stringgrid1.Row:=stringgrid1.Row+1;
stringgrid1.Cells[0,stringgrid1.Row]:=inttostr(stringgrid1.Row);

stringgrid1.Col:=1; //切换到下一行时,光标不是停在第二列上,而是很快的从第二列调到第三列。


goto nexttab;
end;
end;
end;
...全文
368 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
flexlonger 2006-09-11
  • 打赏
  • 举报
回复
我自己回答,因为是DELPHI的菜鸟,想要这个功能时,就从网上找了一段代码,但是放到程序中,好像有问题,所以就提问了。

没有人回答。
仔细看了别人的代码,自己修改了一下,行了,哈哈。

procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);

if key = #13 then
begin
if (stringgrid1.Col < stringgrid1.ColCount - 1) then
stringgrid1.Col := stringgrid1.Col + 1
else
begin
if stringgrid1.Row = stringgrid1.RowCount - 1 then
begin
stringgrid1.RowCount := stringgrid1.rowCount + 1;
stringgrid1.row := stringgrid1.row + 1;
stringgrid1.Cells[0, stringgrid1.Row] := inttostr(stringgrid1.Row);
stringgrid1.col := 1
end
else
begin
stringgrid1.Row := stringgrid1.Row + 1;
stringgrid1.Col := 1;
end;
end;
end;
SmallMaker 2006-09-11
  • 打赏
  • 举报
回复
用dbgrideh有属性可以直接设置
yzbaby 2006-09-10
  • 打赏
  • 举报
回复
关注
myweb2000 2006-09-10
  • 打赏
  • 举报
回复
使用sendmessage 函数,可以后移光标
开源之心 2006-09-08
  • 打赏
  • 举报
回复
路过

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧