|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2004/2/24 14:52:19 |
标题: |
请问如何只显示一个窗体在panel中(panel是别的打开的窗口的parent)? |
浏览:1121 |
|
加入我的收藏 |
楼主: |
在一个程序中每打开一个窗口的parent都是panel,请问如何当打开另一个窗口时前一个打开的窗口自动关闭?
----------------------------------------------
- |
作者: |
|
2004/2/25 15:03:34 |
1楼: |
有谁知道啊?
----------------------------------------------
-
|
作者: |
|
2004/2/26 19:17:03 |
2楼: |
请问把那个panel进行free 后再重新创建一个不知可不可以
----------------------------------------------
-
|
作者: |
sephil (NAILY Soft) |
★☆☆☆☆ |
-
|
盒子中级会员 |
|
2004/2/26 19:39:55 |
3楼: |
.....
type TForm1 = class(TForm) private FCurForm: TForm; ShowChild(FormClass: TFormClass); public ...................
procedure TForm1.ShowChild(FormClass: TFormClass); begin FreeAndNil(FCurForm);
FCurForm := FormClass.Create(Panel1); with FCurForm do begin Parent := Panel1; Align := alClient; BorderStyle := bsNone; Show; end; end; ...........
就可以了 这样用
procedure TForm1.Button1Click(Sender: TObject); begin ShowChild(TForm2); // 注意参数是类名 end;
procedure TForm1.Button2Click(Sender: TObject); begin ShowChild(TForm3); // 注意参数是类名 end;
当前子窗体会自动释放的
----------------------------------------------
Copyright 2008 ? NAILY Soft Click here to redirect to my home Click here to redirect to my blog
|
作者: |
|
2004/2/26 19:48:17 |
4楼: |
我试试,谢谢大哥大
----------------------------------------------
-
|
作者: |
|
2004/2/27 12:13:26 |
5楼: |
是可以,但我在一个数据模块中添加的adoquery1的一些事件如afteredit,after... before..好象不能用,所以我只好对每个窗口打开之前先关闭所有的窗口,一个一个的进行关闭,如: frmin.close; .... frmout.close; 还好窗口不多,才5,6个,有没有好一点的方法啊???
----------------------------------------------
-
|
作者: |
|
2004/2/27 21:48:34 |
7楼: |
就是我在一个数据模块中加入了一个adoquery用来数据连接,然后再在另一个窗口中引用它,我在adoquery中加入了一些事件,如afteredit,afterpost....例如事件内容如下:frmin.dbedit.enabled:=true;...... 但在用你上面给的过程showchild(Tfrmin)时,虽然可以关闭所有打开的窗口,但是那些在数据模块中的事件好象不会执行,dbedit.enabled:=true;...没作用。。就是这个意思
----------------------------------------------
-
|
|