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イベントに関連付けていることを確認する必要もあります。Object Inspector を使用して確認します。

しかし、これをすべて実現する最も簡単な方法は、IDE にすべてを作成させることです。したがって、次のようになります。

  • 質問で示したコードを削除します。
  • デザイナーでフォームをクリックします。
  • オブジェクト インスペクタで [イベント] ビューを選択します。
  • OnCreateオブジェクト インスペクタでイベントを見つけます。
  • OnCreateオブジェクト インスペクタで、イベントのハンドラ列をダブルクリックします。
  • コード エディターが開き、コードを追加するための空のイベント ハンドラー本体が表示され、他のすべての部分が結合されます。具体的には、メソッドが型で宣言され、ハンドラーがイベントに接続されます。

これが通常の方法ですが、イベントを発生させるために必要な 3 つのことを知っておくと役に立ちます。

  1. イベント ハンドラーは、クラスの型で宣言されます。
  2. イベント ハンドラーは、クラスの実装で定義されます。
  3. イベント ハンドラーは、オブジェクト インスペクターでイベントに関連付けられます。実際、Object Inspector で設定しても、情報は実際には .dfm ファイルに存在します。

これらすべてをまだ知らない場合、Stack Overflow で質問することは、実際に最新情報を得る最も効果的な方法ではありません。良い本は確かに役に立ちます。古いバージョンの Delphi の場合でも、主要な概念は何年も変わっていません。ただし、本を持っていない場合は、少なくともチュートリアルに従う必要があります。

于 2013-12-05T18:32:48.773 に答える