如何将窗体作为控件?(50分)

  • 主题发起人 主题发起人 jintty
  • 开始时间 开始时间
J

jintty

Unregistered / Unconfirmed
GUEST, unregistred user!
可以在设置期间使用的!!!类似Frame!!!
thanks!!
 

窗体不可以在设计期使用吗?
 
Edit Button 广义上讲都是窗体,你要什么样的?
 
是这样的。
新建立一个窗体,在窗体上放了许多东西。
现在想把整个窗体作为一个控件。
加上如下代码:
procedure Registry;
begin
.....
end;
这样注册之后,并不能在组件面板上找到该窗体控件1!!!
 
写错了,是Register;
 
http://service.lonetear.com/delphi/dispdoc.asp?id=205
 
你在窗体上右键
菜单项有个add to repository
添加就行了,只不过添加后不显示在控件板上,而是显示在new 下面的板子中
 
给窗体加一外套,例如口令验证窗体:
type
TPassWordForm = class(TForm)
label1:tlabel;
edtPassword:tedit;
OkBtn:TButton;
CancelBtn:TButton;
end;
TComForm=class(tcomponent)
private
FForm:TPasswordForm;
FPassword:String;
public
function Execute:Boolean;
published
property Password:String read FPassword write FPassword;
end;
implementation
{}
function TComForm.Execute:Boolean;
begin
FForm:=TPasswordForm.create(Application)
try
result:=False;
if FForm.ShowModal=mrOk then
result:=FForm.edtPassword.Text=FPassword;
finally
FForm.Free;
end;
end;
 
给TForm的子类添加Published属性

1、给Tform的子类添加Published属性

2、把Form添加到Object Repository (对象仓库)

3、添加这个窗体到一个设计时包中。

4、添加uses DsgnIntf(这里指Delphi5,在Delphi 6 ,7 改成DesignIntf,DesignEditors),…到单元中,并加入注册代码如下:

procedure Register;

begin
RegisterCustomModule(TMyForm, TCustomModule);
end;

5、最后在项目中从Repository中继承你添加的TmyForm,新的Published属性会显示在属性编辑器中。

当然还有更加复杂的创建方法,就是写一个模块创建专家,使用CreateModuleEx函数和不同的流机制来实现,但由于比较难,并且没有什么特殊的优势,这里就不介绍了
 
后退
顶部