Delphi中子Form界面设计另一方式分析

最近看了VirtualTreeview的Demo有感,在我们做程序UI时,有的程序只是一个单窗体,但是点击ToolBar的SpeedButton后,会切换到不同的子窗体上,实现了窗体之间的快速切换,而且界面风格简单明了,同时避免了设计阶段在同一主Form中的元素过多。电驴eMule就是这种风格中典型的一例。
下面我们来看看这种UI界面是如何设计的。
1、启动Delphi,新建一个VclForm程序。通常在多窗口程序设计里要使用MDI窗口类型来装载各个子窗体,但是在这里我们的主窗体的FormStyle仍然使用fsNormal类型。然后我们使用Panel控件(Panel1)置顶做为整个程序的快速按钮放置的地方,并在Panel上放置好你所需要的SpeedButton,并依次设置好它们的tag以用于判断是哪个button被点击。
2、在主窗体的toolbar以下需要显示子窗体的位置,放置另外一个panel(Panel2),并设置位置属性为alClient。这个panel是后面依次响应不同的button点击后显示不同的form的容器。
3、编写判断button点击的公共代码如下,各个button的OnClick事件均使用此代码判断并响应显示相应的form:
procedure TForm1.ButtonClick(Sender: TObject);
var
  NewFormClass:TFormClass;
  NewForm:TForm;
begin
  case (Sender as TSpeedButton).Tag of
    0:NewFormClass:=TForm2;  //TForm2是点击button0时要显示的form
    1:NewFormClass:=TForm3;  //Tform3是点击button1时要显示的form
    ... ....
  else
    NewFormClass:=nil;
  end;
  if (Panel2.ControlCount=0) or not (Panel2.Controls[0] is NewFormClass) then
  begin
    if Panel2.ControlCount>0 then Panel2.Controls[0].free;
    if Assigned(NewFormClass) then
    begin
      NewForm:=NewFormClass.Create(self);
      NewForm.Parent:=Panel2;
      NewForm.Hide;
      NewForm.BorderStyle:=bsNone;
      NewForm.align:=alClient;
      NewForm.show;
    end;
  end;
end;
这样,就可以得到类似eMule子Form显示方式的UI界面了。

转载于:https://www.cnblogs.com/neoyao/archive/2008/04/23/1167005.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值