列表框中的Firemonkey样式 - 检索数据

时间:2013-10-28 17:10:04

标签: image delphi listbox firemonkey

我正在尝试从Firemonkey XE5中的Tlistbox获取信息,但它具有相关联的样式,其中列表框中的每个项目都包含图像,备忘录和一些按钮。

单击列表框样式中的按钮时,我可以从该项目中获取信息。

我想分别从列表框中的备忘录框中获取信息。以前,我会通过使用以下代码获得第1项中的文本:

NewString:=ListBox1.items[1];

但是,现在列表框中的每个项目都有多条信息。

我可以使用以下代码添加新的列表框项目:

var Item: TListBoxItem;

begin

Item := TListBoxItem.Create(nil);

Item.Parent := ListBox1;

Item.StyleLookup := 'PlaylistItem';

Item.StylesData['Memo1']:='test text';

但是,我如何只阅读特定项目的备忘录

由于

阿曼


更新。

解决方案是

Tempstr:=ListBox1.ItemByIndex(1).StylesData['Memo1'].AsString;

我现在正试图找出如何获取图像,因为没有AsImage或AsBitmap后缀。

1 个答案:

答案 0 :(得分:1)

我建议继承TListBoxItem,然后添加属性和方法,使用FindStyleResource从样式对象中获取/设置数据,

class TMemoListBoxItem = class(TListBoxItem)
protected
  function GetMemoText: String;
  procedure SetMemoText(const Text: String);  
published
  property MemoText: String read GetMemoText write SetMemoText;
end;

function TMemoListBoxItem.GetMemoText: String;
var O: TFMXObject;
begin
  O := FindStyleResource('Memo1');
  if O is TMemo then
    Result := TMemo(O).Text
  else
    Result := '';
end;

procedure TMemoListBoxItem.SetMemoText(const Text: String);
var O: TFMXObject;
begin
  O := FindStyleResource('Memo1');
  if O is TMemo then
    TMemo(O).Text := Text;
end;

同样继续处理您的其他数据。