使用TTreeview作为菜单

时间:2008-10-05 06:14:17

标签: delphi

我使用delphi的ttreeview作为'选项'菜单。我将如何在运行时选择下一个节点,如上一个和下一个按钮?我尝试了getprev和getnext方法,但没有运气。

3 个答案:

答案 0 :(得分:5)

这里有'下一步'行为。对于'上一页',我将为您留下锻炼: - )

procedure TForm8.btn1Click(Sender: TObject);  
var  
  crt: TTreeNode;

begin
  with tv1 do //this is our tree
  begin
    if Selected=nil then
      crt:=Items[0] //the first one
    else
      crt:=Selected.GetNext; //for previous you'll have 'GetPrev' 

    if crt<>nil then //can be 'nil' if we reached to the end
      Selected:=crt;
  end;
end;

HTH

答案 1 :(得分:1)

也许树项中有一些空间来存储指向正确页面的指针。

但是 - 如果你有时间 - 尝试探索Virtual Treeview - 这是Delphi最好的树视图组件。

答案 2 :(得分:0)

这是另一种方法:

type TfrmMain = class(TForm)
...
   public
      DLLHandle : THandle;
      function GetNodePath(node: TTreeNode; delimiter: string = '\') : String;

...

function TfrmMain.GetNodePath(node: TTreeNode; delimiter: string = '\') : String;
begin
   Result:='';
   while Assigned(node) do
    begin
      Result:=delimiter+node.Text+Result;
      node:=node.Parent;
   end;
   if Result <> '' then
      Delete(Result, 1, 1);
end;

...

以下是如何使用它:在您的treeview的click或doubleclick事件中执行此操作

...
var
   path : String;
begin
   path:=GetNodePath(yourTreeView.Selected);
   ShowMessage(path);
...

如果您有一个'Item 1'和一个名为'Item 1'的子项并点击Item 2,那么该消息应该是'Item 1 \ Item 2'。通过这样做,你可以有更好的控制......

希望这能为您提供另一个增强代码的想法