首页 > 开发 > 综合 > 正文

开发手记(九)——在文件菜单中记录最近使用过的文件

2024-07-21 02:24:06
字体:
来源:转载
供稿:网友
word的“文件”菜单最下面列出了最近使用过的文件名及路径,文件名及路径会随着用户的使用不断地发生变化,这符合统计学中“最近使用”最大可能是“经常使用”的原则,方便了用户,提高了效率。它的实现方法有很多,我举一例,供大家参考。

      一、在工作目录下创建一个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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表