1

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

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

问题是有错误:

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

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

4

1 回答 1

5

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

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  ...
  end;

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

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

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

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

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

如果你还不知道这一切,那么在 Stack Overflow 上提问确实不是最有效的跟上进度的方法。一本好书肯定会有所帮助。即使是旧版本的 Delphi,主要概念多年来也没有改变。但是,如果您没有书,那么您至少应该按照教程进行操作。

于 2013-12-05T18:32:48.773 回答