一、在工作目录下创建一个lastfile.ini文件,其中第一行为历史文件的总数,以下行是历史文件的全路径。当然您也可以使用数据表存储,那样编程时也许更方便一些。
lastfile.ini文件内容如:4
"d:/程序实例/slzj/slzj源代码/2004.11.18水利造价/示例.mdb"
"c:/windows/desktop/111/111.mdb"
"d:/程序实例/slzj/slzj源代码/2004.11.18水利造价/示例.mdb"
"d:/程序实例/slzj/slzj源代码/2004.11.3/2004.11.3/2004.11.3/2004.11.3/示例(审查).mdb"
二、在form_load中编写如下代码,达到在文件菜单中显示历史文件的效果
'**************显示以往打开的文件记录***************************
'对配置文件不存在的情况下,作出操作。
if dir(app.path & "/lastfile.ini") = "" then
open app.path & "/lastfile.ini" for output as #1
write #1, 0
close #1
end if
'打开lastfile.ini文件
open app.path & "/lastfile.ini" for input as #1
dim strlastfile2 as string
'获取历史文件的数目
line input #1, strlastfile2
imaxlastfile = int(strlastfile2)
dim i as integer
'添加历史文件到activebar菜单,先在activebar中预设4各command和一个分割线。并把他们的visible=false
for i = 1 to imaxlastfile
line input #1, strlastfile2
strlastfile(i - 1) = mid(strlastfile2, 2, len(strlastfile2) - 2)‘去引号
aabar.bands("menufile").tools.item(i + 10).caption = strlastfile(i - 1)
aabar.bands("menufile").tools.item(i + 10).visible = true
next
'关闭文件
close #1
'设置分隔条
if imaxlastfile <> 0 then
aabar.bands("menufile").tools.item(15).visible = true
end if
三、在form_unload中添加如下代码,将打开文件记录写入配置文件。
open app.path & "/lastfile.ini" for output as #1
dim i as integer
write #1, imaxlastfile‘写入历史文件总数
for i = 0 to imaxlastfile - 1
write #1, strlastfile(i)‘写入历史文件路径
next
close #1
四、在需要更新菜单中文件历史记录的地方使用下面函数(如:打开一个文件,新建并打开一个文件等)
private sub updatelastfile(byval strpath as string)
on error goto saveerr:
dim strduan as string
strduan = strpath
'判断要添加的文件是否时列表中的第一个文件
if strduan <> aabar.bands("menufile").tools.item(11).caption then
'将列表中的文件依次下移一位,空出第一位
dim i as integer
for i = 3 to 1 step -1
strlastfile(i) = strlastfile(i - 1)
aabar.bands("menufile").tools.item(11 + i).caption = aabar.bands("menufile").tools.item(10 + i).caption
next
'将头一位设置为当前操作的文件路径
strlastfile(0) = strduan
aabar.bands("menufile").tools.item(11).caption = strduan
'如果列表文件数小于最大文件数则加一
if imaxlastfile < 4 then
imaxlastfile = imaxlastfile + 1
end if
'设置新移动的列表项可见
aabar.bands("menufile").tools.item(imaxlastfile + 10).visible = true
end if
'如果列表不为空则下方的分隔条可见
if imaxlastfile <> 0 then
aabar.bands("menufile").tools.item(15).visible = true
else
aabar.bands("menufile").tools.item(15).visible = false
end if
exit sub
saveerr:
dbencrypt.saveerror "mdiform1-updatelastfile"
end sub
五、单击文件历史记录时调用如下函数。
private sub menulastfile(byval strname as string, index as integer)
on error goto saveerr:
'如果文件已不存在则提示
if dir(strname) = "" then
msgbox "文件不存在,请确认后再次打开!", vbokonly + vbinformation, "打开文件"
exit sub
end if
'设置当前打开文件为列表中的选择文件
strconnection = strname
'**************重新设置历史文件列表顺序*****************
dim i as integer
for i = index to 12 step –1 '把列表中选择文件的位置之上的文件依次下移
strlastfile(i - 11) = strlastfile(i - 12)
aabar.bands("menufile").tools.item(i).caption= aabar.bands("menufile").tools.item(i - 1).caption
next
strlastfile(0) = strname
'将选择的文件的放在列表中的首位
aabar.bands("menufile").tools.item(11).caption = strconnection
closewnd‘自定义过程,用于关闭系统中打开的除mdi窗口外的所有窗口
strconnection = strname
me.caption = "水利造价管理系统" & "-" & strconnection
showmenu
exit sub
saveerr:
dbencrypt.saveerror "mdiform1-menulastfile"
end sub
private sub closewnd()
on error goto saveerr:
dim i as integer
for i = forms.count - 1 to 1 step -1
if forms(i).name <> "frmdaohang1" and forms(i).name <> "frmdaohang2" and forms(i).name <> "frmtoolsearch" then
unload forms(i) '关闭到倒数第二个窗体
end if
next
exit sub
saveerr:
dbencrypt.saveerror "mdiform1-closewnd"
end sub
新闻热点
疑难解答