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

原创 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.

清除office2010历史记录及打开文件的位置记录

清除office2010历史记录及打开文件的位置记录 清除office2010历史记录及打开文件的位置记录 office2010文档记录,存放2个地方 1.office软件本身记录(打开of...
  • csnewdn
  • csnewdn
  • 2017年02月03日 16:42
  • 976

android--调用系统相机拍照,显示并保存照片 - zhengwen

http://www.tuicool.com/articles/nYFZnu 最近自己琢磨开发一个个人应用,主要功能是管理个人的私密文件、照片、视频文件(你懂的),每个人的手机里都有一些不想...
  • luofeixiongsix
  • luofeixiongsix
  • 2015年12月17日 21:20
  • 495

设计模式系列(一)单例模式

一、简单介绍 单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。 《设计模式》书中对单例模式动机的介绍 对于系统中的某些类...
  • robertcpp
  • robertcpp
  • 2016年06月05日 11:00
  • 2066

快速找到最近修改的文件!

在本文中,我们将解释两个简单的命令行小技巧,它可以帮你只列出所有的今天的文件。Linux 用户在命令行上遇到的常见问题之一是定位具有特定名称的文件,如果你知道确定的文件名则可能会容易得多。...
  • u014743697
  • u014743697
  • 2017年01月21日 20:08
  • 417

linux找出最近或者今天被修改的文件

0x01 列出某个目录下今天创建或者修改的文件 cd /home/ym 1 显示目录home/ym下,今天创建或者修改的文件 ls  -al --time-style=+%D | grep 'd...
  • qq_29277155
  • qq_29277155
  • 2017年01月08日 21:23
  • 1907

Java中的文件和目录管理(上)---File类

Java.io.File类中的File类,从JDK1.0开始就支持. 后面相继推出的java.nio.file及java.nio.file.Files类等对file类进行了优化和改进。但目前仍有一些程...
  • yangxiaojuan2015
  • yangxiaojuan2015
  • 2016年05月22日 15:05
  • 2092

记录一些最近用过的编码转换

记录一些之前遇到的编码解码方法,当速查表。
  • watfe
  • watfe
  • 2017年03月25日 11:08
  • 445

自学iOS开发系列----OC(文件管理类、文件句柄类)

1.NSString和NSData互相转化 NSString * str = @"hello世界"; NSData * data = [str dataUsingEncoding:NSUTF8S...
  • xiaozhuanddapang
  • xiaozhuanddapang
  • 2016年11月30日 12:58
  • 1090

商品货架管理

尚品货架可以看成一个栈,栈顶商品的生产日期最早,栈底商品的生产日期最近。 上货时,需要倒货架,以保证生产日期较新的商品在较靠里的位置...
  • sinat_40306833
  • sinat_40306833
  • 2017年11月29日 12:28
  • 232

(1.5.2.10)寻找最近点对

题目:平面中有若干个点,寻找距离最近的两个点。 分析: 方法1:两两点比较,寻找最近的两个点对,复杂度O(N^2),优点代码简单不容易出错 方法2:观察两两比较的方法,发现有很多无用的比较,对于...
  • fei20121106
  • fei20121106
  • 2015年04月21日 13:11
  • 786
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个管理最近使用过的文件的类
举报原因:
原因补充:

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