如何在一个窗体内显示多个模块内容?(200分)

  • 主题发起人 主题发起人 Ares
  • 开始时间 开始时间
A

Ares

Unregistered / Unconfirmed
GUEST, unregistred user!
有多个窗体模块,如何在一个界面下显示呢?
(不是使用MDI或Show/ShowModal的方式)
就像Notes那中的显示方式?是如何实现的?
谢谢各位兄台!
 
notes我没用过?
不过我可以说一种简单方法。
主form上放几个panel,自己create几个次
form,然后
次form(x).parent:=panel(x),
次form(x).show。

别忘了设置次form.aligh:=alclient。
你试试看?
 
可以使用Delphi的Dock属性,在刚开始创建几个窗体让程序一执行就将这几个窗体到各自的
Dock容器中。刚开始创建两个窗体Form1、Form2,在Form1上放一个Panel,可以设置Panel
的对齐方式,设置Panel1的DockSite属性为True,设置Form2的DragKind为DkDock、DragMode
为dmAutomatic。
在Form1的FormShow方法中添加如下代码:
Form2.ManualDock(Panel1,nil);
试试看,是不是你需要的,我没有用过Lotus。以此类推可以多做几个窗体,并一次将他们
全部装载在一个窗体上。
 
to Ares
你指的是Notes的工作台吗?那应该是类似ToolButton的东西。
或许我没搞清楚你的要求。
 
To Toylin兄:
我看了D5自带的例子,但是它好像是不能在运行期自动创建窗体。

To doxpix、飘兄:
我试过了,没成功。不知道Why

我的意思是,窗体模块在运行期内创建,并且在Main窗体中显示
 
怎么会呢?
procedure TForm1.Button2Click(Sender: TObject);
VAR
f:Tframe;
begin
f:=Tframe.Create(self);
f.Parent := form1;
f.show;
f.Color := Clred;
end;
 
1.新建一个工程,在主窗体中放置一个panel1,一个button1,
并在private中声明一个变量:FFrame: TFrame;
2.创建一个Frame窗体Frame1,在其中随便放些组件,如edit,memo等。
3.在主窗体的button1的OnClick事件中加入如下代码:
begin
if FFrame <> nil then
begin
FFrame.free;
FFrame := nil;
end;
FFrame := TFrame1.Create(Panel1);
FFrame.align := alClient;
FFrame.Parent := Panel1;
end;
看看吧,Panel1上就会出现你创建好的Frame1,同理,你放置多个Panel,就会得出
你所想要的多个框架效果。

 
to: shineya
如果在frame 中放入Memo或者PageControl控件,不能显示,并且会影响其它控件的显示,去掉他们没事的,见问题:为什么frame中的子控件(比如TMemo)设计时可见,但运行时不可见?
 
后退
顶部