灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:8962回复:0

Delphi主从窗体调用的实现

楼主#
更多 发布于:2012-09-08 13:06

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;
这样,主从窗体的调用就完成了。


摘自 XFeng信息科技工作室


喜欢0 评分0
游客

返回顶部