如何实现菜单中的最近打开文档列表(50分)

  • 主题发起人 主题发起人 cemer815
  • 开始时间 开始时间
C

cemer815

Unregistered / Unconfirmed
GUEST, unregistred user!
现在想在菜单中做最近打开文档列表,象word这样是,是把打开过的全部记录下来,然后只显示几个,还是象这样,在ini中只有5个,到第6个就把第1个 替换掉,到第7个就把第2个 替换掉。。。怎么实现比较好,给点源代码看看,谢谢!
 
原理你都知道了啊,替换很简单了啊,就是后面的前移,第一个删除,然后第五个为最近打开的一个,这样不就可以了吗?
 
我实现不了,所以。。
 
用ini记录也可以;用注册表记录也可以;
总之并不是到第6个就把第1个 替换掉;而是每打开一个就到列表你去找是否有相同的;有相同的先删除掉以前的那个,再添加到列表;
 
可以考虑用数据库表。用两个字段一个记录日期一个记录文件名。通过用日期排序来实现。
方法是笨了点。但实现起来不难。
 
具体怎么实现的!给点代码
我是初学者
 
个人认为尽量脱离数据库比较好;因为只有涉及到数据库就相对比较慢;
 
我写了两个控件可以用;一个是用于自带的菜单,一个是用于dxbar菜单;不知道你想要哪一个?
 
to : 清新空气,
我就是想你这样的
教下怎么实现吧!
 
我说出用数据库表估计有人要给我砖头了。哈哈!这方法建议在最后考虑。用注册表或INI是不错的选择。普通的文本文件记录也是能实现的。
 
一个是用于自带的菜单吧
 
你的邮箱!我发给你!
 
cemer815@yahoo.com.cn
qq: 57798768
谢谢啊
 
发了吗!
 
一旦打开文件,就动态创建以文件路径命名的菜单项
 
告诉你一个简单的:
定义一个全局变量:var ts:TStringList;
主窗口Create时:
ts:=TStringList.Create;
ts.LoadFromFile(你自己定义一个文件名,什么类型无所谓.用来存放打开过的文件);
打开名为fn的文件时:
i:=ts.indexof(fn);
if i=-1 then ts.insert(0,fn) else ts.move(i,0);//这句的意思是,如果ts里有fn,则将其移至第一行,如果没有,则插入到第一行.
如果你想限定打开数量,比如是5,那么,这时再加上:if ts.count>5 then ts.delete(ts.count-1);//删除最后一个.
程序关闭时,在窗口的destroy事件里写:
ts.savetofile(你自己定义一个文件名);
ts.free.
以上方法写起来最方便简捷.我以前也是用ini文件记录.
 
我看到了,但是我还是不怎么会用你的!
可以发个实例看看吧!
 
你那保存菜单的时候会有&的,怎么解决呢!
 
后退
顶部