談?wù)勗诨贔oxpro的MIS中實(shí)現(xiàn)提示、幫助與詢(xún)問(wèn)

字號(hào):

對(duì)一個(gè)MIS系統(tǒng)來(lái)說(shuō),經(jīng)常需要向用戶(hù)提供有關(guān)系統(tǒng)狀況、操作指導(dǎo)、聯(lián)機(jī)幫助等信息,有時(shí)也需用戶(hù)確認(rèn)某些操作。這些提示、幫助、詢(xún)問(wèn)提供了用戶(hù)與系統(tǒng)之間的接口,使系統(tǒng)方便實(shí)用、提供良好的人機(jī)交互性。
    下面以Foxpro2.5 for Windows為例,討論一下其實(shí)現(xiàn)途徑。
    一、用wait window命令或者msgbox()函數(shù)
    ⑴用wait wind:例如①提示(不需用戶(hù)干預(yù)):wait wind "過(guò)程被中斷!" nowait②提示(需用戶(hù)按鍵繼續(xù)):wait wind "打印完畢!按任意鍵繼續(xù)..." ③詢(xún)問(wèn):wait wind "是否繼續(xù)(Y/N)?..." to if_conti 。
    此命令用起來(lái)雖方便,但提示行限制在一行內(nèi)。
    ⑵用msgbox():調(diào)用此函數(shù)之前必須先用set library to 〈.fll〉命令裝入程序庫(kù),語(yǔ)法為set library to foxtools.fll additive,程序結(jié)束時(shí)再以set library to 將該程序釋放。
    調(diào)用語(yǔ)法:msgbox(〈expC1〉,〈expC2〉,〈expN〉)
    〈expC1〉:對(duì)話(huà)框中的提示信息
    〈expC2〉:對(duì)話(huà)框中的標(biāo)題字串
    〈expN〉:對(duì)話(huà)框中的形式代碼,共有:
    ①信息對(duì)話(huà)框:0~5;②警告對(duì)話(huà)框:16~21,32~37,48~53,64~69
    返回值(對(duì)應(yīng)于對(duì)話(huà)框中各種按鈕):〈確定〉1〈取消〉2〈結(jié)束[A]〉3〈重試[R]〉4〈忽略[r]〉5〈是[Y]〉6〈否[N]〉7
    例如:m_sure=msgbox("是否確定刪除?","刪除記錄",4)。
    ⑴⑵兩種方式調(diào)用方便,適于實(shí)現(xiàn)提示、詢(xún)問(wèn)功能。也可用來(lái)實(shí)現(xiàn)幫助功能,例如,on key label f1 wait wind "CTRL+A增加;CTRL+D刪除;CTRL+M修改;CTRL+S篩選;CTRL+P打印";on key label f1 do =msgbox("XX","YY",0)。
    但是,當(dāng)系統(tǒng)較大時(shí),若仍用這種方式做幫助,則顯得凌亂,且不易修改維護(hù)。我們可將幫助信息存入數(shù)據(jù)庫(kù)以解決這個(gè)問(wèn)題(如下)。
    二、借鑒Foxpro for windows的DBF形式幫助(DBF_style Help)(Foxpro for windows另有一套Windows_style Help)。
    ⑴首先拷貝數(shù)據(jù)庫(kù)結(jié)構(gòu)(假設(shè)系統(tǒng)幫助數(shù)據(jù)庫(kù)為syshelp.dbf):
    set help to
    use foxhelp.dbf alia "foxhelp"
    copy stru to syshelp
    ⑵用modi memo命令加入并顯示幫助。(見(jiàn)文末所附程序)
    三、利用hc31.exe(Foxpro25 for windows,Borland C++均提供此文件)和WORD制作windows幫助文件*.hlp,再用set help to 〈*.hlp〉命令設(shè)置系統(tǒng)幫助文件。這種方式界面精美,但制作較麻煩。
    附:幫助例程
    調(diào)用方式:若希望由自己控制調(diào)用,則在各子程序開(kāi)始時(shí)鍵入on key label F1 do help_proc with 〈子程序名〉,〈ExpC〉;若希望由系統(tǒng)自動(dòng)控制調(diào)用,則在系統(tǒng)主程序中鍵入on key label F1 do help_proc with allt(sys(16)),〈ExpC〉。其中,〈ExpC〉表示幫助內(nèi)容是否可編輯,若可則為“edit”,不可則為“noedit”。這樣做的好處是可在系統(tǒng)運(yùn)行時(shí),一邊對(duì)照運(yùn)行情況,一邊在任何需要幫助的某個(gè)界面上按F1加入或修改幫助(〈ExpC〉設(shè)為“edit”)。當(dāng)幫助做好了,在系統(tǒng)提交用戶(hù)使用之前,再將〈ExpC〉設(shè)為“noedit”。
    #DEFINE c_dlgface "Times New Roman"
    #DEFINE c_dlgsize 11.000
    #DEFINE c_dlgstyle "T"
    proc help_proc
    para helptopic,if_edit
    if allt(uppe(if_edit))<>"NOEDIT"
    if_edit=" "
    endif
    push key clear
    on key label ctrl+w
    on key label escape keyb "{CTRL+W}" &&按ESCAPE鍵退出幫助窗口,并保存修改
    cur_dbf=sele()
    if used("SYSHELP")
    sele syshelp
    else
    sele 0
    use syshelp
    endif
    loca for allt(uppe(IC))=allt(uppe(helptopic))
    if not found()
    appe blank
    repl topic with allt(helptopic)
    endif
    defi wind helpwin ;
    at int((srow() - ((15 *
    fontmetric(1, c_dlgface, c_dlgsize, c_dlgstyle )) / ;
    fontmetric(1, wfont(1,""), wfont(2,""), wfont(3,"")))) / 2), ;
    int((scol() - (( 64* ;
    fontmetric(6, c_dlgface, c_dlgsize, c_dlgstyle )) / ;
    fontmetric(6, wfont(1,""), wfont(2,""), wfont(3,"")))) / 2) ;
    size 15,64 ;
    font c_dlgface, c_dlgsize ;
    style c_dlgstyle ;
    close grow float;
    title "聯(lián)機(jī)幫助";
    system ;
    color rgb(0, 0, 0, 255, 255, 255)
    move window helpwin center
    modi memo details window helpwin &if_edit
    sele (cur_dbf)
    pop key