在用DBEDIT显示数据的,如何才能实现按车键实现TAB键的功能
解决方案 »
- 每天发蛋,每天+30----今天是一只天鹅蛋
- 想找份代码,聊天程序的..有的可以进来看看.
- 晕了~我在DELPHI7怎么找不到QuickReport组件呀?难道DELPHI7不能制作报表!
- 如何在RAVE中显示多条符合条件的记录?
- 有关在delphi6里写关于Object pascal的程序的问题。
- 纳闷,我自己做了个浏览器,基于IE内核,但在浏览器页面中的编辑匡里却接受不到回车键,真奇怪,为什么??我并没有在显示的程序中用消息
- 请给一个下在Delphi6的网址,好吗?
- API串口通信的问题???
- 我的delphi无法安装控件?
- 不规则按钮如何实现:如圆形(简便方法?)
- 没分了,请求帮忙!!
- 如何判断用TOleContainer打开的文档是否被编辑过?
dbedit1.setfocus;
if key=enter键 then key=tab键
if Key = #13 then {回车键 } if not (ActiveControl is TDBGrid) then begin { if not on a TDBGrid }
Key := #0; { eat enter key }
Perform(WM_NEXTDLGCTL, 0, 0); { move to next control }
end
else if (ActiveControl is TDBGrid) then { if it is a TDBGrid }
with TDBGrid(ActiveControl) do
if selectedindex < (fieldcount -1) then { increment the field }
selectedindex := selectedindex +1
else
selectedindex := 0;end;
if key=#13 then
edit2.setfocus;
if key=#13 then
begin
key:=#0;
perform(WM_NEXTDLGCTL,0,0);
end;
begin
if key=chr(13) then Edit2.SetFocus;
end;
或procedure Tform1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if key=Vk_Return then Edit2.SetFocus;
end;
MainFrame: KeyPreview = True
Edit_Name :TabOrder = 0;
Edit_Age :TabOrder = 1;
Edit_Adress :TabOrder = 2;> 代码及说明:
在interface 的private定义一个过程
procedure TForm1.Tab(Sender: TObject; var Key: Word;
Shift: TShiftState);
Begin
(**)
if (key=VK_Down) or (key=13) then
SelectNext(ActiveControl,True,True);
if key=VK_Up then
SelectNext(ActiveControl,False,True);
Key:=0;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit_Name. OnKeyDown = Tab;
Edit_Age .OnKeyDown = Tab;
Edit_Adress . OnKeyDown = Tab;
end;
---- 当然,我们可以利用Delphi的灵活性更加方便的达到这个目的:移动到对象查看器,在Edit_Name的OnKeyDown中输入Tab后回车,Delphi自动创建该事件,然后将Edit_Age及Edit_Adress 的OnKeyDown事件连接到Tab即可(方法很简单:分别到各组件的OnKeyDown事件处下拉并选择Tab即可)。