【问题标题】:Delphi: "Resource not found" in design mode - why?Delphi:设计模式下“找不到资源”-为什么?
【发布时间】:2011-07-07 10:06:53
【问题描述】:

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

所以:我有一个基于 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;

当我从代码中使用它时效果很好。 但是当我注册它并尝试输入表单时,我得到了错误:

错误 找不到资源 scrollpngbutton_ok。 好的

我不明白,因为我放了 {$R *.res},并且从代码来看这是有效的。 为什么找不到资源?是创建失败了,还是什么?

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

【问题讨论】:

  • 什么是TsAlphaButtonGoogle 不知道。
  • 你在哪个文件中有 $R 指令?
  • 一个 AlphaSkin 组件。现在我找到了错误的根源,他们是使用hInstance,什么不等于我的hInstance。我更正了他们的代码。谢谢你的帮助! dd

标签: delphi resources components


【解决方案1】:

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

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

/* YourResources.rc */
SCROLLPNGBUTTON  BITMAP MyBitmap.bmp

在您的来源中:

{$R YourResources.res YourResources.rc}  // The IDE will compile .rc to make .res

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 2021-09-18
    • 2011-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多