如何在Delphi中对表格进行批量转换?

时间:2011-01-27 09:43:01

标签: delphi vcl dfm

我有一个带aprox的表单,上面有200个可视组件,分配了很多事件,我现在需要将它更改为一个框架。我没有足够的时间复制所有组件,重新安排所有可视组件并重新分配所有事件,对齐等等。所以,我复制了pas和dfm,打开并开始在文本编辑器中编辑它们(将TForm更改为Tframe等)但似乎这没有得到预期的结果。

有没有人知道如何解决这个问题?

3 个答案:

答案 0 :(得分:9)

观察项目中表格和框架的差异。

首先是project.dpr来源:

program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit3 in 'Unit3.pas' {Frame3: TFrame};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

的差异:

  1. 框架作为更详细的评论告诉IDE应该使用哪个设计师
  2. 表格可以自动创作
  3. Dfm文件:

    object Form1: TForm1
      Left = 0
      Top = 0
      Caption = 'Form1'
      ClientHeight = 348
      ClientWidth = 643
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'Tahoma'
      Font.Style = []
      OldCreateOrder = False
      PixelsPerInch = 96
      TextHeight = 13
    end
    

    object Frame3: TFrame3
      Left = 0
      Top = 0
      Width = 320
      Height = 240
      TabOrder = 0
    end
    

    Frame没有这些属性:

    • 标题
    • ClientHeight
    • ClientWidth
    • 颜色
    • Font.Charset
    • Font.Color
    • Font.Height
    • Font.Name
    • Font.Style
    • OldCreateOrder
    • PixelsPerInch
    • textHeight不同

    旁注:框架没有这些事件:

    • OnCreate中
    • 的OnDestroy

    Frame没有像这样的全局变量:

    var
      Form1: TForm1;
    

    一个框架来自TFrame,而一个框架来自TForm

    注意:使用Frame / Form继承,您的步骤会变得更长。

    - 的Jeroen

答案 1 :(得分:2)

TForm将拥有TFrame不具备的其他属性和事件。您需要手动删除这些属性和事件,以便将其更改为框架。

请务必遵循以下步骤;

  1. 将基类类型更改为TFrame,即将TForm1 = class(TForm)更改为TForm1 = class(TFrame)
  2. 在表单上,​​右键单击并选择View as Text选项。
  3. 删除TFrame没有的属性和事件,然后选择View as Form选项。
  4. 现在您应该可以将表单视为框架了。

答案 2 :(得分:0)

如果没有任何开箱即用(专有/开源)并且你已经完成了,那么花点时间一次性开发IDE expert进行批量操作。