VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 764|回复: 6

想重载KEYDOWN实现用方向键移动焦点,为什么不好用,求大虾指点

[复制链接]

1

主题

6

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-3-2 10:00:01 | 显示全部楼层 |阅读模式
unit SunEdit;

interface

uses
  SysUtils, Classes, Controls, StdCtrls, Mask, Windows, Graphics, Messages, RzEdit;

type
//  TSunEdit = class(TRzEdit)
  TSunEdit = class(TEdit)
  private
    { Private declarations }
  protected
    { Protected declarations }
    procedure KeyDown(var Key: Word; Shift: TShiftState);override;   
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
  published
    { Published declarations }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('SunComponent', [TSunEdit]);
end;

constructor TSunEdit.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
//  self.FrameVisible:=true;
end;

procedure TSunEdit.KeyDown( var Key: Word; Shift: TShiftState);
begin

  inherited;

IF ((KEY=Windows.VK_DOWN) or (KEY=Windows.VK_RETURN)) THEN
  begin
   perform(WM_NEXTDLGCTL,0,0);//移动到下一控件
    self.Caption:=inttostr(ord(key));
  end;
  {
else
IF (KEY=Windows.VK_up) THEN
   perform(WM_NEXTDLGCTL,1,0); //移动到上一控件
   }

end;


end.
回复

使用道具 举报

0

主题

8

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-5-24 17:15:01 | 显示全部楼层
procedure TForm1.FormCreate(Sender: TObject);
begin
  KeyPreview := True;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case Key of
    VK_DOWN: if ActiveControl is TEdit then Perform(WM_NEXTDLGCTL, 0, 0);
    VK_UP: if ActiveControl is TEdit then Perform(WM_NEXTDLGCTL, 1, 0);
  end;
end;
回复

使用道具 举报

1

主题

6

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-5-25 10:15:01 | 显示全部楼层
这样要在每个FROM上写,我想把这个功能直接放在TEDIT上,可以实现吗?
回复

使用道具 举报

1

主题

6

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-5-25 12:45:01 | 显示全部楼层
我的意思是,我想把使用方向来移动焦点的功能放在我自己的EDIT控件上,请问要怎么实现
回复

使用道具 举报

1

主题

6

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-6-28 15:30:01 | 显示全部楼层
哪位大哥帮个忙啊,我是想把用方向键移动焦点的功能放在自己的EDIT控件上,这样以后用着就方便了,有没有方法啊?
回复

使用道具 举报

0

主题

8

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-6-28 20:45:01 | 显示全部楼层
IF ((KEY=Windows.VK_DOWN) or (KEY=Windows.VK_RETURN)) THEN
  begin
   Parent.Perform(WM_NEXTDLGCTL,0,0);//移动到下一控件
// ~~~~~~
回复

使用道具 举报

1

主题

6

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-6-28 22:00:01 | 显示全部楼层
谢谢 Guderian(专家门诊清洁工)
太让我感动啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表