Delphi:在设计模式下"找不到资源" - 为什么?

dur*_*ara 3 delphi resources components

我收到了一个错误,我不知道为什么会得到它...

所以:我有一个基于sAlphaButton的新组件.这有ImageList属性,我的组件用我自己的标题/图像扩展这个按钮,翻译成匈牙利语.

我使用LoadRes来获取预定义的图像.

看到这个:

procedure TScrollPNGButton.LoadAsImageListFromRes(ResNames : TStrings; IL : TsAlphaImageList);
var
    s : string;
    i : integer;
begin
    IL.CLear;
    for i := 0 to ResNames.Count - 1 do begin
        s := ResNames[i];
        AddImageFromRes(hInstance, IL, s, ifPNG);
    end;
end;


procedure TScrollPNGButton.LoadResToImageList;
var
    sl : TStringList;
begin
    sl := TStringList.Create;
    try
        sl.Text :=
            Trim(
                    'scrollpngbutton_ok'#13 +
                    'scrollpngbutton_cancel'#13 +
                    'scrollpngbutton_close'#13 +
                    'scrollpngbutton_yes'#13 +
                    'scrollpngbutton_no'#13 +
                    'scrollpngbutton_refresh'#13 +
                    'scrollpngbutton_print'#13 +
                    'scrollpngbutton_email'#13 +
                    'scrollpngbutton_add'#13 +
                    'scrollpngbutton_delete'#13 +
                    'scrollpngbutton_edit'#13 +
                    ''
                );
        LoadAsImageListFromRes(sl, FImgs);
    finally
        sl.Free;
    end;
end;


constructor TScrollPNGButton.Create(aOwner : TComponent);
begin
    inherited Create(aOwner);
    FImgs := TsAlphaImageList.Create(nil);
    inherited Images := FImgs;
    LoadResToImageList;
end;
Run Code Online (Sandbox Code Playgroud)

当我从代码中使用它时它工作得很好.但是当我注册它,并且我试图填写表格时,我收到了错误:

找不到错误资源scrollpngbutton_ok.好

我不理解它,因为我放了{$ R*.res},而且从代码中可以正常工作.为什么找不到资源?创作失败了,还是什么?

好的,我可以使用Loaded; 在设计时设置图像,但在运行时不调用Loaded.

Ken*_*ite 11

你不能使用*.res.这是IDE生成的文件,它匹配名称匹配的DFM /单元.

创建自己的资源文件(可以将其创建为文本文件)并自行编译(如果您使用的是Delphi 7或更高版本,则让IDE为您执行此操作).

/* YourResources.rc */
SCROLLPNGBUTTON  BITMAP MyBitmap.bmp
Run Code Online (Sandbox Code Playgroud)

在你的来源:

{$R YourResources.res YourResources.rc}  // The IDE will compile .rc to make .res
Run Code Online (Sandbox Code Playgroud)