下面这段代码可在TDBGrid/tstringGrid中用回车键代替TAB的功能
procedure tform1.formkeypress(sender:tobject;var key:char);
begin //判断接收者是否是回车
if key=#13 then //判断接收者是否是TDBGRID
if not (ActiveControl is TDBGrid) then
begin
key:=#0;
Perform(WM_NEXTDLGCTL,0,0); //跳转到下一个控件焦点
end
else if (ActiveControl is TDBGrid) then
begin
with TDBGrid(ActiveControl) do
if selectedindex<fieldcount-1 then
SelectedIndex:=SelectedIndex+1 //跳转到下一栏
else
SelectedIndex:=0;
end;
procedure tform1.formkeypress(sender:tobject;var key:char);
begin //判断接收者是否是回车
if key=#13 then //判断接收者是否是TDBGRID
if not (ActiveControl is TDBGrid) then
begin
key:=#0;
Perform(WM_NEXTDLGCTL,0,0); //跳转到下一个控件焦点
end
else if (ActiveControl is TDBGrid) then
begin
with TDBGrid(ActiveControl) do
if selectedindex<fieldcount-1 then
SelectedIndex:=SelectedIndex+1 //跳转到下一栏
else
SelectedIndex:=0;
end;
解决方案 »
- 谁知道如何从PDF文件中提取图片
- 有谁正在使用显示器“防辐射屏”???真的有用?google上搜了一下,好象“金吉”牌子不错,真的吗???
- 关于运行时信息,
- 怎样解决在存储过程中赋值出现的参数找不到错误。
- xywhx(xywhx)进来拿分(3)
- 怎么把一个文本文件中按行,输入到SQL的表中去?
- 通过ADOcommand.commandtext建立SQLSERVER7数据库?
- largewang 进来加分!(重大事由,斑竹别删,按劳分配)
- 终于搞定了报销的单据了,心情好,所以决定散分
- DBGridEh 添加EditButtons,并设置图片,怎么使其透明
- 怎样在动态改变panel的尺寸?就好象我们改变窗体大小一样?
- 查询问题
postmessage(handle,wm_keydown,vk_tab,0);
BEGIN
key:=#0;
CASE DBGrid1.SELECTEDINDEX OF
0:
begin
DBGrid1.SELECTEDINDEX:=3;
end;
1..2:DBGrid1.SELECTEDINDEX:=3;
3: DBGrid1.SELECTEDINDEX:=4;
4..5:DBGrid1.SELECTEDINDEX:=6;
6:
begin
data1.query1.next;
DBGrid1.SELECTEDINDEX:=0;
end;
end;
end;
if key=vk_return then
postmessage(dbgrid1.handle,wm_keydown,vk_tab,0);
然后
procedure tform1.formkeypress(sender:tobject;var key:char);
begin //判断接收者是否是回车
if key=#13 then //判断接收者是否是TDBGRID
if not (ActiveControl is TDBGrid) then
begin
key:=#0;
Perform(WM_NEXTDLGCTL,0,0); //跳转到下一个控件焦点
end
else if (ActiveControl is TDBGrid) then
begin
with TDBGrid(ActiveControl) do
if selectedindex<fieldcount-1 then
SelectedIndex:=SelectedIndex+1 //跳转到下一栏
else
begin
adotable1.next;//移动到下一行
TDBGrid(ActiveControl).SelectedIndex:=0;
end;
end;
如果是最后一行,则追加一条记录(是追加!而不是插入!)请问有那位知道如何真正实现这个功能?
if not (ActiveControl is TDBGrid) then
begin
key:=#0;
Perform(WM_NEXTDLGCTL,0,0); end
else if (ActiveControl is TDBGrid) then
begin
with TDBGrid(activecontrol) do
if selectedindex<fieldcount-1 then
SelectedIndex:=SelectedIndex+1
else
begin
table1.next;
if table1.Eof then
table1.append;
SelectedIndex:=0;
end;
end;