设为首页收藏本站

Delphi乐园 开发者的家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2269|回复: 1

Delphi主从窗体调用的实现 [复制链接]

Rank: 4

  • TA的每日心情
    慵懒
    2013-8-10 13:48:45
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    金钱
    60935
    12142
    0
    在线时间
    6 小时
    阅读权限
    10
    精华
    0
    积分
    0
    UID
    10
    发表于 2012-7-6 10:35:56 |显示全部楼层
    分享到:
    用delphi来制作一些客户端小工具还是比较方便的。我们通常在做一个软件的时候,首先要考虑的是窗体布局和窗体之间的互相调用问题。下面就是主从窗体的实施步骤:
    第一步,打开【Delphi7】,新建一个Delphi工程,新建一个空白窗体命名为:【MainActivedForm】。
    然后重写构造函数:
    代码如下:
    interface
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    type
      TMainActivedForm = class(TForm)
      private
          FAsChild: Boolean;
        { Private declarations }
      public
        { Public declarations }
        FTempParent: TWinControl;
        constructor Create(AOwner: TComponent); overload; override;
        constructor Create(AOwner: TComponent; AParent: TWinControl); reintroduce; overload;
      end;
    var
      MainActivedForm: TMainActivedForm;
    implementation
    {$R *.dfm}
    constructor TMainActivedForm.Create(AOwner: TComponent);
    begin
      FAsChild := False;
      inherited Create(AOwner);
    end;
    constructor TMainActivedForm.Create(AOwner: TComponent; AParent: TWinControl);
    begin
      self.BorderStyle := bsnone;
      self.Align := alclient;
      FAsChild := True;
      FTempParent := aParent;
      
      inherited Create(AOwner);
      setparent(AParent);
    end;
    end.
    新建一个子窗体,窗体的名称是【JXConfigForm】,窗体的基类设置为  TJXConfigForm = class(TMainActivedForm)。
    然后新建主窗体,并添加【MainActivedForm】的单元引用。
    在主窗体上拖一个TbsSkinPanel控件,命名为【bsSkinPanel2】。
    在主窗体中声明一个全局变量【aPnParent:TbsSkinPanel;】。
    创建主窗体的FormCreate事件,事件代码如下:
    procedure TMainForm.FormCreate(Sender: TObject);
    begin
    aPnParent := bsSkinPanel2;
    perform(WM_SIZE,SIZE_MAXIMIZED,0);
    end;
    在主窗体上放置一个按钮【bsSkinSpeedButton5】,添加按钮事件函数:
    procedure TMainForm.bsSkinSpeedButton5Click(Sender: TObject);
    begin
    //调出页面
      if MainActivedForm <> nil then
        begin
          MainActivedForm.Free;
        end;
      MainActivedForm := TJXConfigForm.Create(application, apnParent);
      MainActivedForm.show;
    end;
    这样,主从窗体的调用就完成了。
    您需要登录后才可以回帖 登录 | 立即注册

    空间、域名、优惠稳定。香港空间1元,美国2元。

    手机版|Delphi乐园 ( 冀ICP备11023363号-7 )    

    GMT+8, 2016-10-23 02:18

    Powered by Discuz! X2

    © 2001-2011 Comsenz Inc.

    公网安备 14090202000504号

    回顶部