关于Tab问题?(100分)

  • 主题发起人 主题发起人 汉鸭子
  • 开始时间 开始时间

汉鸭子

Unregistered / Unconfirmed
GUEST, unregistred user!
如果在一个窗体上放置多个Edit控件,当一个输入结束后按Enter键自动跳到下一个编辑框,
问如何实现?
 
TEdit1的OnKeyPress过程中写如下代码:
if Ord(Key)=VK_RETURN then
SelectNext(Sender as TWinControl,True,True);
Key := #0;
edit2.setfocus;

快给我分。 :-)
 
方法一:
在edit的onkeydown事件中
if key=VK_RETURN then
下一个edit.setfocus;
方法二:
在控件的keypress事件中加入
if key=#13 then
postmessage(self.handle,wm_keydown,vk_tab,0);
 
procedure tform1.form1keykown(sender:t...);
begin
if key=#13 then
perform(wm_nextdlgctl,0,0);
end;
 
if there are more edit you shoud use my way;
but if there are little edit you can do it like this:
procedure tform1.edit1keydows(.....)
begin
if key=#13 then
setnextfource;
end;

if there are a lot of edit :
procedure tform1.form1keydown(sender:t...);
begin
if key=#13 then
perform(wm_nextdlgctl,0,0);
end;


that ok;
 
按你的方法试过了,报告出一个不相容类型。不能编译。
 
试了,不行,不能在编辑内输入任何文字,一按就跑到下一个框!key := #0 有什么用?
 
多人接受答案了。
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then begin
PerForm(WM_NEXTDLGCTL,0,0);
key:=#0;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
KeyPreview:=True;
end;

end.
 
procedure tform1.form1keykown(sender:t...);
begin
if key=#13 then
perform(wm_nextdlgctl,0,0);
end;
good!!!!!!!!!!!!!!!!!!!!!
 
哎!来晚了!!!
 
问题结束,感谢各位的答复!
 
后退
顶部