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

RBA*_*RBA 5 delphi vcl dfm

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

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

Jer*_*ers 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.
Run Code Online (Sandbox Code Playgroud)

区别:

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

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
Run Code Online (Sandbox Code Playgroud)

object Frame3: TFrame3
  Left = 0
  Top = 0
  Width = 320
  Height = 240
  TabOrder = 0
end
Run Code Online (Sandbox Code Playgroud)

Frame没有这些属性:

  • 字幕
  • ClientHeight
  • ClientWidth
  • 颜色
  • Font.Charset
  • 字体颜色
  • Font.Height
  • Font.Name
  • 字体样式
  • OldCreateOrder
  • PixelsPerInch
  • textHeight不同

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

  • 在OnCreate
  • 的OnDestroy

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

var
  Form1: TForm1;
Run Code Online (Sandbox Code Playgroud)

一个帧从下降TFrame,而一个形式从下降TForm.

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

--jeroen