代码之家  ›  专栏  ›  技术社区  ›  Some1Else

函数在Delphi中重新创建TForm

  •  0
  • Some1Else  · 技术社区  · 3 年前

    我需要一个重新创建表单的过程。

    原因是我有很多不同组件的表单。这些组件值(编辑框文本、复选框是否选中等)保存在onhide中,并在isnide onshow中再次加载。这样可以确保在程序运行期间保留所有用户设置。

    当他们做出(有意或无意)导致问题的改变时,问题就会出现。我希望能够在应用程序首次安装时将表单“重置”为默认设置。

    我可以创建一个运行此代码的重置按钮

     FormName.free;
     DeleteFile('FormNameSettings.ini');
     FormName:=TFormName.Create(Application);
     FormName.show;
     
    

    这就是所需要的。关闭表单,清除设置文件(以便再次显示时不会恢复状态),然后重新创建表单。表单现在具有原始默认设置。

    我的问题是试图将代码转换成一个可以从多种形式轻松调用的函数。

    procedure ResetForm(form:tform;filename:string);
    begin
        form.free;
        if fileexists(filename)=true then deletefile(filename);
        <what goes here to recretae the form by the passed tform?>
    end;
    

    有人能帮忙让这个重置表单程序工作吗?最新的德尔福11。

    1 回复  |  直到 3 年前
        1
  •  2
  •   Uwe Raabe    3 年前

    当您更改表单实例并希望返回新实例时, 类型 必须是var参数。

    然后,您需要保存有关表单的一些信息,以供以后使用:

    • 表单类

    这允许您重新创建表单。

    procedure ResetForm(var form: TForm; const filename: string);
    begin
      var formClass := TFormClass(form.ClassType);
      var formOwner := form.Owner;
      var formShowing := form.Showing;
      form.free;
      if fileexists(filename) = true then
        deletefile(filename);
      form := formClass.Create(formOwner);
      if formShowing then
        form.Show;
    end;