Delphi中如何通过TControl将任意类型对象无缝附加并实现跨类型交互?
- 内容介绍
- 文章标签
- 相关推荐
本文共计360个文字,预计阅读时间需要2分钟。
我想添加一个带有TTreeViewItem的TList和自定义类(TRoom)的对象。在Delphi 2007中,有一个Pointer类型的字段'Data'已被替换为TValue。我不知道如何使用它。我在互联网上搜索了一些关于它的说明,但暂时没有找到相关信息。
我想添加一个带有TTreeViewItem的TList和一个自定义类(TRoom)的对象.在delphi 2007中,有一个Pointer类型的字段’Data’已被替换为TValue,我不知道如何使用它.我在互联网上搜索了一些声明它暂时无法处理自定义类型.除了制作黑客课程外,有人可以设法实现这一目标吗?
例如,以下表单代码应该正常运行: –
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. 如果要将对象“附加”到TControl,TControl的父类TFmxObject将引入存储任何对象值的.TagObject属性.
除了使用此属性之外,您还可以将.Tag属性与类型转换为NativeInt和您想要的类类型,例如:TreeViewItem1.Tag:= NativeInt(List);和List:= TList(TreeViewItem1.Tag);
本文共计360个文字,预计阅读时间需要2分钟。
我想添加一个带有TTreeViewItem的TList和自定义类(TRoom)的对象。在Delphi 2007中,有一个Pointer类型的字段'Data'已被替换为TValue。我不知道如何使用它。我在互联网上搜索了一些关于它的说明,但暂时没有找到相关信息。
我想添加一个带有TTreeViewItem的TList和一个自定义类(TRoom)的对象.在delphi 2007中,有一个Pointer类型的字段’Data’已被替换为TValue,我不知道如何使用它.我在互联网上搜索了一些声明它暂时无法处理自定义类型.除了制作黑客课程外,有人可以设法实现这一目标吗?
例如,以下表单代码应该正常运行: –
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. 如果要将对象“附加”到TControl,TControl的父类TFmxObject将引入存储任何对象值的.TagObject属性.
除了使用此属性之外,您还可以将.Tag属性与类型转换为NativeInt和您想要的类类型,例如:TreeViewItem1.Tag:= NativeInt(List);和List:= TList(TreeViewItem1.Tag);

