(100分相送)xml和treeview的菜问题!! ( 积分: 100 )

  • 主题发起人 主题发起人 dropme
  • 开始时间 开始时间
D

dropme

Unregistered / Unconfirmed
GUEST, unregistred user!
xml文件如下
<?xml version=&quot;1.0&quot;?>
<Folder name=&quot;SoftWare&quot;
>
<Folder Name='A'>
<Item Name='BookA'></Item>
</Folder>
<Folder Name='B'>
<Item Name='BookB'></Item>
</Folder>
</Folder>
用TXMLDocument控件把它解析成下面这个树,并用TTreeView显示出来:
SoftWare
|
----A
|
----B
现在我想在treeveiw中点击节点A的时候,可以在一个Memo中显示BookA,而点击B的时候显示BookB(就是要取得相应节点下的item), 请问应该在TreeView的onclick事件里怎么写?
 
xml文件如下
<?xml version=&quot;1.0&quot;?>
<Folder name=&quot;SoftWare&quot;
>
<Folder Name='A'>
<Item Name='BookA'></Item>
</Folder>
<Folder Name='B'>
<Item Name='BookB'></Item>
</Folder>
</Folder>
用TXMLDocument控件把它解析成下面这个树,并用TTreeView显示出来:
SoftWare
|
----A
|
----B
现在我想在treeveiw中点击节点A的时候,可以在一个Memo中显示BookA,而点击B的时候显示BookB(就是要取得相应节点下的item), 请问应该在TreeView的onclick事件里怎么写?
 
你已经会解析XML转成TreeView 了。
1.在TreeView 的OnClick事件中可以得到A(B)这本节点的名字。
2.写一个取子节点的函数,GetChildNode(parent:String;);通过这个函数,来得到子节点的Item.
3.你的节点应该不会有重复的吧!
 
楼主的意思是不是想在树型里面只放Foader而不放Item,那你可以用树型控件的那个Data树型
在OnClick里面
if not Assigned( Treeview1.Selected) then
Exit;
if not Assigned( Treeview1.Selected.Data) then
Exit;
Memo1.Lines.Add(PNodeInfo(TreeView1.Selected.Data)^.Item);

-----------------------下面是Delphi带的例子
he following code defines a record type of TMyRec and a record pointer type of PMyRec.
type
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 TreeView1do
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;
 

Similar threads

D
回复
0
查看
778
DelphiTeacher的专栏
D
D
回复
0
查看
818
DelphiTeacher的专栏
D
D
回复
0
查看
837
DelphiTeacher的专栏
D
D
回复
0
查看
843
DelphiTeacher的专栏
D
后退
顶部