请问STRINGGRID的一个小问题呀?(20分)

  • 主题发起人 主题发起人 衫菜
  • 开始时间 开始时间

衫菜

Unregistered / Unconfirmed
GUEST, unregistred user!
请问怎么样才能够在 STRINGGRID中当按回车键时,光标所在单元格移到右边一个呢?
CELLS[A,B]——————》CELLS[A+1,B]?
 
请大家帮忙,分不够的话我再加!
 
好象没有现成的方法!
得画
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if KEY = #13 then
begin
//StringGrid1.CellRect(StringGrid1.Col+1,StringGrid1.Row)画;
end;
end;
 
不明白你的意思,是不是按回车键后,要求光标右移一格?
 
下面是我以前写的程序中的一段,你看看吧
//lineBxinfo为一stringGrid
if (key=#13) then
begin//回车
if ((lineBxInfo.col<>0) and (lineBxinfo.row<>0)) then
with lineBxinfo do
begin//with
cells[col,row]:=EdBxtype.text;//对单元格赋值,edBxtype为一Edit
if (row<(rowcount-1)) then
row:=row+1;
EdBxtype.setfocus;

end;//with

end;//回车

 
在onkeypress事件处理函数里面
if key=#13 then begin
postmessage(tcontrol(sender).handle,wm_keydown,9,0);
postmessage(tcontrol(sender).handle,wm_keyup,9,0)
end
 
真巧!我也要问这个问题!!!
关注!!
 
接管TInplaceEdit类的WndProc消息处理函数,你想做什么都可以。
 
to linsb:
是的,就是那个意思,有办法吗?
 
先把Form的KeyPreView设置为true,然后再
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
if not(ActiveControl is TStringGrid)then
begin
key:=#0;
Perform(WM_NEXTDLGCTL,0,0);
end
else
if (ActiveControl is TStringGrid)then
begin
with TStringGrid(ActiveControl) do
if Col<ColCount-1 then
col:=Col+1
else if Row<RowCount-1 then
begin
Col:=1;
Row:=Row+1;
end;
end;
end;
 
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
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
stringGrid1.Row:=stringGrid1.Row+1
else
stringGrid1.Row:=1;
stringGrid1.col := 1
end;
end;
end;
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
816
SUNSTONE的Delphi笔记
S
S
回复
0
查看
737
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部