转移控制焦点的问题(在Edit1中回车后下一个Edit2得到焦点.想做个函数或过程或消息来处理) (100分)

  • 主题发起人 主题发起人 zanpen2001
  • 开始时间 开始时间
Z

zanpen2001

Unregistered / Unconfirmed
GUEST, unregistred user!
转移控制焦点的问题(在Edit1中回车后下一个Edit2得到焦点.想做个函数或过程或消息来处理)
各位:
我知道可以判断keypress事件中key的值来转移焦点,但问题是我这个
窗口有好多DBEdit,不可能把每个窗口的每个DBEDIT都写代码,所以想做个
过程或函数进行调用,想过用消息处理,但我马上就要出差了,没时间查资
料了,所以请各位费心帮我想一下,分数多一点.请笑纳,不过事先声明,分
数只给一个人,谁把我教明白了我全给谁.不行也可以打电话联系.我这个
程序是数据库的.一个字典维护窗口.
 
设置Form.KeyPreview = True
然后响应Form.OnKeyPress,写如下代码:
if Ord(Key) = VK_RETURN then
Perform(WM_NEXTDLGCTL, 0, 0);
 
先把各个相关的控件排一下顺序。
再把onKeyPress指向同一个。
procedure TmainForm.E_usernameKeyPress(Sender: TObject
var Key: Char);
begin
if key=#13 then
postmessage(handle,WM_NEXTDLGCTL,0,0);
end;
 
下载一个叫Raize 2.52的控件吧,它里面的RzEdit有这个属性,
直接将这个属性设定为True就可以了。
 
To honestman : 老兄,我想给你分,列表里怎么没你呢?[^]
 
不会吧?
 
//全部的代码
unit Unit1;

interface

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

type
TForm1 = class(TForm)
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBEdit5: TDBEdit;
DBEdit6: TDBEdit;
DBEdit7: TDBEdit;
DBEdit8: TDBEdit;
DBEdit9: TDBEdit;
DBEdit10: TDBEdit;
procedure AllDBEditKeyPress(Sender: TObject
var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}



{ TForm1 }

//先将TDBEdit的Tag属性按你的需要设置好顺序,
//将需要响应此事件的控件的OnKeyPress指定为AllDBEditKeyPress
procedure TForm1.AllDBEditKeyPress(Sender: TObject
var Key: Char);
var
i: Integer;
begin
if Key = #13 then //找下一个TAG
for i:=0 to Form1.ControlCount-1 do
begin
if i = Form1.ControlCount-1 then
Exit;
if (Form1.Controls.Tag = TDBEdit(Sender).Tag+1)
and (Form1.Controls is TDBEdit) then
begin
TEdit(Form1.Controls).SetFocus;
Exit;
end;
end;
end;

end.
 
to honestman : 断线后重新上了一次,找到你了,现在把分儿给你,如果你不嫌弃,做我的
师兄好不好?我现在一家软件公司上班,是搞维护的,用业余时间学点DELPHI,
公司是用PB的.明天要出差了,去河南然后去青海.....唉...真想静下来好好
写程序呀!我的E-mail是:zanpen2000@163.net,希望能有幸认识你.我准备将来去
北京打工,如果你在北京就好了,有下家了!
如果同意作朋友,给我的信箱发信吧:zanpen2000@163.net这是我的私人信箱

今天的问题谢谢你!真的!很服你!

 
to blue_morning: 你的答案也不错,但我感觉不如honestman的好,我们是不是应该向他学习
呢?这次没有给你分儿真不好意思,因为我有话在先,这次的分只给一个人,
不过,谢谢你花时间和精力帮助我!真的!真的非常谢谢你!希望下次我能帮
到你,或者我再有问题的话,你能提供给我满意的答案.

再次感谢!

再此向所有回答问题的同仁表示感谢!谢谢大家的帮助!

 
我的目标:

  向程序写得简单的人学习,简单的程序最好的程序。

  我写了那么多(17行),实在汗颜。
  一同向honestman学习,honestman也当我师兄如何? :)
 
后退
顶部