2

我制作了一个 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。

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

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

4

1 回答 1

3

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

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.

您应该做的是仔细查看CustomListBox样本。

遵循其他教程没有任何问题,但是考虑到 Firemonkey 更改每个版本的速度以及您链接的教程已经很老了,我建议您回退到已经包含的 Delphi 示例,它是最新的,易于理解并且基本上可以正是您正在寻找的。

于 2013-07-17T07:30:10.637 回答