版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第13章Authorware7.0典型實(shí)例介紹
13.1在Authorware中控制Windows系統(tǒng)
13.2增強(qiáng)應(yīng)用程序的窗口功能
13.3在Authorware中連接數(shù)據(jù)庫(kù)
13.4圖像展示技巧介紹
13.5解決與文本有關(guān)的幾個(gè)問(wèn)題
13.6其它典型實(shí)例
13.1在Authorware中控制Windows系統(tǒng)
13.1.1在運(yùn)行中獲取并改變分辨率
1.程序設(shè)計(jì)程序開(kāi)始運(yùn)行時(shí),首先探測(cè)當(dāng)前計(jì)算機(jī)所支持的各種分辨率,然后查找其中是否有我們所需要的分辨率。如果有,則直接切換其分辨率;如果沒(méi)有,則給出提示,然后退出程序。
2.核心技術(shù)
本例主要使用Authorware外部函數(shù)alTools.u32中的alChangeRes()函數(shù)和alGetDispSet()函數(shù)。
3.典型函數(shù)用法介紹
↘alChangeRes()函數(shù)
格式:alChangeRes(Width,Height,bitpp,ifreq)
說(shuō)明:本函數(shù)用于動(dòng)態(tài)改變屏幕分辨率和刷新率。
參數(shù):Width,寬度(以像素為單位);
Height,高度(以像素為單位);
bitpp,顏色位數(shù);
ifreq,屏幕刷新率(赫茲)。
↘alGetDispSet()函數(shù)
格式:result:=alGetDispSet()
說(shuō)明:本函數(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@"主程序開(kāi)始")
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@"主程序開(kāi)始")
elseifl=lcountthen
goto(iconid@"錯(cuò)誤信息")
endif
endrepeat在“錯(cuò)誤信息”顯示圖標(biāo)中輸入以下提示信息:
對(duì)不起,你的屏幕顯示不支持{w0}x{h0}x{d0}的分辨率,演示無(wú)法繼續(xù)下去!按任意鍵退出程序。
在“恢復(fù)原有屏幕設(shè)置”計(jì)算圖標(biāo)中輸入以下代碼:
alChangeRes(width,height,depth)
最后的“主程序開(kāi)始”計(jì)算圖標(biāo)里面沒(méi)有具體內(nèi)容,可直接給出一個(gè)注釋語(yǔ)句。13.1.2關(guān)閉/打開(kāi)任務(wù)欄
1.程序設(shè)計(jì)
程序開(kāi)始運(yùn)行時(shí),使用FindWindow()函數(shù)捕捉Windows任務(wù)欄,然后再用SetWindowPos()函數(shù)隱藏任務(wù)欄。程序退出時(shí),再用SetWindowPos()函數(shù)打開(kāi)任務(wù)欄。
2.核心技術(shù)
本例主要使用Winapi.u32里的SetWindowPos()函數(shù)和FindWindow()函數(shù)來(lái)實(shí)現(xiàn)任務(wù)欄的關(guān)閉和打開(kāi)。
3.典型函數(shù)用法介紹
↘FindWindow()函數(shù)
格式:HWND:=FindWindow(LPCSTRlpClassName,LPCSTRlpWindowName)
說(shuō)明:尋找并返回指定窗口的句柄。
參數(shù):lpClassName,類名;
lpWindowName,窗口名。
↘SetWindowPos()函數(shù)
格式:BOOL:=SetWindowPos(HWNDhWnd,HWNDhWndInsertAfter,intX,intY,intcx,intcy,UINTuFlags)說(shuō)明:設(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ù)"
在“打開(kāi)任務(wù)欄”計(jì)算圖標(biāo)里輸入以下代碼:
SetWindowPos(winhd,0,0,0,0,0,64)
msg:="已打開(kāi)任務(wù)欄\r單擊退出"
在“退出”計(jì)算圖標(biāo)里輸入以下代碼:
Quit()
(4)在“顯示提示信息”顯示圖標(biāo)里輸入以下內(nèi)容:
{msg}
請(qǐng)根據(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ì)
在本例中,我們通過(guò)復(fù)選框的形式,分別可控制任務(wù)欄的打開(kāi)和關(guān)閉、托盤(pán)圖標(biāo)的顯示和隱藏、“開(kāi)始”按鈕的顯示和隱藏、Windows鍵的打開(kāi)和關(guān)閉、鼠標(biāo)失效與否、關(guān)閉和恢復(fù)屏幕保護(hù)、強(qiáng)行關(guān)閉計(jì)算機(jī)和強(qiáng)行重啟計(jì)算機(jī)等。
2.核心技術(shù)
本例主要使用DisablePro控件來(lái)禁用或啟用Windows的某些系統(tǒng)功能;用MicrosoftForms2.0CheckBox控件來(lái)實(shí)現(xiàn)各功能開(kāi)關(guān)的設(shè)置或取消設(shè)置;用budapi.u32外部函數(shù)中的baMsgBox()函數(shù)來(lái)彈出信息提示框。
3.典型函數(shù)用法介紹
↘DisablePro控件
屬性:該控件有9個(gè)屬性,如圖13-3所示。每個(gè)屬性的值都可設(shè)置為T(mén)rue或False,分別對(duì)應(yīng)該功能的啟用和關(guān)閉。這9個(gè)屬性分別是:
DisableDesktop,是否隱藏桌面;
DisableIconTray,是否隱藏托盤(pán)圖標(biāo);
DisableMouse,是否啟用鼠標(biāo);
DisableScreenSaver,是否啟用屏幕保護(hù)程序;
DisableStartButton,是否顯示W(wǎng)indows的“開(kāi)始”按鈕;
DisableTaskBar,是否顯示任務(wù)欄;圖13-3DisableTaskSwitching,是否啟用Windows的開(kāi)關(guān)鍵(包括Ctrl+Esc、Ctrl+Alt+Delete、Alt+Tab、Windows鍵);
DisableTrayClock,是否顯示任務(wù)欄時(shí)鐘圖標(biāo);
Enabled,DisablePro控件是否有效。
方法:ForceReboot,強(qiáng)行重新啟動(dò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)
說(shuō)明:該函數(shù)可彈出一個(gè)信息窗口,顯示一些提示信息。
參數(shù):Message,需要在彈出窗口中顯示的字符串;
Caption,彈出窗口的標(biāo)題欄文字;
Icon,彈出窗口中圖標(biāo)的形式,可以是Stop(停止圖標(biāo))、Information(信息圖標(biāo))、Question(問(wèn)號(hào)圖標(biāo))、Exclamation(感嘆號(hào)圖標(biāo))、NoIcon(無(wú)圖標(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控件,必須先注冊(cè)該控件。方法是在“控件注冊(cè)”計(jì)算圖標(biāo)中輸入以下代碼:
classID:="{9CD81531-6B69-11D1-83EE-00C0D1571EDC}"
ifActiveXControlQuery(classID)=0then
ActiveXControlRegister(FileLocation^"DisablePro.ocx")
endif
然后運(yùn)行此程序即完成注冊(cè)。完成注冊(cè)后,即可在SelectActiveXControl對(duì)話框中找到DisablePro.Disable控件。
我們用來(lái)做復(fù)選框的控件MicrosoftForms2.0CheckBox不需要單獨(dú)注冊(cè),因?yàn)樗呀?jīng)在安裝OFFICE組件時(shí)被注冊(cè)好了。(2)在“設(shè)置屬性”計(jì)算圖標(biāo)中輸入以下代碼(以設(shè)置9個(gè)復(fù)選框的標(biāo)題):
SetSpriteProperty(@"關(guān)閉任務(wù)欄",#Caption,IconTitle@"關(guān)閉任務(wù)欄")
SetSpriteProperty(@"隱藏托盤(pán)圖標(biāo)",#Caption,IconTitle@"隱藏托盤(pán)圖標(biāo)")
SetSpriteProperty(@"隱藏開(kāi)始按鈕",#Caption,IconTitle@"隱藏開(kāi)始按鈕")
SetSpriteProperty(@"使Windows開(kāi)關(guān)鍵失效",#Caption,IconTitle@"使Windows開(kāi)關(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)行重新啟動(dòng)計(jì)算機(jī)”,#Caption,IconTitle@“強(qiáng)行重新啟動(dò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))
在“-隱藏托盤(pán)圖標(biāo)”事件響應(yīng)的計(jì)算圖標(biāo)中輸入以下代碼:
SetSpriteProperty(@"DisablePro",#DisableIconTray,GetSpriteProperty(@"隱藏托盤(pán)圖標(biāo)",#value))在“-隱藏開(kāi)始按鈕”事件響應(yīng)的計(jì)算圖標(biāo)中輸入以下代碼:
SetSpriteProperty(@"DisablePro",#DisableStartbutton,GetSpriteProperty(@"隱藏開(kāi)始按鈕",#value))
在“-使Windows開(kāi)關(guān)鍵失效”事件響應(yīng)的計(jì)算圖標(biāo)中輸入以下代碼:
SetSpriteProperty(@"DisablePro",#DisableTaskSwitching,GetSpriteProperty(@"使Windows開(kāi)關(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)行重新啟動(dòng)計(jì)算機(jī)”事件響應(yīng)的計(jì)算圖標(biāo)中輸入以下代碼:
Result:=baMsgBox(“真的要重新啟動(dòng)計(jì)算機(jī)嗎?”,“注意”,“YesNo”,“Information”,2)
ifCapitalize(Result)=“YES”then
CallSprite(@“DisablePro”,#ForceReboot)
else
SetSpriteProperty(@“強(qiáng)行重新啟動(dò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è)置居中對(duì)齊,再勾選交互圖標(biāo)屬性面板中的“顯示”標(biāo)簽下面的“更新顯示變量”。
(4)設(shè)置事件響應(yīng)的相關(guān)屬性。依次設(shè)置事件響應(yīng)的“發(fā)送者”和“事件”,如圖13-5所示。圖13-5
(5)發(fā)布程序后可試著運(yùn)行一下,其界面如圖13-6所示。值得注意的是,測(cè)試完畢后,需要把相關(guān)的選項(xiàng)重新打開(kāi),以免影響正常的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ù);若輸入由冒號(hào)分隔的兩個(gè)數(shù)字,則被看成是分鐘數(shù)和秒鐘數(shù);若輸入的是由冒號(hào)隔開(kāi)的三個(gè)數(shù)字,則被看成是小時(shí)數(shù)、分鐘數(shù)和秒鐘數(shù)。兩種方式下,時(shí)間到后都開(kāi)始響鈴。
2.核心技術(shù)
本例使用MicrosoftForms2.0OptionButton控件來(lái)做單選按鈕,以控制是設(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)畫(huà),當(dāng)響鈴時(shí)會(huì)出現(xiàn)一個(gè)跳動(dòng)的鬧鐘?!奥曇簟眻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動(dòng)畫(huà)文件(通過(guò)【插入】/【圖像】菜單來(lái)完成),再勾選其“顯示”標(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ǔ)上,大家可以動(dòng)動(dòng)腦筋,把程序修改一下。比如,在時(shí)間的輸入上加上更加復(fù)雜的判斷處理。例如,輸入“120”,程序會(huì)自動(dòng)判斷出是延時(shí)2分鐘。又如,對(duì)用戶輸入的內(nèi)容進(jìn)行判斷,看是否包含除數(shù)字和冒號(hào)以外的其它內(nèi)容等。13.1.5為演示窗口添加最大化和最小化按鈕
Windows標(biāo)準(zhǔn)的應(yīng)用程序窗口都有最大化、最小化和關(guān)閉按鈕。而Authorware默認(rèn)的演示窗口是沒(méi)有最大化和最小化按鈕的。如果想要做一個(gè)標(biāo)準(zhǔn)的Windows應(yīng)用程序風(fēng)格的應(yīng)用程序,我們可通過(guò)其它方法加上最大化和最小化按鈕。
1.程序設(shè)計(jì)
本例主要使用Authorware外部Xtras文件(budapi.x32)中的baAddSysItems()函數(shù)來(lái)添加最大化和最小化按鈕。
2.核心技術(shù)
前面我們做了很多Authorware的外部函數(shù),也知道了使用外部函數(shù)的方法。而本例中所使用到的是一個(gè)外部Xtras文件(budapi.x32),需要事先將其復(fù)制到Authorware安裝文件夾下的Xtras文件夾里去,這樣,當(dāng)我們?cè)俅螁?dòng)Authorware時(shí),在“函數(shù)”面板的“分類”中就會(huì)多出一個(gè)“XtraBudAPI”類,其中有多個(gè)函數(shù)可直接使用。
3.典型函數(shù)用法介紹
↘baAddSysItems()函數(shù)
格式:baAddSysItems(WinHandle,SysMenu,MinBox,MaxBox)
說(shuō)明:該函數(shù)用于給指定窗口添加系統(tǒng)菜單和最小化、最大化按鈕。
參數(shù):WinHandle,是Authorware中的一個(gè)系統(tǒng)變量,代表當(dāng)前演示窗口的句柄;
SysMenu,是否添加系統(tǒng)菜單,其值為T(mén)rue或False;
MinBox,是否添加最小化按鈕,其值為T(mén)rue或False;
MaxBox,是否添加最大化按鈕,其值為T(mén)rue或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ù)來(lái)顯示驅(qū)動(dòng)器列表框、文件夾列表框和文件列表框。當(dāng)改變驅(qū)動(dòng)器列表框中的內(nèi)容時(shí),文件夾列表框和文件列表框中的內(nèi)容會(huì)同步更新。當(dāng)選擇具體的某個(gè)文件后,在界面中會(huì)顯示出當(dāng)前所選文件的完整路徑及文件名。
2.核心技術(shù)
本例主要是綜合應(yīng)用WinCtrls.u32中的wcDisplayControl()函數(shù)、wcGetPropertyValue()函數(shù)和wcSetPropertyValue()函數(shù)以及條件響應(yīng)來(lái)完成制作。
3.典型函數(shù)用法介紹
↘wcDisplayControl()函數(shù)
格式:Id:=wcDisplayControl(Left,Top,Width,Height,"ControlName","ChangeEventVarName")
說(shuō)明:該函數(shù)用于在指定的位置上顯示一個(gè)指定的控件,并返回控件ID號(hào)以供后續(xù)操作。參數(shù):Left,控件的左上角位置(x坐標(biāo))。
Top,控件的左上角位置(y坐標(biāo))。
Width,控件的寬度。
Height,控件的高度。
ControlName,控件名,共有20種控件,分別是:
●Button,按鈕控件;
●CheckBox,復(fù)選框控件;
●CheckListBox,復(fù)選框列表控件;
●ColorCombo,顏色組合框控件;
●ComboBox,組合框控件;
●DriverCombo,驅(qū)動(dòng)器組合框控件;
●Edit,單行文本編輯框控件;●FileListBox,文件列表框控件;
●FolderListBox,文件夾列表框控件;
●FontCombo,字體組合框控件;
●ListBox,列表框控件;
●MaskEdit,模板編輯框控件;
●Memo,多行文本框控件;
●PasswordEdit,密碼框控件;
●RadioButton,單選按鈕控件;
●SpinButton,數(shù)值調(diào)節(jié)按鈕控件;
●SpinEdit,數(shù)值調(diào)節(jié)按鈕文本框控件;
●TabSet,標(biāo)簽組控件;
●TrackBar,滑動(dòng)條控件;
●TreeView,樹(shù)形控件。
ChangeEventVarName,控件返回的事件變量名稱,可在Authorware中通過(guò)判斷此變量的值來(lái)判斷用戶更改了哪些控件,以進(jìn)行相應(yīng)的操作。當(dāng)用戶對(duì)控件操作后,該變量的值會(huì)從False變成True。
返回值:返回控件的ID編號(hào),此編號(hào)可用于對(duì)控件的后續(xù)操作。
↘wcGetPropertyValue()函數(shù)
格式:Value:=wcGetPropertyValue(Id,"PropertyName")
說(shuō)明:該函數(shù)用于獲取指定控件的指定屬性的值。
參數(shù):Id,所操作控件的標(biāo)識(shí)號(hào);
PropertyName,屬性名稱。返回值:指定控件的指定屬性的值。
↘wcSetPropertyValue()函數(shù)
格式:Result:=wcSetPropertyValue(Id,"PropertyName","Value")
說(shuō)明:該函數(shù)用于設(shè)置指定控件的指定屬性的值。
參數(shù):Id,所操作控件的標(biāo)識(shí)號(hà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")
其中各條件語(yǔ)句的“自動(dòng)”選項(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)后,會(huì)有提示信息顯示我們選擇了哪個(gè)具體的菜單項(xiàng)。同時(shí),專門(mén)設(shè)置了一個(gè)測(cè)試菜單項(xiàng),可對(duì)該菜單項(xiàng)進(jìn)行動(dòng)態(tài)的修改等處理。
2.核心技術(shù)
本例的關(guān)鍵是使用到了兩個(gè)外部函數(shù)Edit.u32和Budmenu.u32。
3.典型函數(shù)用法介紹
↘EditboxErase()函數(shù)
格式:EditboxErase()
說(shuō)明:該函數(shù)用于從演示窗口刪除文本編輯框。
↘EditboxGetText()函數(shù)
格式:cut_string:=EditboxGetText()
說(shuō)明:該函數(shù)用于取得編輯框中的結(jié)果。
返回值:返回編輯框中的文本內(nèi)容。↘EditboxDisplay()函數(shù)
格式:result:=EditboxDisplay(string,x_coord,y_coord,height,width)
說(shuō)明:該函數(shù)用于顯示一個(gè)帶滾動(dòng)條的文本編輯框。
參數(shù):string,在文本編輯框中顯示的初始化字符;
x_coord,文本編輯框左上角坐標(biāo)(x坐標(biāo));
y_coord,文本編輯框左上角坐標(biāo)(y坐標(biāo));
height,文本編輯框的高度;
width,文本編輯框的寬度。↘mCreatePopupMenu()函數(shù)
格式:menu:=mCreatePopupMenu()
說(shuō)明:該函數(shù)用于創(chuàng)建一個(gè)空的菜單。
返回值:如果創(chuàng)建成功,則返回一個(gè)菜單句柄(該句柄在其它函數(shù)里會(huì)多次用到);如果創(chuàng)建失敗,則返回0。↘mAppendMenu()函數(shù)
格式:ok:=mAppendMenu(Menu,Flags,IDNewItem,NewItem)
說(shuō)明:該函數(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)建級(jí)聯(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)記,絕對(duì)不能重復(fù)。
NewItem,新創(chuàng)建的菜單項(xiàng)的名稱。如果要在菜單項(xiàng)中添加快捷操作鍵,則可在指定快捷字母前加“&”。
↘mCheckMenuItem()函數(shù)
格式:ok:=mCheckMenuItem(Menu,IDEnableItem,Check)
說(shuō)明:該函數(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)
說(shuō)明:該函數(shù)用于刪除指定的菜單。
參數(shù):Menu,菜單句柄。
返回值:如果操作成功,則返回True,否則返回False。
↘mEnableMenuItem()函數(shù)
格式:ok:=mEnableMenuItem(Menu,IDEnableItem,Enable)
說(shuō)明:該函數(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)
說(shuō)明:該函數(shù)用于顯示一個(gè)菜單。參數(shù):Menu,菜單句柄;
Flags,參見(jiàn)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()
說(shuō)明:該函數(shù)用于記錄用戶選擇了哪一個(gè)菜單項(xiàng)。
返回值:所選菜單項(xiàng)的ID。↘mGetMenustate()函數(shù)
格式:state:=mGetMenustate(Menu,IDItem,Flags)
說(shuō)明:該函數(shù)用于檢查指定菜單項(xiàng)的狀態(tài),比如是否有選中標(biāo)記、是否啟用等。
參數(shù):Menu,菜單句柄;
IDItem,指定菜單項(xiàng)的ID;
Flags,參見(jiàn)mCreatePopupMenu()函數(shù)中的Flags參數(shù)。
返回值:根據(jù)Flags的值返回不同的值。
↘MenuHookOn()函數(shù)
格式:res:=MenuHookOn(WindowHandle)
說(shuō)明:該函數(shù)用于安裝菜單掛鉤,也就是讓菜單和Authorware之間建立聯(lián)系。安裝好掛鉤后,該掛鉤會(huì)一直起作用,直到調(diào)用MenuHookOff()解除掛鉤為止。參數(shù):WindowHandle,演示窗口的句柄。
返回值:如果操作成功,則返回True,否則返回False。
↘MenuHookOff()函數(shù)
格式:MenuHookOff()
說(shuō)明:該函數(shù)用于解除菜單掛鉤。
↘mModifyMenu()函數(shù)
格式:ok:=mModifyMenu(Menu,Position,Flags,IDNewItem,NewItem)
說(shuō)明:該函數(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)”按鈕沒(méi)有顯示出來(lái)),然后載入外部函數(shù)Budmenu.u32和Edit.u32。圖13-16
(2)在“創(chuàng)建菜單”計(jì)算圖標(biāo)中輸入以下代碼:
LastMenuID:=-1 --選中菜單號(hào)的初值
SelectMenu:=mCreatePopupMenu()--創(chuàng)建文件菜單
mAppendMenu(SelectMenu,0,10,"打開(kāi)\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)并有級(jí)聯(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,"測(cè)試項(xiàng)")
appendMenuID:=37 --下一個(gè)添加菜單的號(hào)
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)在“打開(kāi)編輯框1”計(jì)算圖標(biāo)里輸入以下代碼:
Message:=""
newText:=EditboxDisplay("請(qǐng)?jiān)谶@里編輯新的菜單項(xiàng)然后單擊按鈕",200,50,50,100)
在“打開(kāi)編輯框2”計(jì)算圖標(biāo)里輸入以下代碼:
Message:=""
newText:=EditboxDisplay("請(qǐng)?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)改變,請(qǐng)查看"
在“添加菜單項(xiàng)”計(jì)算圖標(biāo)中輸入以下代碼:
newText:=EditboxGetText() --取得編輯結(jié)果
mAppendMenu(EditMenu,0,appendMenuID,newText) --添加一個(gè)新的菜單項(xiàng)
appendMenuID:=appendMenuID+1 --下一個(gè)添加菜單的ID號(hào)
EditboxErase() --刪除編輯框
LastMenuID:=-1
Message:="已經(jīng)增加了一個(gè)新的菜單項(xiàng),請(qǐ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)改變,請(qǐng)查看"
在“改變可用性”計(jì)算圖標(biāo)里輸入以下代碼:
mEnableMenuItem(EditMenu,33,9-mGetMenuState(EditMenu,33,9))
Message:="試驗(yàn)菜單項(xiàng)的可用性已經(jīng)改變,請(qǐng)查看"
在“LastMenuID>-1”條件響應(yīng)的下掛計(jì)算圖標(biāo)里輸入以下代碼:
ifLastMenuID=10thenMessage:="打開(kāi)"
ifLastMenuID=20thenMessage:="保存為*.txt文件"
ifLastMenuID=21thenMessage:="保存為*.doc文件"
ifLastMenuID=22thenMessage:="保存為*.rtf文件"
ifLastMenuID=23thenMessage:="保存為*.html文件"
ifLastMenuID=24thenMessage:="取消"
ifLastMenuID=30thenMessage:="復(fù)制"
ifLastMenuID=31thenMessage:="剪切"
ifLastMenuID=32thenMessage:="粘貼"
ifLastMenuID=33thenMessage:="測(cè)試項(xiàng)"
Message:="你選擇的菜單項(xiàng)是:"^MessageifLastMenuID=0thenMessage:="沒(méi)有選擇菜單"
ifLastMenuID=11then --退出
mMenuHookOff() --解除與Authorware的掛鉤
mDestroyMenu(SelectMenu) --刪除各個(gè)菜單
mDestroyMenu(EditMenu)
mDestroyMenu(submenu)
Quit()
endif
LastMenuID:=-1其中條件響應(yīng)的“自動(dò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è)按鈕(文件、編輯)來(lái)模擬菜單條,故需要使用按鈕編輯器把兩個(gè)按鈕的邊框去除,并將其調(diào)整至合適的位置。整個(gè)程序運(yùn)行時(shí)的效果如圖13-17所示。圖13-17
13.2.3動(dòng)態(tài)改變按鈕名稱
在程序運(yùn)行過(guò)程中,有的按鈕需要?jiǎng)討B(tài)改變其名稱。比如,制作一個(gè)媒體播放器,我們可把“播放”和“暫停”做成一個(gè)按鈕:當(dāng)點(diǎn)擊“播放”后,該按鈕變成“暫停”;再點(diǎn)擊一次“暫?!?,該按鈕又會(huì)變成“播放”。
1.程序設(shè)計(jì)
通過(guò)系統(tǒng)函數(shù)設(shè)置按鈕名稱,從而達(dá)到動(dòng)態(tài)改變按鈕名稱的目的。
2.核心技術(shù)
使用系統(tǒng)函數(shù)SetIconTitle()來(lái)改變按鈕名稱。
3.典型函數(shù)用法介紹
↘SetIconTitle()函數(shù)
格式:SetIconTitle(IconID@“IconTitle”,“title”)
說(shuō)明:該函數(shù)用于設(shè)置指定圖標(biāo)的標(biāo)題名稱。
參數(shù):IconTitle,指定圖標(biāo)的標(biāo)題;
title,設(shè)置新的標(biāo)題名稱。
↘IconID()函數(shù)
格式:number:=IconID(“IconTitle”)
說(shuō)明:該函數(shù)用于返回指定圖標(biāo)獨(dú)一無(wú)二的數(shù)字標(biāo)識(shí)。
參數(shù):IconTitle,指定圖標(biāo)的標(biāo)題。
↘IconTitle()函數(shù)
格式:string:=IconTitle(IconID)
說(shuō)明:該函數(shù)用于返回用戶在IconID中指定的圖標(biāo)標(biāo)題。
4.具體制作
(1)制作如圖13-18所示的程序流程。
(2)在“初始化”計(jì)算圖標(biāo)中輸入以下代碼:
ResizeWindow(210,152)
id1:=IconID@"暫停"
id2:=IconID@"開(kāi)倉(cāng)"
在“暫?!卑粹o的下掛計(jì)算圖標(biāo)中輸入以下代碼:
ifIconTitle="暫停"then
SetIconTitle(id1,"播放")
else
SetIconTitle(id1,"暫停")
endif在“開(kāi)倉(cāng)”按鈕的下掛計(jì)算圖標(biāo)中輸入以下代碼:
ifIconTitle="關(guān)倉(cāng)"then
SetIconTitle(id2,"開(kāi)倉(cāng)")
else
SetIconTitle(id2,"關(guān)倉(cāng)")
endif
在“退出”按鈕的下掛計(jì)算圖標(biāo)中輸入以下代碼:
SetIconTitle(id1,"暫停")
SetIconTitle(id2,"開(kāi)倉(cāng)")
Quit()
(3)雙擊交互圖標(biāo),在其演示窗口中輸入文字,如圖13-19所示。
(4)至此,用戶可以試著運(yùn)行一下程序,體驗(yàn)一下動(dòng)態(tài)改變按鈕名稱的感覺(jué)。
實(shí)際上,要?jiǎng)討B(tài)改變按鈕名稱,也可使兩個(gè)按鈕重合(當(dāng)然也可多個(gè)),然后在某一時(shí)刻只顯示某一個(gè)按鈕,其它按鈕隱藏。
13.2.4調(diào)用Windows的常用對(duì)話框
1.程序設(shè)計(jì)
本例通過(guò)控件的調(diào)用,實(shí)現(xiàn)打開(kāi)顏色對(duì)話框、字體對(duì)話框、打印對(duì)話框、文件對(duì)話框和保存文件對(duì)話框的功能,并能同時(shí)返回每個(gè)對(duì)話框的結(jié)果。
2.核心技術(shù)
本例各個(gè)功能得以實(shí)現(xiàn),依賴于MicrosoftCommonDialogControl控件。
3.控件典型屬性介紹
CancelError,是否顯示出錯(cuò)信息,其值為T(mén)rue或False。
DefaultExt,缺省的擴(kuò)展名。
DialogTitle,對(duì)話框標(biāo)題。
FileName,選擇的文件名。
Filter,列表框的過(guò)濾器設(shè)置。
FilterInder,過(guò)濾器索引值。
Flags,標(biāo)志位。該標(biāo)志位在不同對(duì)話框里,同樣的值有不同的含義。具體內(nèi)容可參見(jiàn)表13-1。表13-1不同對(duì)話框里Flags的含義FontBold,選擇的字體是否是粗體,其值為T(mén)rue或False。
FontItalic,選擇的字體是否是斜體,其值為T(mén)rue或False。
FontName,選擇的字體的名稱。
FontSize,選擇的字體的大小。
FontStrikeThru,選擇的字體是否有刪除線,其值為T(mén)rue或False。
FontUnderLine,選擇的字體是否有下劃線,其值為T(mén)rue或False。
FromPage,返回“打印”對(duì)話框里的開(kāi)始頁(yè)數(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ī),其值為T(mén)rue或False。
ToPage,返回“打印”對(duì)話框里的結(jié)束頁(yè)數(shù)值。
4.控件典型方法介紹
ShowColor,顯示“顏色”對(duì)話框。
ShowFont,顯示“字體”對(duì)話框。在顯示該對(duì)話框之前,必須先設(shè)置前面所介紹的Flags屬性,否則系統(tǒng)會(huì)出錯(cuò)。
ShowOpen,顯示“打開(kāi)”對(duì)話框。
ShowPrinter,顯示“打印”對(duì)話框。
ShowSave,顯示“另存為”對(duì)話框。
5.具體制作
(1)制作如圖13-20所示的程序流程(其中還有一個(gè)“退出”按鈕沒(méi)有顯示出來(lái))。圖13-20
(2)在“初值”計(jì)算圖標(biāo)里輸入以下代碼:
ResizeWindow(350,250)
d:=""
(3)在“顯示信息”顯示圖標(biāo)里輸入以下代碼:
yaebfwl
(4)在“顏色對(duì)話框”按鈕的下掛計(jì)算圖標(biāo)里輸入以下代碼:
a:=SetSpriteProperty(@"通用對(duì)話框控件",#flags,2)
a:=CallSprite(@"通用對(duì)話框控件",#showcolor)
a:=GetSpriteProperty(@"通用對(duì)話框控件",#color)
b:=SetFileProperty(#awbackgroundcolor,a)
d:="背景色="^String(a)
(5)在“字體對(duì)話框”按鈕的下掛計(jì)算圖標(biāo)里輸入以下代碼:
a:=SetSpriteProperty(@"通用對(duì)話框控件",#Flags,3)
a:=CallSprite(@"通用對(duì)話框控件",#ShowFont)
d1:=GetSpriteProperty(@"通用對(duì)話框控件",#FontName)
d2:=GetSpriteProperty(@"通用對(duì)話框控件",#FontSize)
d3:=Test(GetSpriteProperty(@"通用對(duì)話框控件",#FontBold),"粗體","")
d4:=Test(GetSpriteProperty(@"通用對(duì)話框控件",#FontItalic),"斜體","")
d5:=Test(GetSpriteProperty(@"通用對(duì)話框控件",#FontUnderLine),"下劃線","")
d:="字體="^d1^"\r字號(hào)="^d2^"\r"^d3^d4^d5
(6)在“打開(kāi)文件對(duì)話框”按鈕的下掛計(jì)算圖標(biāo)里輸入以下代碼:
a:=CallSprite(@"通用對(duì)話框控件",#ShowOpen)
d:="打開(kāi)文件="^GetSpriteProperty(@"通用對(duì)話框控件",#FileName)
(7)在“保存文件對(duì)話框”按鈕的下掛計(jì)算圖標(biāo)里輸入以下代碼:
a:=SetSpriteProperty(@"通用對(duì)話框控件",#Flags,2)
a:=CallSprite(@"通用對(duì)話框控件",#ShowSave)
d:="保存文件="^GetSpriteProperty(@"通用對(duì)話框控件",#FileName)
(8)在“打印對(duì)話框”按鈕的下掛計(jì)算圖標(biāo)里輸入以下代碼:
a:=CallSprite(@"通用對(duì)話框控件",#ShowPrinter)
d:="調(diào)用了打印文件對(duì)話框,正常返回"(9)打包程序,運(yùn)行結(jié)果如圖13-21所示。圖13-2113.3在Authorware中連接數(shù)據(jù)庫(kù)
13.3.1ODBC驅(qū)動(dòng)程序連接數(shù)據(jù)庫(kù)簡(jiǎn)介
ODBC(OpenDataBaseConnectivity)接口,中文名為“開(kāi)放式數(shù)據(jù)庫(kù)鏈接”接口,是Microsoft公司推出的實(shí)現(xiàn)異種數(shù)據(jù)庫(kù)互連的標(biāo)準(zhǔn)。它對(duì)用戶屏蔽了不同數(shù)據(jù)庫(kù)之間的差異,從而可以使用戶利用標(biāo)準(zhǔn)的SQL語(yǔ)言對(duì)各種不同的數(shù)據(jù)庫(kù)進(jìn)行操作。
Authorware提供了一個(gè)支持標(biāo)準(zhǔn)ODBC的數(shù)據(jù)庫(kù)接口,利用標(biāo)準(zhǔn)的SQL語(yǔ)言可以對(duì)Access、FoxPro、Dbase、Oracle、Sybase、SQLServer等數(shù)據(jù)庫(kù)進(jìn)行添加、刪除和查詢等基本操作。
在Authorware中操作數(shù)據(jù)庫(kù),必須具備以下條件:
(1)所連接數(shù)據(jù)庫(kù)的ODBC驅(qū)動(dòng)程序。
(2)ODBC用戶代碼文件,即需要調(diào)用外部的UCD函數(shù)(ODBC.U32)。
(3)數(shù)據(jù)庫(kù)源文件,一般由數(shù)據(jù)庫(kù)軟件創(chuàng)建,也可以利用Authorware新建和添加記錄。
ODBC驅(qū)動(dòng)程序是一種動(dòng)態(tài)的鏈接庫(kù),它含有可與各種不同數(shù)據(jù)庫(kù)相鏈接的函數(shù),每種數(shù)據(jù)庫(kù)類型都有單獨(dú)的驅(qū)動(dòng)程序。在WindowsXP操作系統(tǒng)中,我們可在“控制面板”里打開(kāi)“管理工具”,然后打開(kāi)“數(shù)據(jù)源(ODBC)”即可查看系統(tǒng)中的ODBC驅(qū)動(dòng)程序,如圖13-22所示。圖13-22用戶使用的每個(gè)ODBC驅(qū)動(dòng)程序都必須包含以下基本功能:
(1)提供數(shù)據(jù)庫(kù)的鏈接;
(2)準(zhǔn)備和執(zhí)行SQL語(yǔ)句;
(3)處理事務(wù)的功能;
(4)返回結(jié)果集;
(5)通知應(yīng)用程序的錯(cuò)誤信息。
13.3.2配置ODBC數(shù)據(jù)源
在Authorware中正常使用數(shù)據(jù)庫(kù)需要兩個(gè)最基本的條件:
(1)系統(tǒng)中的ODBC驅(qū)動(dòng)程序必須可用,其作用是用來(lái)連接一種數(shù)據(jù)庫(kù);
(2)必須建立ODBC數(shù)據(jù)源,其作用是用來(lái)連接一種特殊類型的數(shù)據(jù)庫(kù)的ODBC驅(qū)動(dòng)程序配置。
配置ODBC的方法一般有兩種,即手動(dòng)配置和自動(dòng)配置。
1.手動(dòng)配置
利用Windows的控制面板中的ODBC管理應(yīng)用程序可實(shí)現(xiàn)手動(dòng)配置ODBC數(shù)據(jù)源。
(1)在WindowsXP中,我們可以打開(kāi)“控制面板”,再打開(kāi)其中的“管理工具”,在其中找到“數(shù)據(jù)源(ODBC)”圖標(biāo),雙擊它打開(kāi)ODBC數(shù)據(jù)源管理器,然后切換至“系統(tǒng)DSN”標(biāo)簽,如圖13-23所示。圖13-23
(2)單擊“添加”按鈕,打開(kāi)“創(chuàng)建新數(shù)據(jù)源”對(duì)話框,如圖13-24所示。在其中選擇自己需要的驅(qū)動(dòng)程序,在此,我們選擇“MicrosoftAccessDriver(*.mdb)”,表示將連接一個(gè)Access數(shù)據(jù)庫(kù)。單擊“完成”按鈕進(jìn)入下一個(gè)環(huán)節(jié)。圖13-24
(3)在“ODBCMicrosoftAccess安裝”對(duì)話框中,輸入一個(gè)“數(shù)據(jù)源名”,在此輸入“student”,“說(shuō)明”可以不輸入。在下面的“數(shù)據(jù)庫(kù)”里,單擊“選擇”按鈕,選擇自己的Access數(shù)據(jù)庫(kù),如圖13-25所示。如果該數(shù)據(jù)庫(kù)包含有密碼等相關(guān)信息,則可單擊“高級(jí)”按鈕,然后在其中設(shè)置密碼等,如圖13-26所示。圖13-25圖13-26
(4)設(shè)置好數(shù)據(jù)源后,在“系統(tǒng)DSN”中即可看到我們?cè)O(shè)置的系統(tǒng)數(shù)據(jù)源,如圖13-27所示。圖13-27
2.自動(dòng)配置
在Authorware中調(diào)用tMsSDSN.U32函數(shù)可實(shí)現(xiàn)ODBC數(shù)據(jù)源的自動(dòng)配置。
自動(dòng)配置數(shù)據(jù)源的優(yōu)點(diǎn)在于,通過(guò)Authorware編制的程序,打包成可執(zhí)行文件后,可以在其他計(jì)算機(jī)上直接運(yùn)行,而不需要手動(dòng)去配置數(shù)據(jù)源。實(shí)現(xiàn)自動(dòng)配置數(shù)據(jù)源的關(guān)鍵是使用外部函數(shù)tMsDSN.u32中的tMsDBRegister()函數(shù)。
(外部函數(shù)tMsDSN.u32
格式:result:=tMsDBRegister(dbReqType,dbType,dbList)說(shuō)明:該函數(shù)用于配置數(shù)據(jù)源的驅(qū)動(dòng)程序、指定數(shù)據(jù)源的名稱、指定源數(shù)據(jù)庫(kù)。
參數(shù):dbReqTpye,指定對(duì)數(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ū)動(dòng)程序。比如:
dbType:="MicrosoftAccessDriver(*.mdb)"
dbList,指定ODBC數(shù)據(jù)源的名稱、對(duì)數(shù)據(jù)源的描述以及與之相關(guān)聯(lián)的數(shù)據(jù)庫(kù)文件,注意它們之間必須用分號(hào)隔開(kāi),下面舉例說(shuō)明:
dbList:="DSN=CollegeDSN;" --CollegeDSN為數(shù)據(jù)源的名稱
dbList:=dbList^"Description=MyODBCDSN;"--對(duì)CollegeDSN數(shù)據(jù)源進(jìn)行描述
dbList:=dbList^"FIL=MSAccess;" --說(shuō)明數(shù)據(jù)的類型為Access數(shù)據(jù)庫(kù)
dbList:=dbList^"DBQ="^FileLocation^"test.mdb;" --相關(guān)聯(lián)的數(shù)據(jù)庫(kù)是test.mdb
返回值:如果數(shù)據(jù)源創(chuàng)建成功,則返回值是1,否則返回0。
自動(dòng)創(chuàng)建好數(shù)據(jù)源后,用戶還可以通過(guò)控制面板中的“數(shù)據(jù)源(ODBC)”來(lái)查看創(chuàng)建的結(jié)果。13.3.3SQL語(yǔ)句使
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024網(wǎng)絡(luò)安全防護(hù)與監(jiān)測(cè)服務(wù)合同
- 2024離婚雙方的特殊財(cái)產(chǎn)(如古董、藝術(shù)品)分配合同
- 2025年度住宅小區(qū)蟲(chóng)鼠害預(yù)防與治理專項(xiàng)服務(wù)合同模板4篇
- 2025年度安全生產(chǎn)應(yīng)急預(yù)案編制合同規(guī)范3篇
- 2025年度新能源汽車銷售代理及售后服務(wù)合同3篇
- 2025年度智慧停車系統(tǒng)車位租賃管理合同樣本4篇
- 2025年度出租車公司車輛更新改造升級(jí)合同3篇
- 2025年度現(xiàn)代農(nóng)業(yè)示范區(qū)場(chǎng)地平整與灌溉系統(tǒng)建設(shè)合同3篇
- 2025年度特色菜肴研發(fā)及廚師團(tuán)隊(duì)聘用協(xié)議4篇
- 2025年度數(shù)據(jù)中心專用電纜供應(yīng)與安裝服務(wù)合同范本4篇
- 商場(chǎng)電氣設(shè)備維護(hù)勞務(wù)合同
- 油氣田智能優(yōu)化設(shè)計(jì)-洞察分析
- 陜西2020-2024年中考英語(yǔ)五年真題匯編學(xué)生版-專題09 閱讀七選五
- 磚混結(jié)構(gòu)基礎(chǔ)加固技術(shù)方案
- 助產(chǎn)專業(yè)的職業(yè)生涯規(guī)劃
- 2023年國(guó)家公務(wù)員錄用考試《行測(cè)》真題(行政執(zhí)法)及答案解析
- 新《國(guó)有企業(yè)管理人員處分條例》知識(shí)競(jìng)賽考試題庫(kù)500題(含答案)
- 骨質(zhì)疏松護(hù)理
- 《聞泰科技并購(gòu)安世半導(dǎo)體的風(fēng)險(xiǎn)應(yīng)對(duì)案例探析》8200字(論文)
- 肝斷面引流管護(hù)理
- 醫(yī)療器械銷售合同模板
評(píng)論
0/150
提交評(píng)論