我有这段代码:
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组件 - &gt; EResNotFound ......
问题在于hInstance参数,如下所述:http://www.codeproject.com/Messages/931171/Re-The-difference-between-HWND-and-HINSTANCE.aspx
但是 - 如何加载它?加载失败的影响是将主窗体设置为SELDR(SELDR_WH)窗体的子窗体。
任何帮助表示赞赏。谢谢!
答案 0 :(得分:4)
尝试检查您的gif图像是否已正确设置。我想你需要将ajax-loader.gif添加到你的资源中。然后使用类型为RT_RCDATA的ajax-loader命名它。怎么做,转到项目&gt;资源&gt;添加文件,资源标识符= ajax-loader类型= RT_RCDATA。它肯定有用。我测试了它。你的代码工作正常。如果它是外部的,请确保您必须首先提交resource.dll。或者问题是真的没有..
只加载图片才能正常使用
答案 1 :(得分:0)
1)您的代码在哪里?
hInstance将从当前进程.exe文件中获取资源。 简而言之,无论你在其中使用什么形式,hInstance都是整个exe的共同点。
因此'ajax-loader'资源必须位于包含此代码的.exe中。
2)你的资源是否创造良好?
使用资源浏览器列出exe内的资源。您必须匹配资源名称(即'ajax-loader')和资源类型,必须将其设置为值10。 例如,您的.rc文件应如下所示:
ajax-loader 10 "ajax-loader.gif"
我不确定资源名称中是否允许使用' - 'char,但我想这没关系。
答案 2 :(得分:0)
您需要更改引用RT_RCDATA的方式。这种方法对我有用:
rs := tResourceStream.Create(hInstance,'imgname', MakeIntResource(RT_RCDATA));