关于编写控件的问题。。。(5分)

  • 主题发起人 主题发起人 迈克老狼
  • 开始时间 开始时间

迈克老狼

Unregistered / Unconfirmed
GUEST, unregistred user!
各位朋友,小弟刚开始学习控件的编写,请高手指点。。。
因为我经常用编辑框输入年份,所以我先编写了一个只能输入数字的编辑框控件,
TNumEdit,他从TEdit继承,我重载了procdure Keypress
procedure keypress...
inherited;
if ((key<'0') or (key>'9')) and (key<>char(VK_BACK)) then
key:=chr(0);
end;
怎么生成编辑框照样什么都可以输入啊,但是我在Tedit的keypress事件中编写同样的
代码却可以呢?

因为只剩下15分,所以敬请各位包涵,以后有了在给大家。。。
 
没有高手指点吗?
 
加个
else
key := #0
试试
 
inherited;
可以去掉吗?
 
to hjd_cw
最好不要去
 
unit Edit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TEdit2 = class(TEdit)
private
{ Private declarations }
protected
{ Protected declarations }

public
procedure mykey(Sender: TObject; var Key: Char);
constructor Create(AOwner:TComponent);override;
{ Public declarations }
published
{ Published declarations }
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TEdit2]);
end;
{ TEdit2 }
constructor TEdit2.Create(AOwner: TComponent);
begin
inherited;
[blue]self.OnKeyPress:=self.mykey;[/blue]
end;
procedure TEdit2.mykey(Sender: TObject; var Key: Char);
begin
if ((key<'0') or (key>'9')) and (key<>char(VK_BACK)) then
key:=chr(0);

end;
end.

代码在win2k,delphi5.0编译通过
 
inherited应该放到后面。
procedure keypress...
if ((key<'0') or (key>'9')) and (key<>char(VK_BACK)) then
key:=chr(0);
inherited;
end;

 
爱华,我说的是重载keypress啊。。。
猛虎,我拭 下

 
老狼~ 没错呀 你按照我的程序运行一下
我确实是重载了keypress了

效果确凿!
 
多人接受答案了。
 
后退
顶部