⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 类似IE的前进、后退、历史记录 功能 (VCL组件) delphi语言编写
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ToolWin, ComCtrls, ImgList, ActnList, ExtCtrls, UIStateNav,
  StdCtrls;

type
  TForm1 = class(TForm)
    ToolBar1: TToolBar;
    TreeView1: TTreeView;
    ListView1: TListView;
    Splitter1: TSplitter;
    ActionList1: TActionList;
    actForward: TAction;
    actBackward: TAction;
    actUpTree: TAction;
    ilToobar: TImageList;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    UIStateNav1: TUIStateNav;
    Button1: TButton;
    procedure UIStateNav1SaveUIState(Sender: TObject;
      aUIState: TPUIStateData);
    procedure UIStateNav1RetrieveUIState(Sender: TObject;
      aUIState: TPUIStateData);
    procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
    procedure actForwardExecute(Sender: TObject);
    procedure actBackwardExecute(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure actForwardUpdate(Sender: TObject);
    procedure actBackwardUpdate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.UIStateNav1SaveUIState(Sender: TObject;
  aUIState: TPUIStateData);
begin
  //自己选择能够唯一定位当前界面状态的数据,保存到TPUIStateData中
  //这里选择的方案是:保存树节点Node的level,Text,保存列表控件的Index.
  //实际使用中多会保存Node.Data和ListItem.Data
  if not assigned(treeview1.Selected) then
    exit;
  aUIState.TagString:=TreeView1.selected.Text;
  aUIState.NavigationID:=TreeView1.selected.Level;
  if assigned(listview1.Selected) then
    aUIState.DetailID:=listview1.Selected.Index;
end;

procedure TForm1.UIStateNav1RetrieveUIState(Sender: TObject;
  aUIState: TPUIStateData);
var
  i:integer;
begin
  //根据aUIState所保存的指,回到以前的状态。

  //恢复树的状态
  for i:=0 to TreeView1.Items.Count-1 do
  begin
    if (TreeView1.Items[i].Level=aUIState.NavigationID)
       and (TreeView1.Items[i].text=aUIState.TagString) then
    begin
      TreeView1.Items[i].Selected:=true;
      break;
    end;
  end;
  //恢复列表的状态
  if (aUIState.DetailID <= (ListView1.Items.Count-1))
    and (aUIState.DetailID >= 0 ) then
     ListView1.Items[aUIState.DetailID].Selected:=true;
end;

procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
  UIStateNav1.RecordUIState;
end;

procedure TForm1.actForwardExecute(Sender: TObject);
begin
  UIStateNav1.Forward;
end;

procedure TForm1.actBackwardExecute(Sender: TObject);
begin
  UIStateNav1.Backward;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  TreeView1.TopItem.Expand(true);
end;

procedure TForm1.actForwardUpdate(Sender: TObject);
begin
  (Sender as TAction).Enabled:= ( UIStateNav1.Index < UIStateNav1.HistoryCount-1);
end;

procedure TForm1.actBackwardUpdate(Sender: TObject);
begin
  (Sender as TAction).Enabled:= UIStateNav1.Index > 0;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  form2.showmodal;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -