例如说现在我有个form1的窗体,有frame1和frame2两个框架结构,button1和button2两个按键。
现在想实现如下功能:当我点击Button1时,在form1中显示frame1;点击button2时,在form1中显示frame2,并且给两个frame添加onshow控件。
我一开始以为就像在form1中引用其他form一样,在form1中添加类似于 uses frame1,frame2这样的调用语句~但肯定是不行!
所以我想问的问题有两个:
1.如何在form1中调用不同frame,实现上述功能;
2.如何给frame添加onshow事件,当不同frame显示时,在frame中显示出我想要的信息。
这个问题这两天都一直不能解决,谢谢各位啊!
现在想实现如下功能:当我点击Button1时,在form1中显示frame1;点击button2时,在form1中显示frame2,并且给两个frame添加onshow控件。
我一开始以为就像在form1中引用其他form一样,在form1中添加类似于 uses frame1,frame2这样的调用语句~但肯定是不行!
所以我想问的问题有两个:
1.如何在form1中调用不同frame,实现上述功能;
2.如何给frame添加onshow事件,当不同frame显示时,在frame中显示出我想要的信息。
这个问题这两天都一直不能解决,谢谢各位啊!
解决方案 »
- delphi中pointer问题
- 长字符串赋值如何换行,要简单方便!
- 为什么用delphi和java针对同一信息做DES算法加密出来的结果不一样?
- 关于一个错误提示?
- 大家帮我看看这个怎么编http://go.6to23.com/perfecthomepage/cc.exe
- 关于打印时出现纸张跳行现象...
- §§§一个关于数据库与树形目录的问题§§§
- StringGrid,菜问题!
- 对于这样2个表格,有如下两个关联,a->b,b->c,怎么样用 a select到与之对应 c 呢??(牛虻)
- 有没有DELPHI5的BDE发布工具,不然还要装DELPHI!
- 网页编码的问题
- 怎么判断集合数据中是否包含多个指定的属性?
TFrame2 = class(TFrame)
Button1: TButton;
private
{ Private declarations }
public
constructor create(AOwner: TComponent);override;
procedure test();
end;implementation{$R *.dfm}
constructor TFrame2.create(AOwner: TComponent);
begin
inherited;
ShowMessage('test');//这个在创建FRAME时会执行相当于onCREATE事件。
end;
procedure TFrame2.test();
begin
//也可以在创建实例后调用TEST方法
end;
end.
var frame:TFrame2;
begin
frame := TFrame2.Create(self);
frame.Name := 'testFrame';
frame.Parent := form1;
end;//这是在FORM1中调用的部分代码
中间这个uses Unit2;unit2是什么?
UNIT1是FORM1所处的单元名称
我是自己为Tframe增加了DoInit和OnFree事件还有一种做法:直接用Tform取代Tframe,效果一样的(只是要无边框模式)
http://hi.baidu.com/power123/blog/item/71488c0e7516a3e637d12217.html
你能帮我看看这个帖子里的方法可行吗?我刚刚这样做时在定义
procedure TForm1.LoadFrameByClassName(FrameClassName: TMyFrame);
中它总提示 Tmyframe没有申明~那我应该在哪一步声明这个类型?
谢谢!
可以简单地给我说下你增加的DoInit和OnFree事件吗?谢谢!
呵呵~这个说得太简单了~我才刚接触frame呢!
能给详细点吗?谢谢!
差不多吧我觉得~一般引用的功能我应该还是清楚的!但是对于frame的引用我是真的有点糊涂了~
type
TMyFrame = class of TFrame; 看代码要仔细些
frame.Parent;//修改所属控件
frame.Visible := false;//控制是否显示
frame.Hide;//隐藏
frame.Show;//显示
button2: frame1.hide;frame2.show2.
type
Tframe1 = class(TFrame)
...
private
{ Private declarations }
procedure CMShowingChanged(var Message: TMessage); message CM_SHOWINGCHANGED; ...procedure Tframe1.CMShowingChanged(var Message: TMessage);
begin
if Showing then
begin
try
ShowMessage('frame1 show!!!!')
except
Application.HandleException(Self);
end;
end; inherited;
end;