gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 15:12:11 25 4
gpt4 key购买 nike

我想添加一个带有 TTreeViewItem 的 TList 和一个自定义类 (TRoom) 的对象。在delphi 2007中,有一个指针类型的字段“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);和列表 := TList(TreeViewItem1.Tag);

关于delphi - 如何使用 TControl 附加任何类型的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20151708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com