0

我正在尝试从 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 后缀。

4

1 回答 1

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;

并继续为您的其他数据。

于 2013-10-29T20:20:14.953 回答