首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi 手动窗体创设函数

2012-10-15 
delphi 手动窗体创建函数//窗体继承了一个模块窗体,模块窗体自己写的一个自动保存从体内表格的宽度等信息,

delphi 手动窗体创建函数
//窗体继承了一个模块窗体,模块窗体自己写的一个自动保存从体内表格的宽度等信息,只需要在设计期的时候新建窗体
里将TgysForm = class(TForm)改为 TgysForm = class(TfrmMBForm)就可以了,现在想将这种固定的打开窗体方式改写成一个通用函数,每个新建的窗体都会将class(TForm)改为class(TfrmMBForm),
gysForm: TgysForm;
手动创建窗体的方法:
procedure TfrmMain.N13Click(Sender: TObject);
begin
if not Assigned(gysform) then
  begin
  try
  gysform := Tgysform.Create(application);
  gysform.ShowModal;
  finally
  freeAndNil(gysform);
  end;
  end;
end;
希望可以改写成一个通用的函数,只需要将要创建的窗体传入到函数里面调用一下即可打开窗体。

[解决办法]
给一段你参考一下
unit1

Delphi(Pascal) code
unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls;type  TForm1 = class(TForm)    btn1: TButton;    procedure btn1Click(Sender: TObject);  private    { Private declarations }    procedure ShowForm(str:string);  public    { Public declarations }  end;var  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.ShowForm(str:string);var  frmName:TForm;begin  if GetClass(str) <> nil   then  begin   frmName:=TFormClass(FindClass(str)).Create(self);   frmName.ShowModal;  end;end;procedure TForm1.btn1Click(Sender: TObject);var  str1: string;begin  str1:= 'TfrmTest';  ShowForm(str1);end;end.
[解决办法]
Delphi(Pascal) code
procedure CreateForm(var vForm:TForm; Const pForm:TFormclass);begin  if not AsSigned(vForm) then     vForm:=pForm.Create(Application);  else     vForm.BringToFront;end;调用:CreateForm(TForm(Form1),TForm1);CreateForm(TForm(Form2),TForm2);... 

热点排行