我有一个能实现一定功能的窗体,现在想把它封装成一个PANEL类.
我是这样实现的:
1.继承一个PANEL:
TCellPanel=Class(TPanel)
2.重载了CREATE:
Constructor TCellPanel.Create(Aowner:Tcomponent);
begin
Inherited Create(Aowner);
FCellFrm:=TCellFrm.Create(Self);
FCellFrm.parent:=Self;
FCellFrm.show;//当加上这句的时候有错误
end;3.发布一些属性控制FCellFrm窗体里的控件的属性不知道这样封装对不对?有知道的指教一二!
严重感谢!!!
我是这样实现的:
1.继承一个PANEL:
TCellPanel=Class(TPanel)
2.重载了CREATE:
Constructor TCellPanel.Create(Aowner:Tcomponent);
begin
Inherited Create(Aowner);
FCellFrm:=TCellFrm.Create(Self);
FCellFrm.parent:=Self;
FCellFrm.show;//当加上这句的时候有错误
end;3.发布一些属性控制FCellFrm窗体里的控件的属性不知道这样封装对不对?有知道的指教一二!
严重感谢!!!
FCellFrm.parent:=Self;
拥有者和父都不正确
FCellFrm.parent:=Self.Parent;
// FCellFrm.parent:=Self.Parent;错误,不要设父
FCellFrm.parent:=Self;
FCellFrm.show;
这些语句都应该是运行期由组件的用户指定,不应该在设计期就指定。
我要的效果是让FCellFrm窗体在设计的时候就显示在TCellPanel里,然后通过TCellPanel设计的属性来控制FCellFrm.
其实我封装的窗体就是用友的Cell组件Delphi Demo所演示的Cell功能!大家帮忙看看有什么办法可以搞定它,谢谢!
怎么办啊?
TFormPanel = class(TPanel)
private
FForm: TForm;
protected
procedure SetParent(AParent: TWinControl); override; //注意
public
end; TFormDemo = class(TForm)
ButtonAdd: TButton;
procedure ButtonAddClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
FormDemo: TFormDemo;implementation{$R *.dfm}{ TFormPanel }procedure TFormPanel.SetParent(AParent: TWinControl);
begin
inherited;
if FForm = nil then
begin
FForm := TForm.Create(nil);
FForm.Parent := Self;
FForm.Align := alClient;
FForm.Caption := 'My FormPanel';
FForm.Visible := True;
end;
end;procedure TFormDemo.ButtonAddClick(Sender: TObject);
begin
with TFormPanel.Create(Self) do
begin
Parent := Self;
Visible := True;
Align := alLeft;
Width := 400;
end;
end;
先注销,再登录时选择忘记密码应该能够搞定
我用到了几个三方控件,如果你不嫌安装麻烦我就发给你.
如果需要的话就留言!
其实就是在CellFrm里放了别的按钮三方控件等东西,希望通过TCellPanel来访问控制.
帮帮忙吧,看看怎么解决一下?
就像FastReport控件一样,双击他就进入了报表设计器窗口.