如何在Delphi 7中将数组成员声明为类

时间:2018-10-19 17:29:02

标签: delphi

是否可以将TMistakes2D添加到类TForm1中?

type
  TMistakes2D: array of TStringList;
  end;
type
  TForm1 = class(TForm)
    mistakes2D: TMistakes2D;
  end;

此打印错误...

  

字段Form1.mistakes2D没有相应的组件。删除声明?

2 个答案:

答案 0 :(得分:6)

在声明组件(TForm)之后的第一部分保留给IDE拖放组件时使用。自动将其假定为published,因为在运行时从DFM文件创建表单时,VCL的流系统会使用它。自动published可见性会强制为该部分中的项目生成RTTI信息,以便可以在该流处理过程中正确识别和创建它们。

您可以通过创建一个新的空白表单,然后查看源代码来查看其工作原理,该代码看起来像这样:

unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

end.

在表单上放置一个按钮会在该按钮的顶部,表单声明的下方添加声明:

type
  TForm3 = class(TForm)
    Button1: TButton;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

要声明该类的字段(成员)变量,请将其包含在该类的privateprotectedpublic部分中。

type 
  TMistakes2D: array of TStringList;

type
  TForm1 = class(TForm)
  private              // Can also be public or protected
    mistakes2D: TMistakes2D;
  end;

答案 1 :(得分:3)

一个类声明分为几部分,由privateprotectedpublic分隔。

Delphi中的表单编辑器保留第一部分供自己使用。在那里放置了从编辑器创建的所有组件和事件的声明。如果您尝试手动向该部分添加任何内容,则可能会感到困惑。在这种情况下,就是说根据PAS文件,应该有一个名为Mistakes2D的组件,但DFM文件没有这样的组件。

要添加自己的字段和方法,您需要通过添加其他私有,受保护或公共字段来开始另一部分。

type
  tMyForm = class(TForm)
    // this area is reserved for the Delphi form editor

  private // This could be 'public' or 'protected'
    // your code can go here

  end;