4

これは私のコード全体です:

    unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Images: array[0..29,0..39] of TImage; //array
implementation

{$R *.dfm}
//form create
procedure TForm1.FormCreate(Sender: TObject);
var xx,yy: Integer; //local variables
begin
        for xx:=0 to 29 do
                for yy:=0 to 39 do
                        begin
                             Images[xx,yy]:=Timage.Create(Form1);
                             Images[xx,yy].Canvas.Rectangle(0,0,17,17);
                             Images[xx,yy].Left:=xx*16;
                             Images[xx,yy].Top:=yy*16;
                        end;
end;

end.

そして、常に次のエラーが表示されます。「プロジェクト Project1.exe で例外クラス EClassNotFound が発生し、"TImage が見つかりません" というメッセージが表示されました。プロセスが停止しました。続行するには、ステップまたは実行を使用してください

次のようなインターネット上の他のコードを試しました:
Delphi: TImage.Create はアクセス違反を引き起こし
ます http://www.delphi-central.com/tutorials/memory_game_2.aspx

何も役に立ちません!なぜこうなった?

ありがとうございました。

4

2 に答える 2

8

TImage.Create の行で例外が発生しますか? TForm1 宣言にない TImage インスタンスを含む無効な DFM ファイルが残っている可能性がありますか?

通常、フォームまたはデータモジュールで子として使用されるすべてのクラスは、ストリーミング用に自動的に登録されます。フォームで TImage が宣言されておらず、アプリケーションの他のフォームに TImage が含まれていないため、登録はありません。

TImage をフォームにドロップするだけで簡単にテストできます。

于 2012-04-26T07:53:17.117 に答える
1

フォームに表示する場合は、次のコードをループに追加します。

Images[xx,yy].Parent:= Self;
于 2012-04-26T11:16:55.323 に答える