我制作了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项目中。 “picture”是我的ListBox项目中的TImage。
我的代码出了什么问题? 我正在使用Delphi XE4。
感谢您的帮助和最诚挚的问候, 霍尔格
答案 0 :(得分: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示例,它是最新的,易于理解并且基本上完全符合您的要求。