加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 如何使用TControl附加任何类型的对象?

发布时间:2020-12-15 09:15:09 所属栏目:大数据 来源:网络整理
导读:我想添加一个带有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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读