1

私はこのコードを持っています:

SELDR_WH := FindControl(FindWindow(nil,'PhoneDB Filtering')) as TForm;
 if seldr_wh <> nil then
  begin
    SELDR_WH.ClientHeight := SELDR_WH.ClientHeight + 20;
    gif := TGIFImage.Create;
    with gif do begin
      Parent := SELDR_WH;
      Top := SELDR_WH.ClientHeight - 20;
      Left := 30;
      try
        rs := TResourceStream.Create( hInstance, 'ajax-loader', RT_RCDATA );
        gif.LoadFromStream(rs);
      except on Exception do begin
          rs.free;
          gif.free;
        end;
      end
    end;
  end;

コードはかなり明白だと思います。説明はありません...

しかし-問題は、このGIFリソースをgifコンポーネントにロードできないことです-> EResNotFound ...

ここに記載されているように、問題は hInstance パラメーターにあります

しかし - それをロードする方法は?読み込みに失敗すると、メイン フォームが SELDR ( SELDR_WH ) フォームの子フォームとして設定されます。

どんな助けでも感謝します。ありがとう!

4

3 に答える 3

4

gif 画像が適切に設定されているかどうかを確認してください。リソースに ajax-loader.gif を追加する必要があると思います。次に、タイプ RT_RCDATA の ajax-loader で名前を付けます。方法は、[プロジェクト] > [リソース] > [ファイルを追加] に移動し、リソース識別子 = ajax-loader タイプ = RT_RCDATA です。それは確かに動作します。私はそれをテストしました。あなたのコードは正常に動作しています。外部の場合は、最初にresource.dllをロードする必要があることを確認してください。それとも、問題は実際にはそこにないのかもしれません..

画像をロードするだけで正常に動作します

于 2010-10-21T01:03:43.167 に答える
0

1) コードはどこにありますか?

hInstance は、現在のプロセスの .exe ファイルからリソースを取得します。要するに、hInstance は、使用している形式に関係なく、exe 全体に共通です。

したがって、「ajax-loader」リソースは、このコードを含む .exe にある必要があります。

2) リソースは適切に作成されていますか?

リソース エクスプローラーを使用して、exe 内のリソースを一覧表示します。リソース名 (「ajax-loader」など) とリソース タイプを一致させる必要があります。値は 10 に設定する必要があります。たとえば、.rc ファイルは次のようになります。

ajax-loader 10 "ajax-loader.gif"

リソース名に「-」文字を使用できるかどうかはわかりませんが、これで問題ないと思います。

于 2010-10-20T10:27:28.150 に答える
0

RT_RCDATA を参照する方法を変更する必要があります。この方法は私にとってはうまくいきます:

rs := tResourceStream.Create(hInstance,'imgname', MakeIntResource(RT_RCDATA));
于 2010-10-20T19:40:39.113 に答える