【问题标题】:Firemonkey ListBox Item with imageFiremonkey ListBox 项目与图像
【发布时间】:2013-07-15 14:59:41
【问题描述】:

我制作了一个 Firemonkey 自定义 ListBox 项,使用样式书设计。 当我尝试插入 ListBox 项时,一切正常(插入文本等),除了更改 ListBox 项中的图片。

我在 http://www.experts-exchange.com 上学习了本教程。

这是我的代码:

procedure TForm2.Button1Click(Sender: TObject);
var
    i         : Integer;
    LBItem    : TListBoxItem;
    ItemImage : Timage;
begin
    ListBox1.BeginUpdate;
    ListBox1.Items.Clear;
    try
        for i := 0 to 9 do begin

            LBItem := TListBoxItem.Create(nil);
            LBItem.Parent := ListBox1;
            LBItem.StyleLookup := 'rowLayout';
            LBItem.StylesData['textName'] := 'Some text...';
            LBItem.StylesData['textFormat'] := 'Some more text...';

            ItemImage := LBItem.FindStyleResource('picture') as TImage;
            if Assigned(ItemImage) then
                LBItem.ItemData.Bitmap.LoadFromFile('D:\MyTestPicture.jpg');
        end;
    finally
        ListBox1.EndUpdate;
    end;
end;

“rowLayout”是我在样式书中的布局,我为 ListBox 项制作的。 “textName”和“textFormat”是一些 TText,我放在 ListBox 项中。 “图片”是我的 ListBox 项中的 TImage。

我的代码出了什么问题? 我正在使用 Delphi XE4。

感谢您的帮助和问候, 霍尔格

【问题讨论】:

    标签: delphi listbox firemonkey listboxitem


    【解决方案1】:

    您的图片不会改变,因为在您的代码中您只加载了一张图片。 您还犯了一个大错误,即不断循环加载图像,您应该只在创建表单时加载一次图像,然后简单地引用正确的位图。

    if Odd(I) then
        Item.ItemData.Bitmap := Image1.Bitmap         
      else
        Item.ItemData.Bitmap := Image2.Bitmap; 
    

    具有讽刺意味的是,大多数人忘记检查 Samples 文件夹,该文件夹通常位于 C:\Users\Public\Documents\RAD Studio\XX.0\Samples\FireMonkey

    您应该仔细查看CustomListBoxsample。

    遵循其他教程并没有错,但是考虑到 Firemonkey 更改每个版本的速度以及您链接的教程已经很老了,我建议您回退到已经包含的 Delphi 示例,它是最新的,易于理解并且基本上完全符合您的要求。

    【讨论】:

    • 嗨彼得,感谢您的回答!我深入查看了 Demo 文件夹,但是当我尝试在我的程序中实现它时,它与图像无关。但现在,我玩了一下“风格名称”。我发现,当我使用样式名称:“icon”时,以下代码是否完美运行:LBItem.ItemData.Bitmap.LoadFromFile(folder + '\' + TJSONPair(item).JsonValue.Value);当我将样式名称从我的图像更改为其他名称时,它不起作用。最好的问候,霍尔格
    • @HolgerH “样式名称”到底代表什么?它是 ListBox 中的 StyleName 属性吗?还是LBItem.FindStyleResource('icon')解决方案?
    猜你喜欢
    • 2013-10-22
    • 2016-11-08
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多