我在学习用delphi7开发ActiveX控件,了解了一下基本步骤:1.把需要的功能写成一个VCL;2.把VCL转成ActiveX;
===========================================================
type
TCarrier = class(TWinControl)
private
public
function SelectFile(var FileName: string): Boolean;
end;procedure Register;implementationprocedure Register;
begin
RegisterComponents('Carrier', [TCarrier]);
end;{ TCarrier }function TCarrier.SelectFile(var FileName: string): Boolean;
var
OpenDialog: TOpenDialog;
begin
OpenDialog:= TOpenDialog.Create(nil);
try
if OpenDialog.Execute then
begin
FileName:= OpenDialog.FileName;
Result:= True;
end
else
Result:= False;
finally
FreeAndNil(OpenDialog);
end;
end;
=====================================================================所以简单写了一个测试的东西,把这个东西安装在控件面板上,没有问题。但是用ActiveX Control转成ActiveX的时候,在VCL ClassName 那一项里,看不到我写的这个东西,所以没办法转换。经过尝试,如果我这个控件派生自TEdit,TButton什么的,就可以看到,可以正常转换(就是把TCarrier = class(TWinControl)换成TCarrier = class(TButton))。我就很奇怪,书上不是说,是从TWinCtrol派生出来的就可以么?为什么会有这种情况。。我用的是delphi7,希望高手可以动手44,然后给我指点一下,谢谢!
===========================================================
type
TCarrier = class(TWinControl)
private
public
function SelectFile(var FileName: string): Boolean;
end;procedure Register;implementationprocedure Register;
begin
RegisterComponents('Carrier', [TCarrier]);
end;{ TCarrier }function TCarrier.SelectFile(var FileName: string): Boolean;
var
OpenDialog: TOpenDialog;
begin
OpenDialog:= TOpenDialog.Create(nil);
try
if OpenDialog.Execute then
begin
FileName:= OpenDialog.FileName;
Result:= True;
end
else
Result:= False;
finally
FreeAndNil(OpenDialog);
end;
end;
=====================================================================所以简单写了一个测试的东西,把这个东西安装在控件面板上,没有问题。但是用ActiveX Control转成ActiveX的时候,在VCL ClassName 那一项里,看不到我写的这个东西,所以没办法转换。经过尝试,如果我这个控件派生自TEdit,TButton什么的,就可以看到,可以正常转换(就是把TCarrier = class(TWinControl)换成TCarrier = class(TButton))。我就很奇怪,书上不是说,是从TWinCtrol派生出来的就可以么?为什么会有这种情况。。我用的是delphi7,希望高手可以动手44,然后给我指点一下,谢谢!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货