请问如何从一个文本框,按ENTER之后,自动跳到下一个文本框,很菜。(50分)

  • 主题发起人 主题发起人 txxhxxy
  • 开始时间 开始时间
T

txxhxxy

Unregistered / Unconfirmed
GUEST, unregistred user!
本人刚开始学习DELPHI,很菜,请问如何从一个文本框,按ENTER之后自动跳到下一个文本框,请各位
大师不要见笑。
 
if (Key = #13) then
begin
key := #0;
Perform(WM_NEXTDLGCTL, 0, 0);
end;
 
procedure SelectNext(CurControl: TWinControl;
GoForward, CheckTabStop: Boolean);
 
if (Key = #13) then
begin
key := #0;
SelectNext(ActiveControl,0,0);
end;
 
procedure TForm1.FormKeyDown(Sender: TObject;
var Key: Word;
Shift: TShiftState);
begin
SelectNext(ActiveControl,False,False);
end;
 
procedure TForm1.Edit1KeyDown(Sender: TObject;
var Key: Word;
Shift: TShiftState);
begin
if (Key = #13) then
begin
edit2.SetFocus;
end;
 
记住叮嘱客户,跳的时候当心点,别扭了脚
 
在Form的OnShortCut事件里写下面的代码就可以了,注意Edit的Tag要有一定的顺序。
我感觉这个方法要比那些OnKeyDown的方法要好,而且不用挨个设置他们的KeyDown事件,这样写
只要写一句就可以了。
procedure TForm1.FormShortCut(var Msg: TWMKey;
var Handled: Boolean);
begin
if Msg.CharCode=VK_RETURN then
Msg.CharCode:=VK_TAB;
end;
你可以在一个空窗体里放上几个Edit,然后,敲回车看看效果。
 
crazycock的方法好,有实用价值,我都想给分了
 
把KeyPress设为True,加入下列代码拦截击键:
procedure TForm1.FormKeyPress(Sender: TObject;
var Key: Char);
begin
if key=#13 then
{ 判断是按执行键}
if not (ActiveControl is TDbgrid) then
begin
{ 不是在TDbgrid控件内}
key:=#0;
perform(WM_NEXTDLGCTL,0,0);{移动到下一个控件}
end else
if (ActiveControl is TDbgrid) then
{是在 TDbgrid 控件内}
begin
With TDbgrid(ActiveControl)do
if Selectedindex<(FieldCount-1) then
Selectedindex:=Selectedindex+1{ 移动到下一字段}
else
Selectedindex:=0;
end;
 
排好TAG
procedure TForm1.FormKeyPress(Sender: TObject;
var Key: Char);
begin
if key=#13 then
perform(WM_NEXTDLGCTL,0,0);{移动到下一个控件}
end
 
不必要挨个设置EDIT的OnKeyPress事件。
设置FORM的属性
KeyPreview := true;
在FORM的OnKeyPress中COPY我上面所说的代码就行了。
 
procedure TForm1.FormKeyDown(Sender: TObject;
var Key: Word;
Shift: TShiftState);
begin
SelectNext(ActiveControl,true,true);
end;

 
主要把edit taborder 属性安顺序设置好,
if key=13 then
perform(wm_nextdlgctl,0,0);
 
将FORM中的各个可以获得焦点的控件的TABINDEX按照所要的顺序设好,在其中的某个控件
的ONKEYDOWN事件中加入:
if key=13 then
postmessage(handle,Wm_keydown,9,0);
然后其他控件的ONKEYDOWN事件指向它即可。
 
:(
来晚了
 
非常感谢诸位的帮助,愿我们在大富翁成为好朋友。
 
非常感谢帮助渡过难关,希望我们成为好朋友。
 
后退
顶部