5

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

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

4

3 回答 3

9

观察项目中 Form 和 Frame 的区别。

首先是 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. 表单可以自动创建

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 没有像这样的全局变量:

var
  Form1: TForm1;

一个 Frame 来自TFrame,而一个 form 来自TForm

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

——杰伦

于 2011-01-27T11:08:20.330 回答
2

TForm 将具有 TFrame 没有的其他属性和事件。您需要手动删除这些属性和事件以更改为窗体到框架。

请务必遵循这些步骤;

  1. 将基类类型更改为 TFrame 即更改TForm1 = class(TForm)TForm1 = class(TFrame).
  2. 在窗体上,右键单击并选择View as Text选项。
  3. 删除 TFrame 没有的属性和事件,然后选择View as Form选项。
  4. 现在您应该能够将表单视为框架。
于 2011-01-27T10:02:44.363 回答
0

IDE expert如果没有任何开箱即用的工作(专有/开源)并且您完成了,请花时间一劳永逸地进行批量操作。

于 2012-01-13T13:16:59.243 回答