未声明的“FormCreate”错误 Delphi

Vek*_*kka 1 delphi stringgrid

我正在尝试命名字符串网格中的列(在此灰色行中)。我知道我应该使用这样的东西:

procedure TForm1.FormCreate(Sender: TObject);
begin
  StringGrid1.Cells[0,0] := 'Text 1';
  StringGrid1.Cells[1,0] := 'Text 2';
end;
Run Code Online (Sandbox Code Playgroud)

问题是有错误:

“TForm1”在第 81 行不包含名为“FormCreate”的成员。

我是初学者。我的程序有什么问题?

Dav*_*nan 5

您需要在类型中声明方法。

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  ...
  end;
Run Code Online (Sandbox Code Playgroud)

以及您将在单元顶部附近找到的类型声明的那行代码。然后你的程序就会编译。您还需要确保事件处理程序将处理程序附加到表单的OnCreate事件。使用对象检查器来检查。

但实现这一切的最简单方法是让 IDE 编写所有内容。所以,你会:

  • 删除您在问题中显示的代码。
  • 单击设计器中的表单。
  • 在对象检查器中选择事件视图。
  • OnCreate在对象检查器中查找事件。
  • OnCreate在对象检查器中双击事件的处理程序列。
  • 现在代码编辑器打开,显示一个空的事件处理程序主体供您添加代码,所有其他部分都连接起来。具体来说,方法在类型中声明,处理程序连接到事件。

现在,这就是您通常的做法,但了解触发事件所需的三件事确实值得:

  1. 事件处理程序在类的类型中声明。
  2. 事件处理程序在类的实现中定义。
  3. 事件处理程序附加到对象检查器中的事件。事实上,尽管您在 Object Inspector 中设置了它,但信息实际上存在于 .dfm 文件中。

如果你还不知道这一切,那么在 Stack Overflow 上提问真的不是最有效的方式来加快速度。一本好书肯定会有所帮助。即使是旧版本的 Delphi,其主要概念也多年未变。但如果你没有书,那么你至少应该遵循教程