《多媒體軟件開發(fā)》課件第13章_第1頁
《多媒體軟件開發(fā)》課件第13章_第2頁
《多媒體軟件開發(fā)》課件第13章_第3頁
《多媒體軟件開發(fā)》課件第13章_第4頁
《多媒體軟件開發(fā)》課件第13章_第5頁
已閱讀5頁,還剩368頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第13章Authorware7.0典型實(shí)例介紹

13.1在Authorware中控制Windows系統(tǒng)

13.2增強(qiáng)應(yīng)用程序的窗口功能

13.3在Authorware中連接數(shù)據(jù)庫

13.4圖像展示技巧介紹

13.5解決與文本有關(guān)的幾個(gè)問題

13.6其它典型實(shí)例

13.1在Authorware中控制Windows系統(tǒng)

13.1.1在運(yùn)行中獲取并改變分辨率

1.程序設(shè)計(jì)程序開始運(yùn)行時(shí),首先探測當(dāng)前計(jì)算機(jī)所支持的各種分辨率,然后查找其中是否有我們所需要的分辨率。如果有,則直接切換其分辨率;如果沒有,則給出提示,然后退出程序。

2.核心技術(shù)

本例主要使用Authorware外部函數(shù)alTools.u32中的alChangeRes()函數(shù)和alGetDispSet()函數(shù)。

3.典型函數(shù)用法介紹

↘alChangeRes()函數(shù)

格式:alChangeRes(Width,Height,bitpp,ifreq)

說明:本函數(shù)用于動態(tài)改變屏幕分辨率和刷新率。

參數(shù):Width,寬度(以像素為單位);

Height,高度(以像素為單位);

bitpp,顏色位數(shù);

ifreq,屏幕刷新率(赫茲)。

↘alGetDispSet()函數(shù)

格式:result:=alGetDispSet()

說明:本函數(shù)用于獲得當(dāng)前所有可用屏幕分辨率及刷新率。其返回值的格式是用回車符分隔的多行字符串,每一行類似于“800x600x32x75”等。

4.具體制作

(1)創(chuàng)建如圖13-1所示的程序流程。

(2)在函數(shù)窗口中載入外部函數(shù)alTools.u32,并選擇其中的alChangeRes()和alGetDispSet()。圖13-1(3)在“初始化”計(jì)算圖標(biāo)中輸入以下代碼:

width:=ScreenWidth

height:=ScreenHeight

depth:=ScreenDepth

w0:="1024" --設(shè)置需要的分辨率寬度

h0:="768" --設(shè)置需要的分辨率高度

d0:="32" --設(shè)置需要的顏色深度

allSet:=alGetDispSet()

ifw0=width&h0=height&d0=depththen

GoTo(IconID@"主程序開始")

endif在“判斷分辨率”計(jì)算圖標(biāo)中輸入以下代碼:

lcount:=LineCount(allSet)

repeatwithl:=1tolcount

s:=GetLine(allSet,l)

p:=Find("x",s)

w:=Eval(SubStr(s,1,p-1))

s:=SubStr(s,p+1,50)

p:=Find("x",s)

h:=Eval(SubStr(s,1,p-1))

s:=SubStr(s,p+1,50)

p:=Find("x",s)

d:=Eval(SubStr(s,1,p-1))

ifw=w0&h=h0&d=d0then

alChangeRes(w,h,d)

goto(iconid@"主程序開始")

elseifl=lcountthen

goto(iconid@"錯(cuò)誤信息")

endif

endrepeat在“錯(cuò)誤信息”顯示圖標(biāo)中輸入以下提示信息:

對不起,你的屏幕顯示不支持{w0}x{h0}x{d0}的分辨率,演示無法繼續(xù)下去!按任意鍵退出程序。

在“恢復(fù)原有屏幕設(shè)置”計(jì)算圖標(biāo)中輸入以下代碼:

alChangeRes(width,height,depth)

最后的“主程序開始”計(jì)算圖標(biāo)里面沒有具體內(nèi)容,可直接給出一個(gè)注釋語句。13.1.2關(guān)閉/打開任務(wù)欄

1.程序設(shè)計(jì)

程序開始運(yùn)行時(shí),使用FindWindow()函數(shù)捕捉Windows任務(wù)欄,然后再用SetWindowPos()函數(shù)隱藏任務(wù)欄。程序退出時(shí),再用SetWindowPos()函數(shù)打開任務(wù)欄。

2.核心技術(shù)

本例主要使用Winapi.u32里的SetWindowPos()函數(shù)和FindWindow()函數(shù)來實(shí)現(xiàn)任務(wù)欄的關(guān)閉和打開。

3.典型函數(shù)用法介紹

↘FindWindow()函數(shù)

格式:HWND:=FindWindow(LPCSTRlpClassName,LPCSTRlpWindowName)

說明:尋找并返回指定窗口的句柄。

參數(shù):lpClassName,類名;

lpWindowName,窗口名。

↘SetWindowPos()函數(shù)

格式:BOOL:=SetWindowPos(HWNDhWnd,HWNDhWndInsertAfter,intX,intY,intcx,intcy,UINTuFlags)說明:設(shè)置指定窗口的位置。

參數(shù):hWnd,窗口句柄;

hWndInsertAfter,位于hWnd窗口前的窗口的句柄;

X,新位置的左邊界;

Y,新位置的右邊界;

cx,窗口新的寬度;

cy,窗口新的高度。

返回值:如果操作成功,則返回非0值;如果操作失敗,則返回0。4.具體制作

(1)創(chuàng)建如圖13-2所示的程序流程。圖13-2(2)在Authorware里載入函數(shù)Winapi.u32(該文件位于安裝好的Authorware文件夾內(nèi))。

(3)在“關(guān)閉任務(wù)欄”計(jì)算圖標(biāo)里輸入以下代碼:

winhd:=FindWindow("Shell_traywnd")

SetWindowPos(winhd,0,0,0,0,0,128)

msg:="已關(guān)閉任務(wù)欄\r單擊繼續(xù)"

在“打開任務(wù)欄”計(jì)算圖標(biāo)里輸入以下代碼:

SetWindowPos(winhd,0,0,0,0,0,64)

msg:="已打開任務(wù)欄\r單擊退出"

在“退出”計(jì)算圖標(biāo)里輸入以下代碼:

Quit()

(4)在“顯示提示信息”顯示圖標(biāo)里輸入以下內(nèi)容:

{msg}

請根據(jù)個(gè)人喜好設(shè)置文字的大小等相關(guān)屬性,然后再勾選該顯示圖標(biāo)屬性面板“選項(xiàng)”中的“更新顯示變量”。

(5)兩個(gè)等待圖標(biāo)的“事件”都設(shè)置成“單擊鼠標(biāo)”即可。13.1.3禁用Windows的某些系統(tǒng)功能

1.程序設(shè)計(jì)

在本例中,我們通過復(fù)選框的形式,分別可控制任務(wù)欄的打開和關(guān)閉、托盤圖標(biāo)的顯示和隱藏、“開始”按鈕的顯示和隱藏、Windows鍵的打開和關(guān)閉、鼠標(biāo)失效與否、關(guān)閉和恢復(fù)屏幕保護(hù)、強(qiáng)行關(guān)閉計(jì)算機(jī)和強(qiáng)行重啟計(jì)算機(jī)等。

2.核心技術(shù)

本例主要使用DisablePro控件來禁用或啟用Windows的某些系統(tǒng)功能;用MicrosoftForms2.0CheckBox控件來實(shí)現(xiàn)各功能開關(guān)的設(shè)置或取消設(shè)置;用budapi.u32外部函數(shù)中的baMsgBox()函數(shù)來彈出信息提示框。

3.典型函數(shù)用法介紹

↘DisablePro控件

屬性:該控件有9個(gè)屬性,如圖13-3所示。每個(gè)屬性的值都可設(shè)置為True或False,分別對應(yīng)該功能的啟用和關(guān)閉。這9個(gè)屬性分別是:

DisableDesktop,是否隱藏桌面;

DisableIconTray,是否隱藏托盤圖標(biāo);

DisableMouse,是否啟用鼠標(biāo);

DisableScreenSaver,是否啟用屏幕保護(hù)程序;

DisableStartButton,是否顯示W(wǎng)indows的“開始”按鈕;

DisableTaskBar,是否顯示任務(wù)欄;圖13-3DisableTaskSwitching,是否啟用Windows的開關(guān)鍵(包括Ctrl+Esc、Ctrl+Alt+Delete、Alt+Tab、Windows鍵);

DisableTrayClock,是否顯示任務(wù)欄時(shí)鐘圖標(biāo);

Enabled,DisablePro控件是否有效。

方法:ForceReboot,強(qiáng)行重新啟動計(jì)算機(jī);

ForceShutDown,強(qiáng)行關(guān)閉計(jì)算機(jī)。

↘MicrosoftForms2.0CheckBox控件

屬性:Caption,控件的標(biāo)題;

Value,返回值(控件如被選中,則返回“True”,否則返回“False”)。↘baMsgBox()函數(shù)

格式:Result:=baMsgBox(Message,Caption,

Buttons,Icon,DefButton)

說明:該函數(shù)可彈出一個(gè)信息窗口,顯示一些提示信息。

參數(shù):Message,需要在彈出窗口中顯示的字符串;

Caption,彈出窗口的標(biāo)題欄文字;

Icon,彈出窗口中圖標(biāo)的形式,可以是Stop(停止圖標(biāo))、Information(信息圖標(biāo))、Question(問號圖標(biāo))、Exclamation(感嘆號圖標(biāo))、NoIcon(無圖標(biāo));

Buttons,彈出窗口中按鈕的形式,可以是OK(確定)、OKCancel(確定、取消)、RetryCancel(重試、取消)、AbortRetryIgnore(放棄、重試、取消)、YesNo(是、否)、YesNoCancel(是、否、取消)。

返回值:該函數(shù)的返回值是用戶點(diǎn)擊的按鈕的名稱。4.具體制作。

(1)創(chuàng)建如圖13-4所示的程序流程。圖13-4其中,“DisablePro”和“顯示各功能復(fù)選框”里的所有圖標(biāo)都是用控件做的。為了在菜單【插入】/【控件】/【ActiveX...】中找到DisablePro控件,必須先注冊該控件。方法是在“控件注冊”計(jì)算圖標(biāo)中輸入以下代碼:

classID:="{9CD81531-6B69-11D1-83EE-00C0D1571EDC}"

ifActiveXControlQuery(classID)=0then

ActiveXControlRegister(FileLocation^"DisablePro.ocx")

endif

然后運(yùn)行此程序即完成注冊。完成注冊后,即可在SelectActiveXControl對話框中找到DisablePro.Disable控件。

我們用來做復(fù)選框的控件MicrosoftForms2.0CheckBox不需要單獨(dú)注冊,因?yàn)樗呀?jīng)在安裝OFFICE組件時(shí)被注冊好了。(2)在“設(shè)置屬性”計(jì)算圖標(biāo)中輸入以下代碼(以設(shè)置9個(gè)復(fù)選框的標(biāo)題):

SetSpriteProperty(@"關(guān)閉任務(wù)欄",#Caption,IconTitle@"關(guān)閉任務(wù)欄")

SetSpriteProperty(@"隱藏托盤圖標(biāo)",#Caption,IconTitle@"隱藏托盤圖標(biāo)")

SetSpriteProperty(@"隱藏開始按鈕",#Caption,IconTitle@"隱藏開始按鈕")

SetSpriteProperty(@"使Windows開關(guān)鍵失效",#Caption,IconTitle@"使Windows開關(guān)鍵失效")

SetSpriteProperty(@"使鼠標(biāo)失效",#Caption,IconTitle@"使鼠標(biāo)失效")SetSpriteProperty(@“強(qiáng)行關(guān)機(jī)”,#Caption,IconTitle@“強(qiáng)行關(guān)機(jī)”)

SetSpriteProperty(@“強(qiáng)行重新啟動計(jì)算機(jī)”,#Caption,IconTitle@“強(qiáng)行重新啟動計(jì)算機(jī)”)

SetSpriteProperty(@"關(guān)閉屏幕保護(hù)",#Caption,IconTitle@"關(guān)閉屏幕保護(hù)")

SetSpriteProperty(@"退出",#Caption,IconTitle@"退出")

message:=""當(dāng)然,也可直接到復(fù)選框控件的屬性里去設(shè)置Caption屬性。

在“*”按鍵所響應(yīng)的下面的計(jì)算圖標(biāo)里輸入以下代碼:

SetSpriteProperty(@"DisablePro",#DisableMouse,FALSE)

message:=""

在“-關(guān)閉任務(wù)欄”事件響應(yīng)的計(jì)算圖標(biāo)中輸入以下代碼:

SetSpriteProperty(@"DisablePro",#DisableTaskbar,GetSpriteProperty(@"關(guān)閉任務(wù)欄",#value))

在“-隱藏托盤圖標(biāo)”事件響應(yīng)的計(jì)算圖標(biāo)中輸入以下代碼:

SetSpriteProperty(@"DisablePro",#DisableIconTray,GetSpriteProperty(@"隱藏托盤圖標(biāo)",#value))在“-隱藏開始按鈕”事件響應(yīng)的計(jì)算圖標(biāo)中輸入以下代碼:

SetSpriteProperty(@"DisablePro",#DisableStartbutton,GetSpriteProperty(@"隱藏開始按鈕",#value))

在“-使Windows開關(guān)鍵失效”事件響應(yīng)的計(jì)算圖標(biāo)中輸入以下代碼:

SetSpriteProperty(@"DisablePro",#DisableTaskSwitching,GetSpriteProperty(@"使Windows開關(guān)鍵失效",#value))

在“-使鼠標(biāo)失效”事件響應(yīng)的計(jì)算圖標(biāo)中輸入以下代碼:

SetSpriteProperty(@"DisablePro",#DisableMouse,GetSpriteProperty(@"使鼠標(biāo)失效",#value))If~GetSpriteProperty(@“使鼠標(biāo)失效”,#value)then

message:=“”

else

message:=“按任意鍵恢復(fù)鼠標(biāo)”

endif

在“-強(qiáng)行關(guān)機(jī)”事件響應(yīng)的計(jì)算圖標(biāo)中輸入以下代碼:

Result:=baMsgBox("真的要關(guān)閉計(jì)算機(jī)嗎?","注意","YesNo","Information",2)

ifCapitalize(Result)="YES"then

CallSprite(@"DisablePro",#ForceShutDown)

else

SetSpriteProperty(@"強(qiáng)行關(guān)機(jī)",#value,FALSE)

endif在“-強(qiáng)行重新啟動計(jì)算機(jī)”事件響應(yīng)的計(jì)算圖標(biāo)中輸入以下代碼:

Result:=baMsgBox(“真的要重新啟動計(jì)算機(jī)嗎?”,“注意”,“YesNo”,“Information”,2)

ifCapitalize(Result)=“YES”then

CallSprite(@“DisablePro”,#ForceReboot)

else

SetSpriteProperty(@“強(qiáng)行重新啟動計(jì)算機(jī)”,#value,FALSE)

endif在“-關(guān)閉屏幕保護(hù)”事件響應(yīng)的計(jì)算圖標(biāo)中輸入以下代碼:

SetSpriteProperty(@“DisablePro”,#DisableScreenSaver,

GetSpriteProperty(@“關(guān)閉屏幕保護(hù)”,#value))

在“-退出”事件響應(yīng)的計(jì)算圖標(biāo)中輸入以下代碼:

Quit()

(3)雙擊交互響應(yīng)圖標(biāo),在演示窗口中輸入標(biāo)題及提示信息:

禁用Windows的某些系統(tǒng)功能

{message}

設(shè)置合適的文字大小及顏色,并設(shè)置居中對齊,再勾選交互圖標(biāo)屬性面板中的“顯示”標(biāo)簽下面的“更新顯示變量”。

(4)設(shè)置事件響應(yīng)的相關(guān)屬性。依次設(shè)置事件響應(yīng)的“發(fā)送者”和“事件”,如圖13-5所示。圖13-5

(5)發(fā)布程序后可試著運(yùn)行一下,其界面如圖13-6所示。值得注意的是,測試完畢后,需要把相關(guān)的選項(xiàng)重新打開,以免影響正常的Windows操作。圖13-6

13.1.4制作電子鬧鐘

1.程序設(shè)計(jì)

本例將制作一個(gè)電子鬧鐘,重點(diǎn)是使用系統(tǒng)變量FullTime。鬧鐘的時(shí)間設(shè)置有兩種方法:一是由用戶直接輸入HH:MM:SS格式的時(shí)間;二是由用戶直接輸入一個(gè)延時(shí)時(shí)間。若只輸入一個(gè)數(shù)字,則被認(rèn)作是秒數(shù);若輸入由冒號分隔的兩個(gè)數(shù)字,則被看成是分鐘數(shù)和秒鐘數(shù);若輸入的是由冒號隔開的三個(gè)數(shù)字,則被看成是小時(shí)數(shù)、分鐘數(shù)和秒鐘數(shù)。兩種方式下,時(shí)間到后都開始響鈴。

2.核心技術(shù)

本例使用MicrosoftForms2.0OptionButton控件來做單選按鈕,以控制是設(shè)置延時(shí)時(shí)間還是設(shè)置指定時(shí)間。在判斷時(shí)間上,本例使用了多個(gè)時(shí)間類的系統(tǒng)變量(如FullTime、Hour、Minute、Sec)和字符串處理函數(shù)(如String()、Substr()、Find()、RFind()等)。

3.具體制作

(1)創(chuàng)建如圖13-7所示的程序流程。

(2)“輸入鬧鐘時(shí)間”和“輸入延時(shí)時(shí)間”都是MicrosoftForms2.0OptionButton控件,分別設(shè)置其Caption屬性為“輸入鬧鐘時(shí)間”和“輸入延時(shí)時(shí)間”即可。

(3)“鬧鐘”圖標(biāo)是一個(gè)GIF動畫,當(dāng)響鈴時(shí)會出現(xiàn)一個(gè)跳動的鬧鐘?!奥曇簟眻D標(biāo)就是一段鬧鈴聲。

(4)“停止”按鈕用于結(jié)束程序,在其下掛計(jì)算圖標(biāo)中輸入“Quit()”即可。

(5)在“*”文本響應(yīng)的下掛計(jì)算圖標(biāo)中輸入以下代碼:圖13-7ifGetSpriteProperty(@"輸入鬧鐘時(shí)間",#value)=-1then

t0:=EntryText

else

k1:=Find(":",EntryText)

k2:=RFind(":",EntryText)

ifk1=0then

s:=EntryText

m:=0

h:=0

else

ifk1=k2then

m:=SubStr(EntryText,1,k1-1)

s:=SubStr(EntryText,k1+1,100)

h:=0

else

h:=SubStr(EntryText,1,k1-1)

m:=SubStr(EntryText,k1+1,k2-1)

s:=SubStr(EntryText,k2+1,100)

endif

endif

m:=Test(Minute+m<10,"0","")^String(Minute+m)

s:=Test(Sec+s<10,"0","")^String(Sec+s)

t0:=String(Hour+h)^":"^m^":"^s

endif

(6)條件響應(yīng)“t0<=FullTime”用于判定時(shí)間是否已到。其屬性面板設(shè)置如圖13-8所示。圖13-8

(7)在“定時(shí)”交互的演示窗口里插入鬧鐘的GIF動畫文件(通過【插入】/【圖像】菜單來完成),再勾選其“顯示”標(biāo)簽中的“更新顯示變量”選項(xiàng),最后在其中輸入以下內(nèi)容:

電子鬧鐘

當(dāng)前時(shí)間:{FullTime}

整個(gè)界面如圖13-9所示。圖13-9

(8)打包程序,然后選擇“輸入鬧鐘時(shí)間”或“輸入延時(shí)時(shí)間”,再輸入具體的時(shí)間,回車即可進(jìn)入鬧鐘計(jì)時(shí)。

在此程序的基礎(chǔ)上,大家可以動動腦筋,把程序修改一下。比如,在時(shí)間的輸入上加上更加復(fù)雜的判斷處理。例如,輸入“120”,程序會自動判斷出是延時(shí)2分鐘。又如,對用戶輸入的內(nèi)容進(jìn)行判斷,看是否包含除數(shù)字和冒號以外的其它內(nèi)容等。13.1.5為演示窗口添加最大化和最小化按鈕

Windows標(biāo)準(zhǔn)的應(yīng)用程序窗口都有最大化、最小化和關(guān)閉按鈕。而Authorware默認(rèn)的演示窗口是沒有最大化和最小化按鈕的。如果想要做一個(gè)標(biāo)準(zhǔn)的Windows應(yīng)用程序風(fēng)格的應(yīng)用程序,我們可通過其它方法加上最大化和最小化按鈕。

1.程序設(shè)計(jì)

本例主要使用Authorware外部Xtras文件(budapi.x32)中的baAddSysItems()函數(shù)來添加最大化和最小化按鈕。

2.核心技術(shù)

前面我們做了很多Authorware的外部函數(shù),也知道了使用外部函數(shù)的方法。而本例中所使用到的是一個(gè)外部Xtras文件(budapi.x32),需要事先將其復(fù)制到Authorware安裝文件夾下的Xtras文件夾里去,這樣,當(dāng)我們再次啟動Authorware時(shí),在“函數(shù)”面板的“分類”中就會多出一個(gè)“XtraBudAPI”類,其中有多個(gè)函數(shù)可直接使用。

3.典型函數(shù)用法介紹

↘baAddSysItems()函數(shù)

格式:baAddSysItems(WinHandle,SysMenu,MinBox,MaxBox)

說明:該函數(shù)用于給指定窗口添加系統(tǒng)菜單和最小化、最大化按鈕。

參數(shù):WinHandle,是Authorware中的一個(gè)系統(tǒng)變量,代表當(dāng)前演示窗口的句柄;

SysMenu,是否添加系統(tǒng)菜單,其值為True或False;

MinBox,是否添加最小化按鈕,其值為True或False;

MaxBox,是否添加最大化按鈕,其值為True或False。

4.具體制作

(1)制作如圖13-10所示的程序流程。圖13-10

(2)在“重新設(shè)置窗口大小”計(jì)算圖標(biāo)里輸入以下代碼:

ResizeWindow(360,200)

(3)在“提示信息”顯示圖標(biāo)里輸入以下內(nèi)容:

按任意鍵添加系統(tǒng)菜單和最大化及最小化按鈕...

(4)在“添加系統(tǒng)菜單及最大化和最小化按鈕”計(jì)算圖標(biāo)中輸入以下代碼:

baAddSysItems(WindowHandle,TRUE,TRUE,TRUE)

(5)打包運(yùn)行程序,效果如圖13-11和圖13-12所示。圖13-11

圖13-1213.2增強(qiáng)應(yīng)用程序的窗口功能

13.2.1使用文件系統(tǒng)控件顯示文件夾和文件

1.程序設(shè)計(jì)本例主要是使用WinCtrls.u32中的wcDisplayControl()函數(shù)來顯示驅(qū)動器列表框、文件夾列表框和文件列表框。當(dāng)改變驅(qū)動器列表框中的內(nèi)容時(shí),文件夾列表框和文件列表框中的內(nèi)容會同步更新。當(dāng)選擇具體的某個(gè)文件后,在界面中會顯示出當(dāng)前所選文件的完整路徑及文件名。

2.核心技術(shù)

本例主要是綜合應(yīng)用WinCtrls.u32中的wcDisplayControl()函數(shù)、wcGetPropertyValue()函數(shù)和wcSetPropertyValue()函數(shù)以及條件響應(yīng)來完成制作。

3.典型函數(shù)用法介紹

↘wcDisplayControl()函數(shù)

格式:Id:=wcDisplayControl(Left,Top,Width,Height,"ControlName","ChangeEventVarName")

說明:該函數(shù)用于在指定的位置上顯示一個(gè)指定的控件,并返回控件ID號以供后續(xù)操作。參數(shù):Left,控件的左上角位置(x坐標(biāo))。

Top,控件的左上角位置(y坐標(biāo))。

Width,控件的寬度。

Height,控件的高度。

ControlName,控件名,共有20種控件,分別是:

●Button,按鈕控件;

●CheckBox,復(fù)選框控件;

●CheckListBox,復(fù)選框列表控件;

●ColorCombo,顏色組合框控件;

●ComboBox,組合框控件;

●DriverCombo,驅(qū)動器組合框控件;

●Edit,單行文本編輯框控件;●FileListBox,文件列表框控件;

●FolderListBox,文件夾列表框控件;

●FontCombo,字體組合框控件;

●ListBox,列表框控件;

●MaskEdit,模板編輯框控件;

●Memo,多行文本框控件;

●PasswordEdit,密碼框控件;

●RadioButton,單選按鈕控件;

●SpinButton,數(shù)值調(diào)節(jié)按鈕控件;

●SpinEdit,數(shù)值調(diào)節(jié)按鈕文本框控件;

●TabSet,標(biāo)簽組控件;

●TrackBar,滑動條控件;

●TreeView,樹形控件。

ChangeEventVarName,控件返回的事件變量名稱,可在Authorware中通過判斷此變量的值來判斷用戶更改了哪些控件,以進(jìn)行相應(yīng)的操作。當(dāng)用戶對控件操作后,該變量的值會從False變成True。

返回值:返回控件的ID編號,此編號可用于對控件的后續(xù)操作。

↘wcGetPropertyValue()函數(shù)

格式:Value:=wcGetPropertyValue(Id,"PropertyName")

說明:該函數(shù)用于獲取指定控件的指定屬性的值。

參數(shù):Id,所操作控件的標(biāo)識號;

PropertyName,屬性名稱。返回值:指定控件的指定屬性的值。

↘wcSetPropertyValue()函數(shù)

格式:Result:=wcSetPropertyValue(Id,"PropertyName","Value")

說明:該函數(shù)用于設(shè)置指定控件的指定屬性的值。

參數(shù):Id,所操作控件的標(biāo)識號;

PropertyName,屬性名稱;

Value,設(shè)置的指定屬性的值。

返回值:操作成功,返回一個(gè)空字符串。

4.具體制作

(1)創(chuàng)建如圖13-13所示的程序流程。

(2)在“初始化”計(jì)算圖標(biāo)中輸入以下代碼:

DriveId:=wcDisplayControl(20,80,290,20,"DriveCombo","ChangeDrive")

FolderId:=wcDisplayControl(20,130,280,180,"FolderListBox","ChangeFolder")

FileId:=wcDisplayControl(330,80,280,230,"FileListBox","ChangeFile")

wcSetPropertyValue(DriveId,"FontName","TimesNewRoman")

wcSetPropertyValue(DriveId,"FontColor","Blue")

wcSetPropertyValue(DriveId,"FontSize",14)

wcSetPropertyValue(FolderId,"Drive",wcGetPropertyValue(DriveId,"Drive"))

wcSetPropertyValue(FolderId,"FontName","TimesNewRoman")

wcSetPropertyValue(FolderId,"FontColor","Black")

wcSetPropertyValue(FolderId,"FontSize",12)

wcSetPropertyValue(FileId,"FontName","TimesNewRoman")

wcSetPropertyValue(FileId,"FontColor","Green")

wcSetPropertyValue(FileId,"FontSize",12)

fullfilename:=""圖13-13在“ChangeDrive”條件響應(yīng)的下掛計(jì)算圖標(biāo)中輸入以下代碼:

wcSetPropertyValue(FolderId,"Drive",wcGetPropertyValue(DriveId,"Drive"))

在“ChangeFolder”條件響應(yīng)的下掛計(jì)算圖標(biāo)中輸入以下代碼:

wcSetPropertyValue(FileId,"Folder",wcGetPropertyValue(FolderId,"Folder"))

在“ChangeFile”條件響應(yīng)的下掛計(jì)算圖標(biāo)中輸入以下代碼:

fullfilename:=wcGetPropertyValue(FileId,"Folder")^"\\"^wcGetPropertyValue(FileId,"Text")

其中各條件語句的“自動”選項(xiàng)都設(shè)置為“當(dāng)由假為真”。

(3)雙擊交互圖標(biāo),在其演示窗口中輸入一些提示文字,如圖13-14所示。

(4)打包程序,運(yùn)行效果如圖13-15所示。圖13-14圖13-15

13.2.2制作增強(qiáng)型的下拉菜單

1.程序設(shè)計(jì)

在本例中,我們制作了兩個(gè)菜單,選擇某一具體菜單項(xiàng)后,會有提示信息顯示我們選擇了哪個(gè)具體的菜單項(xiàng)。同時(shí),專門設(shè)置了一個(gè)測試菜單項(xiàng),可對該菜單項(xiàng)進(jìn)行動態(tài)的修改等處理。

2.核心技術(shù)

本例的關(guān)鍵是使用到了兩個(gè)外部函數(shù)Edit.u32和Budmenu.u32。

3.典型函數(shù)用法介紹

↘EditboxErase()函數(shù)

格式:EditboxErase()

說明:該函數(shù)用于從演示窗口刪除文本編輯框。

↘EditboxGetText()函數(shù)

格式:cut_string:=EditboxGetText()

說明:該函數(shù)用于取得編輯框中的結(jié)果。

返回值:返回編輯框中的文本內(nèi)容。↘EditboxDisplay()函數(shù)

格式:result:=EditboxDisplay(string,x_coord,y_coord,height,width)

說明:該函數(shù)用于顯示一個(gè)帶滾動條的文本編輯框。

參數(shù):string,在文本編輯框中顯示的初始化字符;

x_coord,文本編輯框左上角坐標(biāo)(x坐標(biāo));

y_coord,文本編輯框左上角坐標(biāo)(y坐標(biāo));

height,文本編輯框的高度;

width,文本編輯框的寬度。↘mCreatePopupMenu()函數(shù)

格式:menu:=mCreatePopupMenu()

說明:該函數(shù)用于創(chuàng)建一個(gè)空的菜單。

返回值:如果創(chuàng)建成功,則返回一個(gè)菜單句柄(該句柄在其它函數(shù)里會多次用到);如果創(chuàng)建失敗,則返回0。↘mAppendMenu()函數(shù)

格式:ok:=mAppendMenu(Menu,Flags,IDNewItem,NewItem)

說明:該函數(shù)用于在指定菜單(Menu)后面添加一個(gè)新的菜單項(xiàng)。

參數(shù):Menu,由mCreatePopupMenu()函數(shù)返回的菜單句柄。

Flags,由數(shù)字構(gòu)成,其值決定了菜單項(xiàng)的一些相關(guān)屬性;

●0,普通的菜單項(xiàng);

●1,使菜單項(xiàng)變成灰色(禁用);

●2,禁用菜單項(xiàng),但菜單項(xiàng)不變成灰色;

●8,給菜單項(xiàng)添加選中標(biāo)志;

●16,創(chuàng)建級聯(lián)菜單(子菜單);

●2048,創(chuàng)建一個(gè)菜單項(xiàng)之間的分隔條。

IDNewItem,新創(chuàng)建的菜單項(xiàng)的ID。該ID由數(shù)字構(gòu)成,由用戶自己設(shè)定,每一個(gè)菜單項(xiàng)有一個(gè)惟一的ID標(biāo)記,絕對不能重復(fù)。

NewItem,新創(chuàng)建的菜單項(xiàng)的名稱。如果要在菜單項(xiàng)中添加快捷操作鍵,則可在指定快捷字母前加“&”。

↘mCheckMenuItem()函數(shù)

格式:ok:=mCheckMenuItem(Menu,IDEnableItem,Check)

說明:該函數(shù)用于設(shè)置指定菜單項(xiàng)前是否添加選中標(biāo)記。

參數(shù):Menu,指定菜單項(xiàng)的菜單句柄;

IDEnableItem,菜單項(xiàng)的ID標(biāo)記;

Check,是否添加選中標(biāo)記。若其值為0,則取消選中標(biāo)記;若其值為8,則添加選中標(biāo)記。返回值:如果操作成功,則返回True,否則返回False。

↘mDestroyMenu()函數(shù)

格式:ok:=mDestroyMenu(Menu)

說明:該函數(shù)用于刪除指定的菜單。

參數(shù):Menu,菜單句柄。

返回值:如果操作成功,則返回True,否則返回False。

↘mEnableMenuItem()函數(shù)

格式:ok:=mEnableMenuItem(Menu,IDEnableItem,Enable)

說明:該函數(shù)用于啟用、禁用或變灰指定的菜單項(xiàng)。參數(shù):Menu,菜單句柄;

IDEnableItem,菜單項(xiàng)的ID標(biāo)記;

Enable,此值為0,表示啟用該菜單項(xiàng);此值為1,表示禁用該菜單項(xiàng),同時(shí)菜單項(xiàng)變成灰色;此值為2,表示禁用該菜單項(xiàng),菜單項(xiàng)不變灰。

返回值:如果操作成功,則返回True,否則返回False。

↘mTrackPopupMenu()函數(shù)

格式:ok:=mTrackPopupMenu(Menu,Flags,X,Y,Reserved,WindowHandle,Rect)

說明:該函數(shù)用于顯示一個(gè)菜單。參數(shù):Menu,菜單句柄;

Flags,參見mCreatePopupMenu()函數(shù)中的Flags參數(shù),通常,此值為0;

X,菜單的x坐標(biāo);

Y,菜單的y坐標(biāo);

Reserved,此值固定為0;

WindowHandle,Authorware的系統(tǒng)變量,表示當(dāng)前演示窗口的句柄。

返回值:菜單正常顯示后,返回True,否則返回False。

↘mGetLastMenuID()函數(shù)

格式:ID:=mGetLastMenuID()

說明:該函數(shù)用于記錄用戶選擇了哪一個(gè)菜單項(xiàng)。

返回值:所選菜單項(xiàng)的ID。↘mGetMenustate()函數(shù)

格式:state:=mGetMenustate(Menu,IDItem,Flags)

說明:該函數(shù)用于檢查指定菜單項(xiàng)的狀態(tài),比如是否有選中標(biāo)記、是否啟用等。

參數(shù):Menu,菜單句柄;

IDItem,指定菜單項(xiàng)的ID;

Flags,參見mCreatePopupMenu()函數(shù)中的Flags參數(shù)。

返回值:根據(jù)Flags的值返回不同的值。

↘MenuHookOn()函數(shù)

格式:res:=MenuHookOn(WindowHandle)

說明:該函數(shù)用于安裝菜單掛鉤,也就是讓菜單和Authorware之間建立聯(lián)系。安裝好掛鉤后,該掛鉤會一直起作用,直到調(diào)用MenuHookOff()解除掛鉤為止。參數(shù):WindowHandle,演示窗口的句柄。

返回值:如果操作成功,則返回True,否則返回False。

↘MenuHookOff()函數(shù)

格式:MenuHookOff()

說明:該函數(shù)用于解除菜單掛鉤。

↘mModifyMenu()函數(shù)

格式:ok:=mModifyMenu(Menu,Position,Flags,IDNewItem,NewItem)

說明:該函數(shù)用于修改指定的菜單項(xiàng)。參數(shù):Menu,菜單句柄;

Position,指定菜單項(xiàng)的ID;

Flags,此值通常為0;

IDNewItem,新菜單項(xiàng)的ID值,如果只修改菜單項(xiàng)的名稱而不修改它的順序,則此值應(yīng)與Position的值相同;

NewItem,修改后的新的菜單名稱。

返回值:如果操作成功,則返回True,否則返回False。

4.具體制作

(1)創(chuàng)建如圖13-16所示的程序流程(其中還有一個(gè)“添加菜單項(xiàng)”按鈕沒有顯示出來),然后載入外部函數(shù)Budmenu.u32和Edit.u32。圖13-16

(2)在“創(chuàng)建菜單”計(jì)算圖標(biāo)中輸入以下代碼:

LastMenuID:=-1 --選中菜單號的初值

SelectMenu:=mCreatePopupMenu()--創(chuàng)建文件菜單

mAppendMenu(SelectMenu,0,10,"打開\tCtrlO") --添加文件菜單項(xiàng)

submenu:=mCreatePopupMenu() --創(chuàng)建子菜單

mAppendMenu(submenu,0,20,"保存為*.txt文件") --添加子菜單項(xiàng)

mAppendMenu(submenu,0,21,"保存為*.doc文件")

mAppendMenu(submenu,0,22,"保存為*.rtf文件")

mAppendMenu(submenu,0,23,"保存為*.html文件")

mAppendMenu(submenu,2048,0,"")--添加一個(gè)分隔線

mAppendMenu(submenu,0,24,"取消")--再添加一個(gè)子菜單項(xiàng)

mCheckMenuItem(submenu,20,8)--使20菜單項(xiàng)前加一個(gè)選中標(biāo)記

mEnableMenuItem(submenu,23,1)--禁用23菜單項(xiàng)

mAppendMenu(SelectMenu,16,submenu,"保存")--添加主菜單項(xiàng)并有級聯(lián)菜單

mAppendMenu(SelectMenu,0,11,"退出\tCtrlQ") --再添加一個(gè)主菜單項(xiàng)

EditMenu:=mCreatePopupMenu() --創(chuàng)建編輯菜單

ok:=mAppendMenu(EditMenu,0,30,"復(fù)制\tCtrlC") --添加四個(gè)菜單項(xiàng)

ok:=mAppendMenu(EditMenu,0,31,"剪切")

ok:=mAppendMenu(EditMenu,0,32,"粘貼")

ok:=mAppendMenu(EditMenu,0,33,"測試項(xiàng)")

appendMenuID:=37 --下一個(gè)添加菜單的號

mMenuHookOn(WindowHandle)--安裝與Authorware的連接掛鉤

Message:=""

(3)在“顯示信息”顯示圖標(biāo)里輸入以下內(nèi)容:

{message}

并勾上“更新顯示變量”選項(xiàng)。

(4)在“激活菜單1”計(jì)算圖標(biāo)里輸入以下代碼:

mTrackPopupMenu(SelectMenu,0,ResponseLeft@"文件"+WindowLeft,ResponseTop@"文件"+ResponseHeight@"文件"+WindowTop,0,WindowHandle,0)

在“返回選項(xiàng)1”計(jì)算圖標(biāo)里輸入以下代碼:

LastMenuID:=mGetLastMenuID()

Checked@"文件":=FALSE

(5)在“激活菜單2”計(jì)算圖標(biāo)里輸入以下代碼:

mTrackPopupMenu(EditMenu,0,ResponseLeft@"編輯"+WindowLeft,ResponseTop@"編輯"+ResponseHeight@"編輯"+WindowTop,0,WindowHandle,0)

在“返回選項(xiàng)2”計(jì)算圖標(biāo)里輸入以下代碼:

LastMenuID:=mGetLastMenuID()

Checked@"編輯":=FALSE

(6)在“打開編輯框1”計(jì)算圖標(biāo)里輸入以下代碼:

Message:=""

newText:=EditboxDisplay("請?jiān)谶@里編輯新的菜單項(xiàng)然后單擊按鈕",200,50,50,100)

在“打開編輯框2”計(jì)算圖標(biāo)里輸入以下代碼:

Message:=""

newText:=EditboxDisplay("請?jiān)谶@里編輯新的菜單項(xiàng)然后單擊按鈕",200,50,50,100)

在“確定”計(jì)算圖標(biāo)里輸入以下代碼:

newText:=EditboxGetText() --取得編輯結(jié)果

mModifyMenu(EditMenu,33,0,33,newText) --改變菜單項(xiàng)

EditboxErase() --刪除編輯框

LastMenuID:=-1

Message:="此項(xiàng)菜單已經(jīng)改變,請查看"

在“添加菜單項(xiàng)”計(jì)算圖標(biāo)中輸入以下代碼:

newText:=EditboxGetText() --取得編輯結(jié)果

mAppendMenu(EditMenu,0,appendMenuID,newText) --添加一個(gè)新的菜單項(xiàng)

appendMenuID:=appendMenuID+1 --下一個(gè)添加菜單的ID號

EditboxErase() --刪除編輯框

LastMenuID:=-1

Message:="已經(jīng)增加了一個(gè)新的菜單項(xiàng),請查看"

“擦除按鈕1”和“擦除按鈕2”分別擦除兩個(gè)“提交”按鈕。

(7)在“改變選中標(biāo)記”計(jì)算圖標(biāo)里輸入以下代碼:

mCheckMenuItem(EditMenu,33,8-mGetMenuState(EditMenu,33,8))

Message:="試驗(yàn)菜單項(xiàng)的選中標(biāo)記已經(jīng)改變,請查看"

在“改變可用性”計(jì)算圖標(biāo)里輸入以下代碼:

mEnableMenuItem(EditMenu,33,9-mGetMenuState(EditMenu,33,9))

Message:="試驗(yàn)菜單項(xiàng)的可用性已經(jīng)改變,請查看"

在“LastMenuID>-1”條件響應(yīng)的下掛計(jì)算圖標(biāo)里輸入以下代碼:

ifLastMenuID=10thenMessage:="打開"

ifLastMenuID=20thenMessage:="保存為*.txt文件"

ifLastMenuID=21thenMessage:="保存為*.doc文件"

ifLastMenuID=22thenMessage:="保存為*.rtf文件"

ifLastMenuID=23thenMessage:="保存為*.html文件"

ifLastMenuID=24thenMessage:="取消"

ifLastMenuID=30thenMessage:="復(fù)制"

ifLastMenuID=31thenMessage:="剪切"

ifLastMenuID=32thenMessage:="粘貼"

ifLastMenuID=33thenMessage:="測試項(xiàng)"

Message:="你選擇的菜單項(xiàng)是:"^MessageifLastMenuID=0thenMessage:="沒有選擇菜單"

ifLastMenuID=11then --退出

mMenuHookOff() --解除與Authorware的掛鉤

mDestroyMenu(SelectMenu) --刪除各個(gè)菜單

mDestroyMenu(EditMenu)

mDestroyMenu(submenu)

Quit()

endif

LastMenuID:=-1其中條件響應(yīng)的“自動”選項(xiàng)選擇“由假變真”。

在“CtrlC”計(jì)算圖標(biāo)中輸入以下代碼:

LastMenuID:=30

在“CtrlO”計(jì)算圖標(biāo)中輸入以下代碼:

LastMenuID:=10

在“CtrlQ”計(jì)算圖標(biāo)中輸入以下代碼:

LastMenuID:=11

(8)由于Budmenu.u32不能直接建立菜單條,因此,本例中是使用兩個(gè)按鈕(文件、編輯)來模擬菜單條,故需要使用按鈕編輯器把兩個(gè)按鈕的邊框去除,并將其調(diào)整至合適的位置。整個(gè)程序運(yùn)行時(shí)的效果如圖13-17所示。圖13-17

13.2.3動態(tài)改變按鈕名稱

在程序運(yùn)行過程中,有的按鈕需要動態(tài)改變其名稱。比如,制作一個(gè)媒體播放器,我們可把“播放”和“暫?!弊龀梢粋€(gè)按鈕:當(dāng)點(diǎn)擊“播放”后,該按鈕變成“暫?!保辉冱c(diǎn)擊一次“暫?!保摪粹o又會變成“播放”。

1.程序設(shè)計(jì)

通過系統(tǒng)函數(shù)設(shè)置按鈕名稱,從而達(dá)到動態(tài)改變按鈕名稱的目的。

2.核心技術(shù)

使用系統(tǒng)函數(shù)SetIconTitle()來改變按鈕名稱。

3.典型函數(shù)用法介紹

↘SetIconTitle()函數(shù)

格式:SetIconTitle(IconID@“IconTitle”,“title”)

說明:該函數(shù)用于設(shè)置指定圖標(biāo)的標(biāo)題名稱。

參數(shù):IconTitle,指定圖標(biāo)的標(biāo)題;

title,設(shè)置新的標(biāo)題名稱。

↘IconID()函數(shù)

格式:number:=IconID(“IconTitle”)

說明:該函數(shù)用于返回指定圖標(biāo)獨(dú)一無二的數(shù)字標(biāo)識。

參數(shù):IconTitle,指定圖標(biāo)的標(biāo)題。

↘IconTitle()函數(shù)

格式:string:=IconTitle(IconID)

說明:該函數(shù)用于返回用戶在IconID中指定的圖標(biāo)標(biāo)題。

4.具體制作

(1)制作如圖13-18所示的程序流程。

(2)在“初始化”計(jì)算圖標(biāo)中輸入以下代碼:

ResizeWindow(210,152)

id1:=IconID@"暫停"

id2:=IconID@"開倉"

在“暫停”按鈕的下掛計(jì)算圖標(biāo)中輸入以下代碼:

ifIconTitle="暫停"then

SetIconTitle(id1,"播放")

else

SetIconTitle(id1,"暫停")

endif在“開倉”按鈕的下掛計(jì)算圖標(biāo)中輸入以下代碼:

ifIconTitle="關(guān)倉"then

SetIconTitle(id2,"開倉")

else

SetIconTitle(id2,"關(guān)倉")

endif

在“退出”按鈕的下掛計(jì)算圖標(biāo)中輸入以下代碼:

SetIconTitle(id1,"暫停")

SetIconTitle(id2,"開倉")

Quit()

(3)雙擊交互圖標(biāo),在其演示窗口中輸入文字,如圖13-19所示。

(4)至此,用戶可以試著運(yùn)行一下程序,體驗(yàn)一下動態(tài)改變按鈕名稱的感覺。

實(shí)際上,要動態(tài)改變按鈕名稱,也可使兩個(gè)按鈕重合(當(dāng)然也可多個(gè)),然后在某一時(shí)刻只顯示某一個(gè)按鈕,其它按鈕隱藏。

13.2.4調(diào)用Windows的常用對話框

1.程序設(shè)計(jì)

本例通過控件的調(diào)用,實(shí)現(xiàn)打開顏色對話框、字體對話框、打印對話框、文件對話框和保存文件對話框的功能,并能同時(shí)返回每個(gè)對話框的結(jié)果。

2.核心技術(shù)

本例各個(gè)功能得以實(shí)現(xiàn),依賴于MicrosoftCommonDialogControl控件。

3.控件典型屬性介紹

CancelError,是否顯示出錯(cuò)信息,其值為True或False。

DefaultExt,缺省的擴(kuò)展名。

DialogTitle,對話框標(biāo)題。

FileName,選擇的文件名。

Filter,列表框的過濾器設(shè)置。

FilterInder,過濾器索引值。

Flags,標(biāo)志位。該標(biāo)志位在不同對話框里,同樣的值有不同的含義。具體內(nèi)容可參見表13-1。表13-1不同對話框里Flags的含義FontBold,選擇的字體是否是粗體,其值為True或False。

FontItalic,選擇的字體是否是斜體,其值為True或False。

FontName,選擇的字體的名稱。

FontSize,選擇的字體的大小。

FontStrikeThru,選擇的字體是否有刪除線,其值為True或False。

FontUnderLine,選擇的字體是否有下劃線,其值為True或False。

FromPage,返回“打印”對話框里的開始頁數(shù)值。

HelpCommand,返回或設(shè)置需要的聯(lián)機(jī)幫助的類型。

HelpContext,返回或設(shè)置聯(lián)機(jī)幫助的內(nèi)容。

HelpFile,聯(lián)機(jī)幫助文件的路徑及名稱。

HelpKey,返回或設(shè)置聯(lián)機(jī)幫助的主題關(guān)鍵字。

InitDir,初始文件夾。

Max,字體的最大值。

MaxFilenSize,文件名的最大字節(jié)數(shù)。

Min,字體的最小值。

Orientation,打印方向。值為1表示縱向,值為2表示橫向。

PrinterDefault,是否使用缺省打印機(jī),其值為True或False。

ToPage,返回“打印”對話框里的結(jié)束頁數(shù)值。

4.控件典型方法介紹

ShowColor,顯示“顏色”對話框。

ShowFont,顯示“字體”對話框。在顯示該對話框之前,必須先設(shè)置前面所介紹的Flags屬性,否則系統(tǒng)會出錯(cuò)。

ShowOpen,顯示“打開”對話框。

ShowPrinter,顯示“打印”對話框。

ShowSave,顯示“另存為”對話框。

5.具體制作

(1)制作如圖13-20所示的程序流程(其中還有一個(gè)“退出”按鈕沒有顯示出來)。圖13-20

(2)在“初值”計(jì)算圖標(biāo)里輸入以下代碼:

ResizeWindow(350,250)

d:=""

(3)在“顯示信息”顯示圖標(biāo)里輸入以下代碼:

1666161

(4)在“顏色對話框”按鈕的下掛計(jì)算圖標(biāo)里輸入以下代碼:

a:=SetSpriteProperty(@"通用對話框控件",#flags,2)

a:=CallSprite(@"通用對話框控件",#showcolor)

a:=GetSpriteProperty(@"通用對話框控件",#color)

b:=SetFileProperty(#awbackgroundcolor,a)

d:="背景色="^String(a)

(5)在“字體對話框”按鈕的下掛計(jì)算圖標(biāo)里輸入以下代碼:

a:=SetSpriteProperty(@"通用對話框控件",#Flags,3)

a:=CallSprite(@"通用對話框控件",#ShowFont)

d1:=GetSpriteProperty(@"通用對話框控件",#FontName)

d2:=GetSpriteProperty(@"通用對話框控件",#FontSize)

d3:=Test(GetSpriteProperty(@"通用對話框控件",#FontBold),"粗體","")

d4:=Test(GetSpriteProperty(@"通用對話框控件",#FontItalic),"斜體","")

d5:=Test(GetSpriteProperty(@"通用對話框控件",#FontUnderLine),"下劃線","")

d:="字體="^d1^"\r字號="^d2^"\r"^d3^d4^d5

(6)在“打開文件對話框”按鈕的下掛計(jì)算圖標(biāo)里輸入以下代碼:

a:=CallSprite(@"通用對話框控件",#ShowOpen)

d:="打開文件="^GetSpriteProperty(@"通用對話框控件",#FileName)

(7)在“保存文件對話框”按鈕的下掛計(jì)算圖標(biāo)里輸入以下代碼:

a:=SetSpriteProperty(@"通用對話框控件",#Flags,2)

a:=CallSprite(@"通用對話框控件",#ShowSave)

d:="保存文件="^GetSpriteProperty(@"通用對話框控件",#FileName)

(8)在“打印對話框”按鈕的下掛計(jì)算圖標(biāo)里輸入以下代碼:

a:=CallSprite(@"通用對話框控件",#ShowPrinter)

d:="調(diào)用了打印文件對話框,正常返回"(9)打包程序,運(yùn)行結(jié)果如圖13-21所示。圖13-2113.3在Authorware中連接數(shù)據(jù)庫

13.3.1ODBC驅(qū)動程序連接數(shù)據(jù)庫簡介

ODBC(OpenDataBaseConnectivity)接口,中文名為“開放式數(shù)據(jù)庫鏈接”接口,是Microsoft公司推出的實(shí)現(xiàn)異種數(shù)據(jù)庫互連的標(biāo)準(zhǔn)。它對用戶屏蔽了不同數(shù)據(jù)庫之間的差異,從而可以使用戶利用標(biāo)準(zhǔn)的SQL語言對各種不同的數(shù)據(jù)庫進(jìn)行操作。

Authorware提供了一個(gè)支持標(biāo)準(zhǔn)ODBC的數(shù)據(jù)庫接口,利用標(biāo)準(zhǔn)的SQL語言可以對Access、FoxPro、Dbase、Oracle、Sybase、SQLServer等數(shù)據(jù)庫進(jìn)行添加、刪除和查詢等基本操作。

在Authorware中操作數(shù)據(jù)庫,必須具備以下條件:

(1)所連接數(shù)據(jù)庫的ODBC驅(qū)動程序。

(2)ODBC用戶代碼文件,即需要調(diào)用外部的UCD函數(shù)(ODBC.U32)。

(3)數(shù)據(jù)庫源文件,一般由數(shù)據(jù)庫軟件創(chuàng)建,也可以利用Authorware新建和添加記錄。

ODBC驅(qū)動程序是一種動態(tài)的鏈接庫,它含有可與各種不同數(shù)據(jù)庫相鏈接的函數(shù),每種數(shù)據(jù)庫類型都有單獨(dú)的驅(qū)動程序。在WindowsXP操作系統(tǒng)中,我們可在“控制面板”里打開“管理工具”,然后打開“數(shù)據(jù)源(ODBC)”即可查看系統(tǒng)中的ODBC驅(qū)動程序,如圖13-22所示。圖13-22用戶使用的每個(gè)ODBC驅(qū)動程序都必須包含以下基本功能:

(1)提供數(shù)據(jù)庫的鏈接;

(2)準(zhǔn)備和執(zhí)行SQL語句;

(3)處理事務(wù)的功能;

(4)返回結(jié)果集;

(5)通知應(yīng)用程序的錯(cuò)誤信息。

13.3.2配置ODBC數(shù)據(jù)源

在Authorware中正常使用數(shù)據(jù)庫需要兩個(gè)最基本的條件:

(1)系統(tǒng)中的ODBC驅(qū)動程序必須可用,其作用是用來連接一種數(shù)據(jù)庫;

(2)必須建立ODBC數(shù)據(jù)源,其作用是用來連接一種特殊類型的數(shù)據(jù)庫的ODBC驅(qū)動程序配置。

配置ODBC的方法一般有兩種,即手動配置和自動配置。

1.手動配置

利用Windows的控制面板中的ODBC管理應(yīng)用程序可實(shí)現(xiàn)手動配置ODBC數(shù)據(jù)源。

(1)在WindowsXP中,我們可以打開“控制面板”,再打開其中的“管理工具”,在其中找到“數(shù)據(jù)源(ODBC)”圖標(biāo),雙擊它打開ODBC數(shù)據(jù)源管理器,然后切換至“系統(tǒng)DSN”標(biāo)簽,如圖13-23所示。圖13-23

(2)單擊“添加”按鈕,打開“創(chuàng)建新數(shù)據(jù)源”對話框,如圖13-24所示。在其中選擇自己需要的驅(qū)動程序,在此,我們選擇“MicrosoftAccessDriver(*.mdb)”,表示將連接一個(gè)Access數(shù)據(jù)庫。單擊“完成”按鈕進(jìn)入下一個(gè)環(huán)節(jié)。圖13-24

(3)在“ODBCMicrosoftAccess安裝”對話框中,輸入一個(gè)“數(shù)據(jù)源名”,在此輸入“student”,“說明”可以不輸入。在下面的“數(shù)據(jù)庫”里,單擊“選擇”按鈕,選擇自己的Access數(shù)據(jù)庫,如圖13-25所示。如果該數(shù)據(jù)庫包含有密碼等相關(guān)信息,則可單擊“高級”按鈕,然后在其中設(shè)置密碼等,如圖13-26所示。圖13-25圖13-26

(4)設(shè)置好數(shù)據(jù)源后,在“系統(tǒng)DSN”中即可看到我們設(shè)置的系統(tǒng)數(shù)據(jù)源,如圖13-27所示。圖13-27

2.自動配置

在Authorware中調(diào)用tMsSDSN.U32函數(shù)可實(shí)現(xiàn)ODBC數(shù)據(jù)源的自動配置。

自動配置數(shù)據(jù)源的優(yōu)點(diǎn)在于,通過Authorware編制的程序,打包成可執(zhí)行文件后,可以在其他計(jì)算機(jī)上直接運(yùn)行,而不需要手動去配置數(shù)據(jù)源。實(shí)現(xiàn)自動配置數(shù)據(jù)源的關(guān)鍵是使用外部函數(shù)tMsDSN.u32中的tMsDBRegister()函數(shù)。

(外部函數(shù)tMsDSN.u32

格式:result:=tMsDBRegister(dbReqType,dbType,dbList)說明:該函數(shù)用于配置數(shù)據(jù)源的驅(qū)動程序、指定數(shù)據(jù)源的名稱、指定源數(shù)據(jù)庫。

參數(shù):dbReqTpye,指定對數(shù)據(jù)源的操作方式:

●dbReqTpye=1,表示增加ODBC數(shù)據(jù)源;

●dbReqTpye=2,表示配置(編輯)ODBC數(shù)據(jù)源;

●dbReqTpye=3,表示刪除ODBC數(shù)據(jù)源;

●dbReqTpye=4,表示增加ODBC系統(tǒng)數(shù)據(jù)源;

●dbReqTpye=5,表示配置(編輯)ODBC系統(tǒng)數(shù)據(jù)源;

●dbReqTpye=6,表示刪除ODBC系統(tǒng)數(shù)據(jù)源;

●dbReqTpye=7,表示刪除默認(rèn)的ODBC數(shù)據(jù)源。

dbType,指定ODBC數(shù)據(jù)源需要使用的驅(qū)動程序。比如:

dbType:="MicrosoftAccessDriver(*.mdb)"

dbList,指定ODBC數(shù)據(jù)源的名稱、對數(shù)據(jù)源的描述以及與之相關(guān)聯(lián)的數(shù)據(jù)庫文件,注意它們之間必須用分號隔開,下面舉例說明:

dbList:="DSN=CollegeDSN;" --CollegeDSN為數(shù)據(jù)源的名稱

dbList:=dbList^"Description=MyODBCDSN;"--對CollegeDSN數(shù)據(jù)源進(jìn)行描述

dbList:=dbList^"FIL=MSAccess;" --說明數(shù)據(jù)的類型為Access數(shù)據(jù)庫

dbList:=dbList^"DBQ="^FileLocation^"test.mdb;" --相關(guān)聯(lián)的數(shù)據(jù)庫是test.mdb

返回值:如果數(shù)據(jù)源創(chuàng)建成功,則返回值是1,否則返回0。

自動創(chuàng)建好數(shù)據(jù)源后,用戶還可以通過控制面板中的“數(shù)據(jù)源(ODBC)”來查看創(chuàng)建的結(jié)果。13.3.3SQL語句使

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論