對一個MIS系統(tǒng)來說,經(jīng)常需要向用戶提供有關(guān)系統(tǒng)狀況、操作指導、聯(lián)機幫助等信息,有時也需用戶確認某些操作。這些提示、幫助、詢問提供了用戶與系統(tǒng)之間的接口,使系統(tǒng)方便實用、提供良好的人機交互性。
下面以Foxpro2.5 for Windows為例,討論一下其實現(xiàn)途徑。
一、用wait window命令或者msgbox()函數(shù)
⑴用wait wind:例如①提示(不需用戶干預):wait wind "過程被中斷!" nowait②提示(需用戶按鍵繼續(xù)):wait wind "打印完畢!按任意鍵繼續(xù)..." ③詢問:wait wind "是否繼續(xù)(Y/N)?..." to if_conti 。
此命令用起來雖方便,但提示行限制在一行內(nèi)。
⑵用msgbox():調(diào)用此函數(shù)之前必須先用set library to 〈.fll〉命令裝入程序庫,語法為set library to foxtools.fll additive,程序結(jié)束時再以set library to 將該程序釋放。
調(diào)用語法:msgbox(〈expC1〉,〈expC2〉,〈expN〉)
〈expC1〉:對話框中的提示信息
〈expC2〉:對話框中的標題字串
〈expN〉:對話框中的形式代碼,共有:
①信息對話框:0~5;②警告對話框:16~21,32~37,48~53,64~69
返回值(對應(yīng)于對話框中各種按鈕):〈確定〉1〈取消〉2〈結(jié)束[A]〉3〈重試[R]〉4〈忽略[r]〉5〈是[Y]〉6〈否[N]〉7
例如:m_sure=msgbox("是否確定刪除?","刪除記錄",4)。
⑴⑵兩種方式調(diào)用方便,適于實現(xiàn)提示、詢問功能。也可用來實現(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)。
但是,當系統(tǒng)較大時,若仍用這種方式做幫助,則顯得凌亂,且不易修改維護。我們可將幫助信息存入數(shù)據(jù)庫以解決這個問題(如下)。
二、借鑒Foxpro for windows的DBF形式幫助(DBF_style Help)(Foxpro for windows另有一套Windows_style Help)。
⑴首先拷貝數(shù)據(jù)庫結(jié)構(gòu)(假設(shè)系統(tǒng)幫助數(shù)據(jù)庫為syshelp.dbf):
set help to
use foxhelp.dbf alia "foxhelp"
copy stru to syshelp
⑵用modi memo命令加入并顯示幫助。(見文末所附程序)
三、利用hc31.exe(Foxpro25 for windows,Borland C++均提供此文件)和WORD制作windows幫助文件*.hlp,再用set help to 〈*.hlp〉命令設(shè)置系統(tǒng)幫助文件。這種方式界面精美,但制作較麻煩。
附:幫助例程
調(diào)用方式:若希望由自己控制調(diào)用,則在各子程序開始時鍵入on key label F1 do help_proc with 〈子程序名〉,〈ExpC〉;若希望由系統(tǒng)自動控制調(diào)用,則在系統(tǒng)主程序中鍵入on key label F1 do help_proc with allt(sys(16)),〈ExpC〉。其中,〈ExpC〉表示幫助內(nèi)容是否可編輯,若可則為“edit”,不可則為“noedit”。這樣做的好處是可在系統(tǒng)運行時,一邊對照運行情況,一邊在任何需要幫助的某個界面上按F1加入或修改幫助(〈ExpC〉設(shè)為“edit”)。當幫助做好了,在系統(tǒng)提交用戶使用之前,再將〈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)機幫助";
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
下面以Foxpro2.5 for Windows為例,討論一下其實現(xiàn)途徑。
一、用wait window命令或者msgbox()函數(shù)
⑴用wait wind:例如①提示(不需用戶干預):wait wind "過程被中斷!" nowait②提示(需用戶按鍵繼續(xù)):wait wind "打印完畢!按任意鍵繼續(xù)..." ③詢問:wait wind "是否繼續(xù)(Y/N)?..." to if_conti 。
此命令用起來雖方便,但提示行限制在一行內(nèi)。
⑵用msgbox():調(diào)用此函數(shù)之前必須先用set library to 〈.fll〉命令裝入程序庫,語法為set library to foxtools.fll additive,程序結(jié)束時再以set library to 將該程序釋放。
調(diào)用語法:msgbox(〈expC1〉,〈expC2〉,〈expN〉)
〈expC1〉:對話框中的提示信息
〈expC2〉:對話框中的標題字串
〈expN〉:對話框中的形式代碼,共有:
①信息對話框:0~5;②警告對話框:16~21,32~37,48~53,64~69
返回值(對應(yīng)于對話框中各種按鈕):〈確定〉1〈取消〉2〈結(jié)束[A]〉3〈重試[R]〉4〈忽略[r]〉5〈是[Y]〉6〈否[N]〉7
例如:m_sure=msgbox("是否確定刪除?","刪除記錄",4)。
⑴⑵兩種方式調(diào)用方便,適于實現(xiàn)提示、詢問功能。也可用來實現(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)。
但是,當系統(tǒng)較大時,若仍用這種方式做幫助,則顯得凌亂,且不易修改維護。我們可將幫助信息存入數(shù)據(jù)庫以解決這個問題(如下)。
二、借鑒Foxpro for windows的DBF形式幫助(DBF_style Help)(Foxpro for windows另有一套Windows_style Help)。
⑴首先拷貝數(shù)據(jù)庫結(jié)構(gòu)(假設(shè)系統(tǒng)幫助數(shù)據(jù)庫為syshelp.dbf):
set help to
use foxhelp.dbf alia "foxhelp"
copy stru to syshelp
⑵用modi memo命令加入并顯示幫助。(見文末所附程序)
三、利用hc31.exe(Foxpro25 for windows,Borland C++均提供此文件)和WORD制作windows幫助文件*.hlp,再用set help to 〈*.hlp〉命令設(shè)置系統(tǒng)幫助文件。這種方式界面精美,但制作較麻煩。
附:幫助例程
調(diào)用方式:若希望由自己控制調(diào)用,則在各子程序開始時鍵入on key label F1 do help_proc with 〈子程序名〉,〈ExpC〉;若希望由系統(tǒng)自動控制調(diào)用,則在系統(tǒng)主程序中鍵入on key label F1 do help_proc with allt(sys(16)),〈ExpC〉。其中,〈ExpC〉表示幫助內(nèi)容是否可編輯,若可則為“edit”,不可則為“noedit”。這樣做的好處是可在系統(tǒng)運行時,一邊對照運行情況,一邊在任何需要幫助的某個界面上按F1加入或修改幫助(〈ExpC〉設(shè)為“edit”)。當幫助做好了,在系統(tǒng)提交用戶使用之前,再將〈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)機幫助";
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

