可以建一个指针。
如
type PMyData = ^TMyData;
TMyData = Record
ss : String;
ii : Integer;
end;
var pp: PMyData;
使用的时候:
Node: TTreeNode;Node := TreeView1.Items.Add(ParentNode,'asdasdasd');
New(pp);
pp^.ss := 'asdasd';
pp^.ii := 123;
Node.Data := pp;使用的时候PMyData(TreeView1.Selected.Data)^.ss;
如
type PMyData = ^TMyData;
TMyData = Record
ss : String;
ii : Integer;
end;
var pp: PMyData;
使用的时候:
Node: TTreeNode;Node := TreeView1.Items.Add(ParentNode,'asdasdasd');
New(pp);
pp^.ss := 'asdasd';
pp^.ii := 123;
Node.Data := pp;使用的时候PMyData(TreeView1.Selected.Data)^.ss;
解决方案 »
- delphi中串口传输可以实现收到一个字节执行一次中断事件吗?
- 这个警告怎么消除:Return value of function 'Initial' might be undefined
- 关于VCLSkin对QuickReport的影响问题
- 还是SUM问题,关于DBGrid显示
- 监控QQ,怎么不行啊,请教!
- 求实现一个围棋小功能的实现代码
- 请推荐好的delphi入门书籍
- 哪里有Install Shield下载?
- cannot make a visible window modal
- How to use ISAPI!!!
- 求救呀~~只剩一个问题解决不了,想完成任务回家呀。。各位请进,小问题一个
- 有delphi5,6的反编译工具吗?
在加入节点的时候,不用一般的add的方法,用带object的add方法
要记住object是指针
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls, Buttons;type
PDataNode = ^TDataNode;
TDataNode = record
ID: Integer;
Name: string;
price: Currency;
dt: TDateTime;
end;type
TfrmDataTree = class(TForm)
TreeView1: TTreeView;
GroupBox1: TGroupBox;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
DateTimePicker1: TDateTimePicker;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
procedure AddDataNode(tv: TTreeView; pData: PDataNode);
procedure DelDataNode(tv: TTreeView);
public
{ Public declarations }
end;var
frmDataTree: TfrmDataTree;implementation{$R *.DFM}{ TfrmDataTree }procedure TfrmDataTree.AddDataNode(tv: TTreeView; pData: PDataNode);
var
tn: TTreeNode;
begin
if pData = nil then Exit;
tn := nil; if tv.Items.Count = 0 then
tn := tv.Items.AddObject(nil, 'Item[\]', pData)
else if tv.Selected <> nil then
tn := tv.Items.AddObject(tv.Selected, 'Item' + IntToStr(tv.Selected.AbsoluteIndex), pData); if tn <> nil then tn.Selected := True;
end;procedure TfrmDataTree.DelDataNode(tv: TTreeView);
begin
if tv.Selected = nil then Exit; // 释放数据
Dispose(PDataNode(tv.Selected.Data)); // 删除结点
tv.Selected.Delete;
end;procedure TfrmDataTree.BitBtn1Click(Sender: TObject);
var
pData: PDataNode;
begin
new(pData);
pData.ID := StrToIntDef(Edit1.Text, 0);
pData.Name := Edit2.Text;
try
pData.price := StrToCurr(Edit3.Text);
except
pData.price := 0.00;
end;
pData.dt := DateTimePicker1.DateTime; AddDataNode(TreeView1, pData);
end;procedure TfrmDataTree.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
if TreeView1.Selected <> nil then begin
Edit1.Text := IntToStr(PDataNode(TreeView1.Selected.Data)^.ID);
Edit2.Text := PDataNode(TreeView1.Selected.Data)^.Name;
Edit3.Text := CurrToStr(PDataNode(TreeView1.Selected.Data)^.price);
DateTimePicker1.DateTime := PDataNode(TreeView1.Selected.Data)^.dt;
end;
end;procedure TfrmDataTree.BitBtn2Click(Sender: TObject);
begin
DelDataNode(TreeView1);
end;end.