当前位置:主页>仓库管理软件> 列表

大量Edit,回车自动跳到下一个Edit 找用友企业管理软件

财务软件版1楼: 用SendMessage(Handle, WM_NEXTDLGCTL, 0, 0)实现,但界面上还有btn,一回车就到btn去了,有没有办法啊,郁闷

2楼: 我一般用键盘事件:把所有的edit的事件连到一个即可。
如:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
keybd_event(VK_TAB,0,0,0);
end; 如金蝶财务软件多少钱

3楼: 这样好像挺麻烦的哦。

4楼: 用消息吧

5楼: 这有呢
http://www.ivdown.com/welcome.aspx?sid=25340

6楼: 在SendMessage的前面判断一下ClassType是否为TEdit就可以了`
如果是的话就跳到下一个``不是的话就不跳

财务软件版7楼: 在主窗中扔个ApplicationEvents,处理OnMessage事件,WM_KEYDOWN消息。

8楼: 设置窗体KeyPreview属性为True
keypress事件
if Key = #13 then
begin
Key := #0;
Perform(WM_NEXTDLGCTL, 0, 0);
end;
爽歪歪,呵呵

9楼: 把btn的Default 设置成false

10楼: procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = 13 then
Edit2.SetFocus;
end;

11楼: zhangyun781011的就可以。

12楼: 就是会跳到btn里去:(,跟order有关系,只怪小弟太菜
onkeydown事件:
if key=VK_RETURN then
begin
Key:=0;
sendMessage(self.Handle,WM_NEXTDLGCTL,0,0);
end 如用友企业管理软件

13楼: procedure TForm1.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
begin
if msg.CharCode = 13 then
msg.CharCode := vk_tab;
end;

财务软件版14楼: 接受答案了.

15楼: 以下代码应该没有问题

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Edit11: TEdit;


Edit12: TEdit;
Edit13: TEdit;
Edit14: TEdit;
Edit15: TEdit;
Edit16: TEdit;
Edit17: TEdit;
Edit18: TEdit;
Edit19: TEdit;
Edit20: TEdit;
Edit21: TEdit;
Edit22: TEdit;
Edit23: TEdit;
Edit24: TEdit;
Edit25: TEdit;
Edit26: TEdit;
Edit27: TEdit;
Edit28: TEdit;
Edit29: TEdit;
Edit30: TEdit;
procedure EditKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.EditKeyPress(Sender: TObject; var Key: Char);
var
i,j:Integer;
t:TWinControl;
begin
if key=#13 then
begin
j:=ControlCount;

for i:=0 to j-1 do
begin
t:=TWinControl(Controls[i]);
if (t is TEdit) and (t.TabOrder=(Sender as TEdit).TabOrder+1) then
begin
t.SetFocus;

Exit;
end;
end;
end;
end;

end.

16楼: 补充一下
要让所有的Edit的onKeyPress共享EditKeyPress过程。