自定义组件注册的问题
2006-04-10 16:26
323 查看
我按照 d5 开发人员指南上的例子写了一个组件,但无法注册到面板上
注册时没有任何的错误,但就是不能注册到面板上
先看没有改前的程序
unit HalfM;
interface
uses classes,windows,extctrls,sysutils,Controls;
type
TTimeEvent = procedure (Sender:TObject;theTime:TDatetime) of object;
THalfM = class(Tcustomcontrol)
private
FTimer:TTimer;
FOnHalfMinutes:TTimeEvent;
FOldSecond,FSecond:word;
procedure FTimerTimer(sender:tobject);
public
constructor create(AOwner:TComponent);override;
destructor destroy();override;
protected
procedure DoHalfMinute(theTime:TDateTime);dynamic;
published
property OnHalfinute:TTimeEvent read FOnHalfMinutes write FOnHalfMinutes;
end;
procedure register;
implementation
constructor THalfM.create(aOwner:TComponent);
begin
inherited create(Aowner);
if not ( csDesigning in self.ComponentState ) then
begin
Ftimer := TTimer.Create(self);
FTimer.Enabled := true;
FTimer.Interval := 500;
FTimer.OnTimer := FTimerTimer;
end;
end;
destructor THalfM.destroy();
begin
FTimer.Free;
inherited destroy;
end;
procedure THalfM.FTimerTimer(sender:tobject);
var
DT:TDateTime;
temp:word;
begin
DT:=now;
FOldSecond := FSecond; // 保存旧时间
DecodeTime(dt,temp,temp,FSecond,temp);
if FSecond <> FOldSecond then
if ( ( FSecond=30 ) or ( FSecond=0 ) ) then
self.DoHalfMinute(DT);
end;
procedure THalfM.DoHalfMinute(theTime:TDatetime);
begin
if Assigned(FOnHalfMinutes) then
FOnHalfMinutes(self,theTime);
end;
procedure Register;
begin
RegisterComponents('Test', [THalfM]);
end;
end.
------------------------------------------
改动后的程序
unit HalfM;
interface
uses classes,windows,extctrls,sysutils,Controls;
type
TTimeEvent = procedure (Sender:TObject;theTime:TDatetime) of object;
THalfM = class(Tcustomcontrol)
private
FTimer:TTimer;
FOnHalfMinutes:TTimeEvent;
FOldSecond,FSecond:word;
procedure FTimerTimer(sender:tobject);
public
constructor create(AOwner:TComponent);override;
destructor destroy();override;
protected
procedure DoHalfMinute(theTime:TDateTime);dynamic;
published
property OnHalfinute:TTimeEvent read FOnHalfMinutes write FOnHalfMinutes;
end;
procedure Register;
implementation
constructor THalfM.create(aOwner:TComponent);
begin
inherited create(Aowner);
if not ( csDesigning in self.ComponentState ) then
begin
Ftimer := TTimer.Create(self);
FTimer.Enabled := true;
FTimer.Interval := 500;
FTimer.OnTimer := FTimerTimer;
end;
end;
destructor THalfM.destroy();
begin
FTimer.Free;
inherited destroy;
end;
procedure THalfM.FTimerTimer(sender:tobject);
var
DT:TDateTime;
temp:word;
begin
DT:=now;
FOldSecond := FSecond; // 保存旧时间
DecodeTime(dt,temp,temp,FSecond,temp);
if FSecond <> FOldSecond then
if ( ( FSecond=30 ) or ( FSecond=0 ) ) then
self.DoHalfMinute(DT);
end;
procedure THalfM.DoHalfMinute(theTime:TDatetime);
begin
if Assigned(FOnHalfMinutes) then
FOnHalfMinutes(self,theTime);
end;
procedure Register;
begin
RegisterComponents('Test', [THalfM]);
end;
end.
---------------------
这样根本看不出是哪里错来,但仔细一看,还是有区别的,看没改前的
Interface 部分的
procedure register;
和改动后的有什么不同
procedure Register;
就一个 R 的大小写的问题,如果小写则无法注册到面板上,大写则可以
注册时没有任何的错误,但就是不能注册到面板上
先看没有改前的程序
unit HalfM;
interface
uses classes,windows,extctrls,sysutils,Controls;
type
TTimeEvent = procedure (Sender:TObject;theTime:TDatetime) of object;
THalfM = class(Tcustomcontrol)
private
FTimer:TTimer;
FOnHalfMinutes:TTimeEvent;
FOldSecond,FSecond:word;
procedure FTimerTimer(sender:tobject);
public
constructor create(AOwner:TComponent);override;
destructor destroy();override;
protected
procedure DoHalfMinute(theTime:TDateTime);dynamic;
published
property OnHalfinute:TTimeEvent read FOnHalfMinutes write FOnHalfMinutes;
end;
procedure register;
implementation
constructor THalfM.create(aOwner:TComponent);
begin
inherited create(Aowner);
if not ( csDesigning in self.ComponentState ) then
begin
Ftimer := TTimer.Create(self);
FTimer.Enabled := true;
FTimer.Interval := 500;
FTimer.OnTimer := FTimerTimer;
end;
end;
destructor THalfM.destroy();
begin
FTimer.Free;
inherited destroy;
end;
procedure THalfM.FTimerTimer(sender:tobject);
var
DT:TDateTime;
temp:word;
begin
DT:=now;
FOldSecond := FSecond; // 保存旧时间
DecodeTime(dt,temp,temp,FSecond,temp);
if FSecond <> FOldSecond then
if ( ( FSecond=30 ) or ( FSecond=0 ) ) then
self.DoHalfMinute(DT);
end;
procedure THalfM.DoHalfMinute(theTime:TDatetime);
begin
if Assigned(FOnHalfMinutes) then
FOnHalfMinutes(self,theTime);
end;
procedure Register;
begin
RegisterComponents('Test', [THalfM]);
end;
end.
------------------------------------------
改动后的程序
unit HalfM;
interface
uses classes,windows,extctrls,sysutils,Controls;
type
TTimeEvent = procedure (Sender:TObject;theTime:TDatetime) of object;
THalfM = class(Tcustomcontrol)
private
FTimer:TTimer;
FOnHalfMinutes:TTimeEvent;
FOldSecond,FSecond:word;
procedure FTimerTimer(sender:tobject);
public
constructor create(AOwner:TComponent);override;
destructor destroy();override;
protected
procedure DoHalfMinute(theTime:TDateTime);dynamic;
published
property OnHalfinute:TTimeEvent read FOnHalfMinutes write FOnHalfMinutes;
end;
procedure Register;
implementation
constructor THalfM.create(aOwner:TComponent);
begin
inherited create(Aowner);
if not ( csDesigning in self.ComponentState ) then
begin
Ftimer := TTimer.Create(self);
FTimer.Enabled := true;
FTimer.Interval := 500;
FTimer.OnTimer := FTimerTimer;
end;
end;
destructor THalfM.destroy();
begin
FTimer.Free;
inherited destroy;
end;
procedure THalfM.FTimerTimer(sender:tobject);
var
DT:TDateTime;
temp:word;
begin
DT:=now;
FOldSecond := FSecond; // 保存旧时间
DecodeTime(dt,temp,temp,FSecond,temp);
if FSecond <> FOldSecond then
if ( ( FSecond=30 ) or ( FSecond=0 ) ) then
self.DoHalfMinute(DT);
end;
procedure THalfM.DoHalfMinute(theTime:TDatetime);
begin
if Assigned(FOnHalfMinutes) then
FOnHalfMinutes(self,theTime);
end;
procedure Register;
begin
RegisterComponents('Test', [THalfM]);
end;
end.
---------------------
这样根本看不出是哪里错来,但仔细一看,还是有区别的,看没改前的
Interface 部分的
procedure register;
和改动后的有什么不同
procedure Register;
就一个 R 的大小写的问题,如果小写则无法注册到面板上,大写则可以
相关文章推荐
- 003、微信小程序---自定义组件的注册、使用
- 今天终于解决了用vb客户端调用C#生成的组件注册的问题了!
- 关于实现ASP导出Excel文件开关可能会碰到的组件注册问题!
- Qt使用自定义类型信号槽注册问题
- JQuery: jquery.select.1.3.6.js 下拉组件样式自定义问题修正
- Fragment的布局中自定义Layout的onSizeChanged添加组件失败的问题
- QT 信号槽connect中解决自定义数据类型或数组作为函数参数的问题——QT qRegisterMetaType 注册MetaType——关键:注册自定义数据类型或QMap等容器类
- 关于flex开发自定义组件需要注意的问题
- 自定义C++类注册到Lua环境中遇到的问题
- android自定义listview,添加监听器,解决屏幕滑动组件状态干扰的问题checkbox ...
- 关于网友flex自定义组件问题的答复
- 组件注册关于VC++6.0中,MSDev89\Gallery 文件夹为空的问题
- Extjs 自定义组件注册3.x是reg 而4.x是define
- vue2 自定义动态组件所遇到的问题
- 微信小程序自定义组件的实现方法及自定义组件与页面间的数据传递问题
- Flex中自定义组件ItemRenderer,数据绑定dataprovider,刷新问题。
- 自定义组件用混淆器打包的问题
- ATL组件中文路径注册问题辨析
- 注册组件失败问题
- 开启eslint,关于import自定义组件报错问题