请问怎样到达treeview的某个位置(50分)

  • 主题发起人 主题发起人 NewLearner
  • 开始时间 开始时间
N

NewLearner

Unregistered / Unconfirmed
GUEST, unregistred user!
我想摸拟资源管理器的后退和前进,不知道怎样做,只好在treeview的onchange事件之前获取其selected.absoluteindex,
但是我要怎样才能到达这个位置,即变化前的selected.absoluteindex
 
OnChanging事件
 
设上一个节点的absoluteindex在PrevNode这个变量里,用这个
TreeView1.Selected:=TreeView1.Items[PrevNode];
可以选中上个节点
 
我在onclick里取一个值,再在onchangeing里取一个值,虽然可以后退和前进了,但是只能实现最近一次的,
请问怎样做到和IE或资源管理器里能后退和前进多次
 
做一个历史列表
 
to zhhc:
请问怎样做历史列表,我不大懂你的意思,谢谢
 
就是在用户每换一个节点的时候,都记录节点号,
放进一个数组中,然后前进后退的操作就对数组指针的操作


 
建一个动态数组,每切换一个节点,就在onchangeing事件中添加数组的长度,记录节点的
absoluteindex,这样就行了。
 
记录一下用户的动作。
像PhotoShop里面那个History一样行不行?
 
能否给出示例代码,谢谢
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls;

type
TForm1 = class(TForm)
TreeView1: TTreeView;
BackButton: TButton;
ForwardButton: TButton;
procedure TreeView1Changing(Sender: TObject; Node: TTreeNode;
var AllowChange: Boolean);
procedure FormCreate(Sender: TObject);
procedure BackButtonClick(Sender: TObject);
procedure ForwardButtonClick(Sender: TObject);
private
HistoryArray:array of integer;
HistoryCursor,HistoryMax:integer;
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.TreeView1Changing(Sender: TObject; Node: TTreeNode;
var AllowChange: Boolean);
begin
if (HistoryArray[HistoryCursor])=Node.AbsoluteIndex then Exit;
HistoryArray[HistoryCursor]:=TreeView1.Selected.AbsoluteIndex;
Inc(HistoryCursor);
HistoryArray[HistoryCursor]:=Node.AbsoluteIndex;
HistoryMax:=HistoryCursor;
ForwardButton.Enabled:=false;
BackButton.Enabled:=true;
if HistoryCursor>High(HistoryArray) then SetLength(HistoryArray,Length(HistoryArray)+10);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
SetLength(HistoryArray,10);
HistoryCursor:=0;
HistoryMax:=0;
end;

procedure TForm1.BackButtonClick(Sender: TObject);
begin
Dec(HistoryCursor);
TreeView1.Selected:=TreeView1.Items[HistoryArray[HistoryCursor]];
ForwardButton.Enabled:=true;
if (HistoryCursor=0) then BackButton.Enabled:=false;
end;

procedure TForm1.ForwardButtonClick(Sender: TObject);
begin
Inc(HistoryCursor);
TreeView1.Selected:=TreeView1.Items[HistoryArray[HistoryCursor]];
BackButton.Enabled:=true;
if HistoryCursor=HistoryMax then ForwardButton.Enabled:=false;
end;

end.
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
后退
顶部