我使用delphi的ttreeview作为'选项'菜单。我将如何在运行时选择下一个节点,如上一个和下一个按钮?我尝试了getprev和getnext方法,但没有运气。
答案 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'。通过这样做,你可以有更好的控制......
希望这能为您提供另一个增强代码的想法