有关开发控件的问题

liaoqingpeng 2003-01-07 11:24:42
要求:
1.基类:TEdit;
2.使其只能输入整数,即:
if not (Key in ['0'..'9',#8,#9,#13]) then Key := #0;
=====================================================
说明:我的控件代码如下,但在使用时,如果KeyPress事件没写代码,正常,
但如果KeyPress事件写了代码的话,就可以输入任何的字符了。
附NumEdit.pas代码:
unit NumEdit;

interface

uses
Windows, Messages, SysUtils, Classes, Controls, StdCtrls;

type
TNumEdit = class(TEdit)
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
procedure KeyPress(Sender: TObject; var Key: Char);
constructor Create(AOwner:TComponent); override;
published
{ Published declarations }
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('MyComponent', [TNumEdit]);
end;

{ TNumEdit }

constructor TNumEdit.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Self.OnKeyPress := KeyPress;
end;

procedure TNumEdit.KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9']) then
begin
Key := #0;
end;
end;

end.

...全文
20 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ehom 2003-01-08
  • 打赏
  • 举报
回复
procedure KeyPress(var Key: Char);override;

procedure TNumEdit.KeyPress(var Key: Char);
begin
if not (Key in ['0'..'9']) then
begin
Key := #0;
end
else
inherited KeyPress(Key);
end;
liaoqingpeng 2003-01-08
  • 打赏
  • 举报
回复
谢谢,问题搞定!
lxpbuaa 2003-01-08
  • 打赏
  • 举报
回复
将procedure KeyPress(Sender: TObject; var Key: Char);
改为:
procedure KeyPress(var Key: Char); override;
然后去掉
Self.OnKeyPress := KeyPress;
最后使用
ehom(?!) 的代码

—————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧