如何将一个窗体封装成PANEL
我有一个能实现一定功能的窗体,现在想把它封装成一个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窗体里的控件的属性
不知道这样封装对不对?有知道的指教一二!
严重感谢!!!
问题点数:140、回复次数:35Top
1 楼mdejtod(稻草人)回复于 2006-12-04 13:55:19 得分 0
帮顶一下,偶不知道~Top
2 楼maozefa(阿发伯)回复于 2006-12-04 13:56:13 得分 0
FCellFrm:=TCellFrm.Create(Self);
FCellFrm.parent:=Self;
拥有者和父都不正确Top
3 楼maozefa(阿发伯)回复于 2006-12-04 13:57:00 得分 0
FCellFrm:=TCellFrm.Create(Application);
FCellFrm.parent:=Self.Parent;
Top
4 楼maozefa(阿发伯)回复于 2006-12-04 13:57:55 得分 0
FCellFrm:=TCellFrm.Create(Application);
// FCellFrm.parent:=Self.Parent;错误,不要设父
Top
5 楼sxqwhxq(步青云)回复于 2006-12-04 15:14:26 得分 0
FCellFrm.parent:=Self;
FCellFrm.show;
这些语句都应该是运行期由组件的用户指定,不应该在设计期就指定。Top
6 楼liuqifeiyu(liuqi)回复于 2006-12-04 15:32:43 得分 0
谢谢大家支持!
我要的效果是让FCellFrm窗体在设计的时候就显示在TCellPanel里,然后通过TCellPanel设计的属性来控制FCellFrm.
其实我封装的窗体就是用友的Cell组件Delphi Demo所演示的Cell功能!
大家帮忙看看有什么办法可以搞定它,谢谢!Top
7 楼sxqwhxq(步青云)回复于 2006-12-04 15:38:00 得分 0
只要是控件(从Twincontrol)而不是组件(从TComponent)继承就可在设计时显示Top
8 楼SmallMaker(小人物)回复于 2006-12-05 13:15:26 得分 0
用TframeTop
9 楼liuqifeiyu(liuqi)回复于 2006-12-06 11:46:53 得分 0
TCellFrm窗体上有几个控件只能放到TForm上,不能改成Tframe.
怎么办啊?Top
10 楼liuqifeiyu(liuqi)回复于 2006-12-07 12:17:53 得分 0
有知道的吗?
别沉了啊!Top
11 楼sanmaotuo(老冯)回复于 2006-12-07 13:06:10 得分 0
可以的.没有问题Top
12 楼maozefa(阿发伯)回复于 2006-12-07 13:57:55 得分 0
to sanmaotuo(老冯) 密码搞定了吗?Top
13 楼sanmaotuo(老冯)回复于 2006-12-07 14:00:34 得分 0
to sanmaotuo(老冯) 密码搞定了吗?
---------------------谢谢大哥, 还没有呢.
type
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;
Top
14 楼maozefa(阿发伯)回复于 2006-12-07 14:09:47 得分 0
to sanmaotuo(老冯)
先注销,再登录时选择忘记密码应该能够搞定
Top
15 楼sanmaotuo(老冯)回复于 2006-12-07 14:31:59 得分 0
先注销,再登录时选择忘记密码应该能够搞定
-------------------谢谢大哥,弄好了
Top
16 楼liuqifeiyu(liuqi)回复于 2006-12-12 10:29:32 得分 0
谢谢大家,等我试试,如果可以的话,我将把这个东西公布给大家Top
17 楼liuqifeiyu(liuqi)回复于 2006-12-12 11:22:07 得分 0
谢谢 sanmaotuo(老冯)
我试过了,你的是在运行时可以显示,我想要的是在设计时就让一个窗体在PANEL里显示.
现在的问题是如果设计时不显示的话,FCellFrm窗体的属性可以访问,当访问FCellFrm的控件的时候报错.
帮忙看看怎么解决一下?谢谢Top
18 楼sanmaotuo(老冯)回复于 2006-12-12 12:38:38 得分 0
没有问题的. 晚上给你完整代码. 稍等毋躁Top
19 楼sanmaotuo(老冯)回复于 2006-12-12 12:40:00 得分 0
你最好把FCellFrm给我, 我好完整测试. sanmaotuo_33@163.comTop
20 楼liuqifeiyu(liuqi)回复于 2006-12-12 13:13:50 得分 0
谢谢,也可以发到我的邮箱里:liuqifeiyu@163.com
我用到了几个三方控件,如果你不嫌安装麻烦我就发给你.
如果需要的话就留言!
其实就是在CellFrm里放了别的按钮三方控件等东西,希望通过TCellPanel来访问控制.Top
21 楼sanmaotuo(老冯)回复于 2006-12-12 13:16:17 得分 0
我自己加吧Top
22 楼sanmaotuo(老冯)回复于 2006-12-12 18:47:25 得分 0
现在的问题是如果设计时不显示的话,FCellFrm窗体的属性可以访问,当访问FCellFrm的控件的时候报错.
------------------
测试了,没有问题.运行时访问Form上的任何组件的任何Public和Published属性\方法\事件Top
23 楼liuqifeiyu(liuqi)回复于 2006-12-13 08:27:06 得分 0
呵呵,大哥,我是在设计时就要访问Form上的任何组件的任何Public和Published属性\方法\事件Top
24 楼liuqifeiyu(liuqi)回复于 2006-12-13 09:15:39 得分 0
sanmaotuo(老冯)
帮帮忙吧,看看怎么解决一下?Top
25 楼chijingde(AD)回复于 2006-12-13 09:29:49 得分 0
做成控件~!Top
26 楼liuqifeiyu(liuqi)回复于 2006-12-13 09:47:52 得分 0
我就是在做控件啊Top
27 楼sanmaotuo(老冯)回复于 2006-12-13 12:49:47 得分 0
呵呵.明白你的意思了.没有问题啦. 晚上01:00:00 给答案Top
28 楼liuqifeiyu(liuqi)回复于 2006-12-13 13:25:35 得分 0
呵呵,这么忙啊,1点还不睡觉,注意身体啊Top
29 楼extcsdn(Studing VB now)回复于 2006-12-13 13:45:11 得分 0
关注Top
30 楼savagexyz(狼雨)回复于 2006-12-13 19:56:43 得分 0
ok没,给大家共享下,兄弟学习学习Top
31 楼liuqifeiyu(liuqi)回复于 2006-12-14 08:37:44 得分 0
呵呵,还没有呢,等别人的帮忙呢Top
32 楼liuqifeiyu(liuqi)回复于 2006-12-14 12:15:37 得分 0
问题将就着解决了,关键是在设计的时候不能在PANEL里显示窗体,不能直观的看到封装窗体里控件的状态,还差点别的,等完成了在共享给大家Top
33 楼hwxnhk0326(殺殺人,灌灌水)回复于 2006-12-14 14:40:32 得分 0
GZTop
34 楼wudi_1982(向伴水学习|胃出血,住院中)回复于 2006-12-15 14:41:09 得分 0
这热闹。Top
35 楼Delphi1985(Darkhorse)回复于 2006-12-19 16:34:17 得分 0
请教各位大家,在设计时双击一个控件图标就进入一个窗体设计器是怎么实现的啊?
就像FastReport控件一样,双击他就进入了报表设计器窗口.Top




