在DBGgrid中用Return替代TAB的问题?(50分)

  • 主题发起人 主题发起人 DaChu
  • 开始时间 开始时间
D

DaChu

Unregistered / Unconfirmed
GUEST, unregistred user!

程序:
Form1.DBGgrid1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
with dbgrid1 do
begin
selectedindex:=selectedindex+1;
if Selectedindex = (Columns.Count -1) then
Selectedindex := 0 ;
end;
end;
假设在第一行操作,最后一列结束后,打回车,又回到第一列
而不是像TAB键一样转到第二的第一列
Return的键值是#13 TAB的键值呢?
 
Form1.DBGgrid1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
with dbgrid1 do
begin
selectedindex:=selectedindex+1;
if Selectedindex = (Columns.Count -1) then
//---------------------------------------
adoquery1.Next//加這一句就OK了,當然adoquery1你也可以用別的數據感知控件
//---------------------------------------
Selectedindex := 0 ;
end;
end;
 
if Key=Char(VK_RETURN) then
begin
SendMessage(DBGrid1.Handle,WM_KEYDOWN, VK_TAB,0);//回车键的效果
Key:=Char(0);
end;

>Return的键值是#13 TAB的键值呢?
windows.pas
 
TAB的键值是#09
 
tab的键值自己可以做个过程看一下
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
showmessage(inttostr(key));
end;
结果是9
 
呵呵,不用看了,是#09!!:)
 
Form1.DBGgrid1KeyDown(Sender: TObject; var Key:Word; shift:Tshiftstate);
var
i:integer;
begin
with table1 do
if key=13 then
if i=FieldCount-1 then
begin
if eof then
first
else
next;
i:=0;
end;
else
i:=i+1;
DbGrid1.SelectedField:=Table1.Fields;
end;
 
if (ActiveControl is TDBGrid) then
with TDBGrid(ActiveControl) do
if selectedIndex < (FieldCount - 1) then
selectedIndex := selectedIndex + 1
else
selectedIndex := 0;
 
多人接受答案了。
 
后退
顶部