一个管理最近使用过的文件的类

原创 2004年07月30日 11:11:00

一个管理最近使用过的文件的类:

{-----------------------------------------------------------------------------
 Unit Name: RcntFileMgr
 Author:   

 Purpose:   Manager the recent file list.
 History:   2004.06.08    create
-----------------------------------------------------------------------------}


unit RcntFileMgr;

interface

uses
  Classes, SysUtils, Inifiles;

type
  TRecentFileChangedEvent = procedure(Sender:TObject) of object;
 
  TRecentFileManager=class(TObject)
  private
    FRecentFileList:TStringList;
    FMaxRecentCount:Integer;
    FOnRecentFileChanged:TRecentFileChangedEvent;
  protected
    function GetRecentFileCount():Integer;
    function GetRecentFile(Index:Integer):String;
    procedure LoadFromConfigFile();
    procedure SaveToConfigFile();
  public
    constructor Create();
    destructor Destroy();override;
    procedure AddRecentFile(const AFileName:String);
    property RecentFileCount:Integer read GetRecentFileCount;
    property RecentFile[Index:Integer]:String read GetRecentFile;
    property OnRecentFileChanged:TRecentFileChangedEvent read FOnRecentFileChanged write FOnRecentFileChanged;
  end;
 
implementation

{ TRecentFileManager }

function TRecentFileManager.GetRecentFileCount():Integer;
begin
  Result:=FRecentFileList.Count;
end;

function TRecentFileManager.GetRecentFile(Index:Integer):String;
begin
  Result:=FRecentFileList.Strings[Index];
end;

procedure TRecentFileManager.LoadFromConfigFile();
var
  Ini:TInifile;
  KeyList:TStringList;
  I:Integer;
begin
  Ini:=TInifile.Create(ExtractFilePath(ParamStr(0))+'config.ini');
  KeyList:=TStringList.Create();
  try
    Ini.ReadSection('RecentFile',KeyList);
    for I:=0 to KeyList.Count-1 do begin
      FRecentFileList.Add(Ini.ReadString('RecentFile',KeyList.Strings[I],''));
    end;
    if Assigned(FOnRecentFileChanged) then begin
      FOnRecentFileChanged(self);
    end;
  finally
    Ini.Free;
    KeyList.Free;
  end;
end;

procedure TRecentFileManager.SaveToConfigFile();
var
  Ini:TInifile;
  I:Integer;
begin
  Ini:=TInifile.Create(ExtractFilePath(ParamStr(0))+'config.ini');
  try
    Ini.EraseSection('RecentFile');
    for I:=0 to FRecentFileList.Count-1 do begin
      Ini.WriteString('RecentFile','Recent'+IntToStr(I),FRecentFileList.Strings[I]);
    end;
  finally
    Ini.Free;
  end;
end;

constructor TRecentFileManager.Create();
begin
  inherited Create();
  FRecentFileList:=TStringList.Create();
  FMaxRecentCount:=5;
  LoadFromConfigFile();
end;

destructor TRecentFileManager.Destroy();
begin
  if Assigned(FRecentFileList) then begin
    try
      SaveToConfigFile();
    except
      //ignore any exceptions
    end;
    FreeAndNil(FRecentFileList);
  end;
  inherited Destroy();
end;

procedure TRecentFileManager.AddRecentFile(const AFileName:String);
var
  RecentIndex:Integer;
begin
  RecentIndex:=FRecentFileList.IndexOf(AFileName);
  if RecentIndex>=0 then begin
    FRecentFileList.Delete(RecentIndex);
  end;
  FRecentFileList.Insert(0,AFileName);
  while FRecentFileList.Count>FMaxRecentCount do begin
    FRecentFileList.Delete(FRecentFileList.Count-1);
  end;
  if Assigned(FOnRecentFileChanged) then begin
    FOnRecentFileChanged(self);
  end;
end;

end.

清除VS2015 最近使用过的文件

删除最近打开的文件 开始-->运行,输入 regedit 回车,打开注册表编辑器,定位到 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\1...
  • lchyz89
  • lchyz89
  • 2016年06月24日 10:53
  • 285

word2013无法显示最近使用的文档的解决方法

这两天放假回家,在家里电脑用word 2013写论文,写了一些后电脑关机。第二天发现打开最近文档不能使用,提示 word2013无法显示最近使用的文档。 如下图所示 后面发现其他人也遇到类似问...
  • w497629433
  • w497629433
  • 2013年07月27日 21:54
  • 2725

Java普通类中获得Spring管理的类

由于有时会写一些工具类或者单例类,这些类中可能使用到Spring管理的一些类,比如dao,service等,这时就要获得这些spring管理的类,我们写测试类中main函数中一般是用:  Appl...
  • zhongyangjian
  • zhongyangjian
  • 2016年01月26日 15:56
  • 1695

android获取最近使用应用的信息

ActivityManager mActivityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVI...
  • yangxi_001
  • yangxi_001
  • 2013年06月20日 10:58
  • 1952

最近使用文件类 CMruFile

VC++的MFC对最近文件进行了包装,它使用户无需编写任何代码就可实现最近文件菜单。但这种方法也有缺陷:   ①用户程序必须使用文档、视图结构,只能利用它提供的文档打开和保存文件,如果你使用自己...
  • shuilan0066
  • shuilan0066
  • 2012年03月09日 13:35
  • 1097

Ubuntu 14.04 LTS 删除最近使用文件 Ubuntu Recent File & Folder

进入系统设置,选择 Security & Pra
  • soxfmr
  • soxfmr
  • 2014年07月08日 10:41
  • 1336

MAC OS X 最近打开文件(Security-scoped bookmark)

加载最近浏览记录
  • HeroGuo_JP
  • HeroGuo_JP
  • 2017年02月06日 16:24
  • 1552

最近打开文件列表

afx_msg BOOL OnOpenRecentFile(UINT nID); 消息映射: ON_UPDATE_COMMAND_UI(ID_FILE_MRU_FILE1, OnUpd...
  • u011584748
  • u011584748
  • 2014年05月08日 14:30
  • 1047

VC文档"最近使用的文档"列表LoadStdProfileSettings

在文档/视图中,打开菜单旁边的”最近使用列表“可以列出最近使用的文档名称,这对于加快程序的处理文档速度。在VC2008SP1中的效果如下:我们只要在应用程序类的InitInstance函数中调用Loa...
  • akof1314
  • akof1314
  • 2010年05月25日 18:53
  • 3088

1.清除最近使用过的文档记录

 1.清除最近使用过的文档记录  以WindowsXP为例,右键点击“开始”按钮,选择“属性”,在弹出的设置任务栏和开始菜单属性对话窗中点“自定义”按钮,在“自定义开始菜单”对话框中的“高级”标签下点...
  • woxiangfang
  • woxiangfang
  • 2009年03月27日 17:21
  • 11145
收藏助手
不良信息举报
您举报文章:一个管理最近使用过的文件的类
举报原因:
原因补充:

(最多只允许输入30个字)