我想添加一個帶的TList一個TTreeViewItem和自定義類(TRoom)的另一個對象。在德爾福2007年有一個指針類型的字段'數據',這裏已經被我不知道如何使用的TValue替換。我在網上搜索了一些說明它暫時無法處理自定義類型的內容。如何使用TControl附加任何類型的對象?
有人能想出一個辦法來實現這一目標,除了製造一個黑客類?
例如,以下形式的代碼應該正常運行: -
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Rtti, System.Classes,
System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs,
FMX.TreeView, FMX.Layouts, FMX.Edit;
type
TRoom = class
ID : WORD;
Name : String;
end;
TForm1 = class(TForm)
TreeView1: TTreeView;
TreeViewItem1: TTreeViewItem;
Button1: TButton;
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
procedure TForm1.Button1Click(Sender: TObject);
var
List : TList;
begin
// Get The List From TreeViewItem1
// pani's Solution - List := TList (TreeViewItem1.TagObject);
Edit1.Text := TRoom (List.First).Name;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
Room : TRoom;
List : TList;
begin
List := TList.Create;
Room := TRoom.Create;
Room.ID := 5;
Room.Name := IntToStr (5);
List.Add (Room);
// Add The List To TreeViewItem1
// pani's Solution - TreeViewItem1.TagObject := List;
end;
end.
'TValue'是一個變量類型,使用'Data.AsObject' –
不起作用,編譯器錯誤「不兼容的類型......」無型鑄造和「無效的類型轉換」用。 –
@JerryDodge黑客類禁用了控件上的樣式,需要手動樣式分配和調用更新。 –