设有一表tree内有三字段(code,name,num),num为数值型,code,name为字符型。
procedure TForm1.FormActivate(Sender: TObject);
var
i,j:integer;
MyNode:array[0..6]of TTreeNode;
nodename:string;
begin
query1.Close ;
query1.SQL.Clear ;
query1.SQL.Add('select code,num,name from tree order by code');
query1.Open ;
query1.First ;
for i:=1 to query1.RecordCount do
begin
nodename:=query1.FieldValues ['name'];
if query1.FieldValues ['num']=1 then
begin
mynode[1]:=tw1.Items.Add(tw1.TopItem,nodename);
mynode[1].ImageIndex :=1;
end
else
begin
j:=query1.FieldValues ['num'];
mynode[j]:=tw1.Items.Addchild(mynode[j-1],nodename);
mynode[j].ImageIndex :=2;
end ;
query1.Next;
end ;end;
通过以上代码我可以将name根据级数分别加入treeview,但我怎么将code也加入treeview中呢?因为当我点击一个结点时,我不但要知道其显示内容我还想知道
其对应的编码。(这样我才能将treeview与数据表相关联)
望知情者赐教,举例说明不甚感激。
procedure TForm1.FormActivate(Sender: TObject);
var
i,j:integer;
MyNode:array[0..6]of TTreeNode;
nodename:string;
begin
query1.Close ;
query1.SQL.Clear ;
query1.SQL.Add('select code,num,name from tree order by code');
query1.Open ;
query1.First ;
for i:=1 to query1.RecordCount do
begin
nodename:=query1.FieldValues ['name'];
if query1.FieldValues ['num']=1 then
begin
mynode[1]:=tw1.Items.Add(tw1.TopItem,nodename);
mynode[1].ImageIndex :=1;
end
else
begin
j:=query1.FieldValues ['num'];
mynode[j]:=tw1.Items.Addchild(mynode[j-1],nodename);
mynode[j].ImageIndex :=2;
end ;
query1.Next;
end ;end;
通过以上代码我可以将name根据级数分别加入treeview,但我怎么将code也加入treeview中呢?因为当我点击一个结点时,我不但要知道其显示内容我还想知道
其对应的编码。(这样我才能将treeview与数据表相关联)
望知情者赐教,举例说明不甚感激。
解决方案 »
- FindComponent用法,用错了??
- Undeclared identifier: 'ActiveControl'
- 两个SQL哪个快
- runtime error 216, 很奇怪,请高手帮忙!
- [原创][Delphi编程专家门诊]征文示例程序
- 关于软件加密狗如何控制功能模块问题?请教各位高手如何解决。
- 请问:如何实现StringGrid中某一行数据背景色动态闪烁,以提示注意此行数据的变化?
- 菜鸟的问题:关于自动增加字段的动态创建问题!!!!!!!!!
- *.rm文件是什么文件,怎样打开?
- delphi中socket编程如何屏蔽onclienterror事件-十万火急
- 如何在DLL中编写子窗口并调用?
- 您好,请教 Socket 的原生含数 Send 怎么用? 谢谢您.
PMyRec = ^TMyRec;
TMyRec = record
FName: string;
LName: string;
end;Assuming these types are used, the following code adds a node to TreeView1 as the last sibling of a specified node. A TMyRec record is associated with the added item. The FName and LName fields are obtained from edit boxes Edit1 and Edit2. The Index parameter is obtained from edit box Edit3. The item is added only if the Index is a valid value.procedure TForm1.Button1Click(Sender: TObject);var
MyRecPtr: PMyRec;
TreeViewIndex: LongInt;
begin
New(MyRecPtr);
MyRecPtr^.FName := Edit1.Text;
MyRecPtr^.LName := Edit2.Text;
TreeViewIndex := StrToInt(Edit3.Text);
with TreeView1 do
begin
if Items.Count = 0 then
Items.AddObject(nil, 'Item' + IntToStr(TreeViewIndex), MyRecPtr)
else if (TreeViewIndex < Items.Count) and (TreeViewIndex >= 0) then Items.AddObject(Items[TreeViewIndex], 'Item' + IntToStr(TreeViewIndex), MyRecPtr);
end;
end;After an item containing a TMyRec record has been added, the following code retrieves the FName and LName values associated with the item and displays the values in a label.procedure TForm1.Button2Click(Sender: TObject);begin
Label1.Caption := PMyRec(TreeView1.Selected.Data)^.FName + ' ' +
PMyRec(TreeView1.Selected.Data)^.LName;
end;
访问时用String(node.data)转化即可.
var
i,j:integer;
MyNode:array[0..6]of TTreeNode;
nodename:string;
begin
query1.Close ;
query1.SQL.Clear ;
query1.SQL.Add('select code,num,name from tree order by code');
query1.Open ;
query1.First ;
for i:=1 to query1.RecordCount do
begin
nodename:=query1.FieldValues ['code']+':'+query1.FieldValues ['name'];
if query1.FieldValues ['num']=1 then
begin
mynode[1]:=tw1.Items.Add(tw1.TopItem,nodename);
mynode[1].ImageIndex :=1;
end
else
begin
j:=query1.FieldValues ['num'];
mynode[j]:=tw1.Items.Addchild(mynode[j-1],nodename);
mynode[j].ImageIndex :=2;
end ;
query1.Next;
end ;end;在使用时分析':'前面的就是你要的CODE;
TreeView 中每 个 node 中的属性 Data 就是用来存储接点附加数据的。
难道你这样显示给用户看:001汽车
002飞机
????????????????????????????????
to : menliwxj(有缘)
procedure TForm1.Button2Click(Sender: TObject);begin
Label1.Caption := PMyRec(TreeView1.Selected.Data)^.FName + ' ' +
PMyRec(TreeView1.Selected.Data)^.LName;
end;这里出错。Label1.Caption := myrecptr(tw1.Selected.date)^.FName ; 这句话运行不了。