type Ttttt = ^tttt; tttt =record SSS : String; III : integer; end;... //添加数据 procedure TForm1.Button3Click(Sender: TObject); var Test : Ttttt; begin New(Test); Test.SSS:='ddddddddd'; Test.III:=12345; TreeView1.Items.AddChildObject(nil,test.SSS,TObject(Test));end;//显示数据 procedure TForm1.Button4Click(Sender: TObject); var s : string; begin S:=Ttttt(TreeView1.Items[0].Data)^.SSS; Showmessage(s);end;
我有2种数据,需要定义2个record来表示,问题是该怎样设置和判断2个类型?
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls; type PTreeData=^TTreeData; TTreeData=record Index:integer; Text:string; end; type TForm1 = class(TForm) TreeView1: TTreeView; Button1: TButton; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button1Click(Sender: TObject); procedure TreeView1Click(Sender: TObject); private { Private declarations } TreeDataLst:TList; public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject); begin TreeDataLst:=TList.Create; end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin TreeDataLst.Clear; TreeDataLst.Free; end;procedure TForm1.Button1Click(Sender: TObject); var i:integer; aData:PTreeData; begin i:=treeview1.Items.Count; New(aData); aData.Index:=i; aData.Text:='NO.'+inttostr(i); TreeDataLst.Add(aData); Treeview1.Items.Add(nil,'Node:'+inttostr(i)).Data:=aData; end;procedure TForm1.TreeView1Click(Sender: TObject); begin if Treeview1.Selected<>nil then showmessage(format('DataIndex:%d,DataText:%s', [PTreeData(Treeview1.Selected.Data).Index, PTreeData(Treeview1.Selected.Data).Text])) end;end.
我的意思是这样的: 节点有2种类型:机构和设备种类 type JgData=record jgm:string; jgmc:string; end; type SbData=record sbbh:integer; sbxh:string; sblx:string; sbxl:integer; end; type Pjg=^JgData; type PSb=^SbData;jg:pjg; sb:psb;a1=treeview1.items.add(nil,'a'); a1.data:=jg 或 a1.data:=sb;我用treeview1.selected来处理当前选中的节点,首先要知道这个节点的data是jg还是sb,该怎样判断?
Ttttt = ^tttt;
tttt =record
SSS : String;
III : integer;
end;...
//添加数据
procedure TForm1.Button3Click(Sender: TObject);
var
Test : Ttttt;
begin
New(Test);
Test.SSS:='ddddddddd';
Test.III:=12345;
TreeView1.Items.AddChildObject(nil,test.SSS,TObject(Test));end;//显示数据
procedure TForm1.Button4Click(Sender: TObject);
var
s : string;
begin
S:=Ttttt(TreeView1.Items[0].Data)^.SSS;
Showmessage(s);end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls;
type
PTreeData=^TTreeData;
TTreeData=record
Index:integer;
Text:string;
end;
type
TForm1 = class(TForm)
TreeView1: TTreeView;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
procedure TreeView1Click(Sender: TObject);
private
{ Private declarations }
TreeDataLst:TList;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
TreeDataLst:=TList.Create;
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
TreeDataLst.Clear;
TreeDataLst.Free;
end;procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
aData:PTreeData;
begin
i:=treeview1.Items.Count;
New(aData);
aData.Index:=i;
aData.Text:='NO.'+inttostr(i);
TreeDataLst.Add(aData);
Treeview1.Items.Add(nil,'Node:'+inttostr(i)).Data:=aData;
end;procedure TForm1.TreeView1Click(Sender: TObject);
begin
if Treeview1.Selected<>nil then
showmessage(format('DataIndex:%d,DataText:%s',
[PTreeData(Treeview1.Selected.Data).Index,
PTreeData(Treeview1.Selected.Data).Text]))
end;end.
节点有2种类型:机构和设备种类
type
JgData=record
jgm:string;
jgmc:string;
end;
type
SbData=record
sbbh:integer;
sbxh:string;
sblx:string;
sbxl:integer;
end;
type Pjg=^JgData;
type PSb=^SbData;jg:pjg;
sb:psb;a1=treeview1.items.add(nil,'a');
a1.data:=jg
或
a1.data:=sb;我用treeview1.selected来处理当前选中的节点,首先要知道这个节点的data是jg还是sb,该怎样判断?