《B程序設(shè)計(jì)》第7章高級(jí)窗口控課件_第1頁(yè)
《B程序設(shè)計(jì)》第7章高級(jí)窗口控課件_第2頁(yè)
《B程序設(shè)計(jì)》第7章高級(jí)窗口控課件_第3頁(yè)
《B程序設(shè)計(jì)》第7章高級(jí)窗口控課件_第4頁(yè)
《B程序設(shè)計(jì)》第7章高級(jí)窗口控課件_第5頁(yè)
已閱讀5頁(yè),還剩70頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、B程序設(shè)計(jì)第7章高級(jí)窗口控第第7章高級(jí)窗口控件章高級(jí)窗口控件7.1高級(jí)窗口控件在應(yīng)用中的地位高級(jí)窗口控件在應(yīng)用中的地位7.2高級(jí)窗口控件的基本知識(shí)與用法高級(jí)窗口控件的基本知識(shí)與用法7.3數(shù)據(jù)窗口控件數(shù)據(jù)窗口控件7.4高級(jí)窗口控件應(yīng)用實(shí)例高級(jí)窗口控件應(yīng)用實(shí)例小結(jié)小結(jié)B程序設(shè)計(jì)第7章高級(jí)窗口控7.1 高級(jí)窗口控件在應(yīng)用中的地位高級(jí)窗口控件在應(yīng)用中的地位 本章介紹的控件和第三章的控件相比較,在使用本章介紹的控件和第三章的控件相比較,在使用方法和界面上都稍微復(fù)雜一些,但它們?cè)趯?shí)際應(yīng)方法和界面上都稍微復(fù)雜一些,但它們?cè)趯?shí)際應(yīng)用中也是比較常用的。用好這些控件,可以完成用中也是比較常用的。用好這些控件,可以

2、完成簡(jiǎn)單控件不能完成的功能,從而減少很多編程工簡(jiǎn)單控件不能完成的功能,從而減少很多編程工作,如富文本在運(yùn)行作,如富文本在運(yùn)行PowerBuilder程序過(guò)程中,程序過(guò)程中,不啟動(dòng)寫(xiě)字板或不啟動(dòng)寫(xiě)字板或Word處理器,就可以處理用戶輸處理器,就可以處理用戶輸入的文本,或調(diào)用一些文本進(jìn)行編輯入的文本,或調(diào)用一些文本進(jìn)行編輯;數(shù)據(jù)窗口控?cái)?shù)據(jù)窗口控件是件是PowerBuilder中的一個(gè)核心控件,是否能夠中的一個(gè)核心控件,是否能夠熟練使用熟練使用PowerBuilder進(jìn)行項(xiàng)目開(kāi)發(fā)在很大程度進(jìn)行項(xiàng)目開(kāi)發(fā)在很大程度上決定于如何更好地使用該控件。所以認(rèn)真學(xué)習(xí)上決定于如何更好地使用該控件。所以認(rèn)真學(xué)習(xí)這些高

3、級(jí)窗口控件,不僅可以豐富窗口知識(shí),減這些高級(jí)窗口控件,不僅可以豐富窗口知識(shí),減少系統(tǒng)編程量,也可以為操作者提供更直觀、方少系統(tǒng)編程量,也可以為操作者提供更直觀、方便、快捷的操作功能便、快捷的操作功能B程序設(shè)計(jì)第7章高級(jí)窗口控7.2 高級(jí)窗口控件的基本知識(shí)與用法高級(jí)窗口控件的基本知識(shí)與用法 7.2.1 下拉列表框與下拉圖片列表框下拉列表框與下拉圖片列表框 7.2.2 圖片(圖片(Picture)與圖片超鏈接)與圖片超鏈接(PictureHyperLink) 7.2.3 統(tǒng)計(jì)圖(統(tǒng)計(jì)圖(Graph) 7.2.4 富文本(富文本(RichTextEdit) 7.2.5 OLE控件控件B程序設(shè)計(jì)第7章

4、高級(jí)窗口控7.2.1 下拉列表框與下拉圖片列表框下拉列表框與下拉圖片列表框 1.下拉列表框 下拉列表框控件實(shí)際上是單行編輯器與列表框的組合,可以從該控件中選擇內(nèi)容。當(dāng)允許編輯該控件中的內(nèi)容時(shí)(可將控件的AllowEdit屬性設(shè)為True),可以像單行編輯器一樣在該控件中輸入或者修改文本內(nèi)容,如圖71所示。B程序設(shè)計(jì)第7章高級(jí)窗口控7.2.1 下拉列表框與下拉圖片列表框下拉列表框與下拉圖片列表框 (1)屬性 下拉列表框的屬性實(shí)際上是列表框和單行編輯器屬性的綜合,如圖72和圖73所示。B程序設(shè)計(jì)第7章高級(jí)窗口控7.2.1 下拉列表框與下拉圖片列表框下拉列表框與下拉圖片列表框 (2)事件 下拉列表框

5、控件的事件也綜合了單行編輯器與列表框的事件部分。 比較常用的事件如下: SelectionChanged事件:該事件在用戶從下拉列表框中選擇列表項(xiàng)時(shí)被觸發(fā)。它的用法同列表框,讀者可以參考列表框部分。 注意 當(dāng)在編輯框中修改文本時(shí),不會(huì)觸發(fā)該事件。B程序設(shè)計(jì)第7章高級(jí)窗口控7.2.1 下拉列表框與下拉圖片列表框下拉列表框與下拉圖片列表框 DoubleClicked事件:用戶雙擊下拉式列表框中的列表項(xiàng)時(shí)觸發(fā)該事件。該事件的用法同列表框。讀者可以參考列表框部分。 注意 該事件只有在下拉式列表框的ShowList屬性為True時(shí),才能起作用。 Modified事件:該事件在用戶修改編輯框部分的文本,并

6、且使該控件失去焦點(diǎn)時(shí)才被觸發(fā)。 B程序設(shè)計(jì)第7章高級(jí)窗口控7.2.1 下拉列表框與下拉圖片列表框下拉列表框與下拉圖片列表框(3)函數(shù) 在下拉列表框的常用函數(shù)中,與列表框相似的有:AddItem()、DeleteItem()、FindItem()、InsertItem()和SelectItem();與單行編輯器相似的有:ReplaceText()、SelectedLength()和SelectedStart()。B程序設(shè)計(jì)第7章高級(jí)窗口控7.2.1 下拉列表框與下拉圖片列表框下拉列表框與下拉圖片列表框 2.下拉圖片列表框 該列表框與下拉列表框相似,兩者的區(qū)別在于前者可以在列表項(xiàng)中同時(shí)顯示圖片和文

7、本,就像圖片列表一樣。實(shí)際上是圖片列表框與單行編輯器的組合,如圖74所示。 B程序設(shè)計(jì)第7章高級(jí)窗口控7.2.2 圖片(圖片(Picture)與圖片超鏈)與圖片超鏈接(接(PictureHyperLink) 1.圖片 PowerBuilder的圖片控件提供了對(duì)圖像的支持。利用圖片控件可以顯示BMP、RLE、JPG、GIF、WMF等格式的圖像,如圖75所示。B程序設(shè)計(jì)第7章高級(jí)窗口控7.2.2 圖片(圖片(Picture)與圖片超鏈)與圖片超鏈接(接(PictureHyperLink) 圖片的屬性如圖76所示,其中圖片文件名稱可以直接在PictureName編輯欄中輸入,也可以點(diǎn)擊其右側(cè)的“.”

8、按鈕進(jìn)行選擇。 B程序設(shè)計(jì)第7章高級(jí)窗口控7.2.2 圖片(圖片(Picture)與圖片超鏈)與圖片超鏈接(接(PictureHyperLink) 2.圖片超鏈接 圖片超鏈接控件是PowerBuilder提供的用于開(kāi)發(fā)“Internet”網(wǎng)絡(luò)應(yīng)用程序的控件,如圖77所示。B程序設(shè)計(jì)第7章高級(jí)窗口控7.2.2 圖片(圖片(Picture)與圖片超鏈)與圖片超鏈接(接(PictureHyperLink) 該控件訪問(wèn)“Internet”網(wǎng)絡(luò)是通過(guò)屬性中的URL(地址屬性)來(lái)實(shí)現(xiàn)的,如圖78所示。B程序設(shè)計(jì)第7章高級(jí)窗口控 7.2.3 統(tǒng)計(jì)圖(統(tǒng)計(jì)圖(Graph) 統(tǒng)計(jì)圖是一種用圖形來(lái)表示數(shù)據(jù)的控件,

9、具有直觀、形象和概括地表現(xiàn)數(shù)據(jù)的特點(diǎn),同時(shí)具有易于查看、統(tǒng)計(jì)和分析等優(yōu)點(diǎn),被各行各業(yè)廣泛使用。 1.統(tǒng)計(jì)圖的結(jié)構(gòu) 在實(shí)際應(yīng)用中經(jīng)常設(shè)計(jì)標(biāo)題(Title)、值軸(Value軸)、分類軸(Category軸)、序列(Series)、圖例(Legend)等,通過(guò)對(duì)這幾項(xiàng)的設(shè)置來(lái)改變圖形的外觀,從而適應(yīng)具體應(yīng)用的需要。B程序設(shè)計(jì)第7章高級(jí)窗口控 7.2.3 統(tǒng)計(jì)圖(統(tǒng)計(jì)圖(Graph) 2.統(tǒng)計(jì)圖的種類 PowerBuilder提供了17種統(tǒng)計(jì)圖,可以粗略劃分為平面圖形和立體圖形兩大類,也可以更細(xì)致地劃分為6類,即:條狀圖、列圖和線圖;餅圖;堆積圖;散點(diǎn)圖;三維圖;其他。圖79為條狀圖B程序設(shè)計(jì)第7章

10、高級(jí)窗口控 7.2.3 統(tǒng)計(jì)圖(統(tǒng)計(jì)圖(Graph) 3.統(tǒng)計(jì)圖的屬性 在屬性窗口中Graph控件的標(biāo)簽頁(yè)有四個(gè),分別用來(lái)設(shè)置常用屬性、軸屬性、文字屬性和其他屬性。如圖710所示為統(tǒng)計(jì)圖的General標(biāo)簽頁(yè)。B程序設(shè)計(jì)第7章高級(jí)窗口控 7.2.3 統(tǒng)計(jì)圖(統(tǒng)計(jì)圖(Graph) 4.函數(shù) Graph控件提供了豐富的函數(shù),用來(lái)控制數(shù)據(jù)的提取、外觀的調(diào)整以及與用戶的交互等,下面根據(jù)實(shí)際應(yīng)用情況介紹幾個(gè)常用函數(shù)的用法。 (1)AddCategory函數(shù) 為圖形控件添加一個(gè)分類軸,只有當(dāng)分類軸的數(shù)據(jù)類型為String時(shí)才可以使用該函數(shù)。 語(yǔ)法格式為: ControlName.AddCategory(C

11、ategoryName) 其中,ControlName為圖形名稱,CategoryName為要添加的分類軸名稱。返回值類型為整型,成功時(shí)值為新加分類軸的序號(hào);失敗時(shí)值為-1。例如:為圖形控件gr1添加名稱為“OK”的分類軸。 gr1.AddCategory(OK) B程序設(shè)計(jì)第7章高級(jí)窗口控 7.2.3 統(tǒng)計(jì)圖(統(tǒng)計(jì)圖(Graph) (2)AddSeries函數(shù) 為圖形控件添加一個(gè)系列軸。語(yǔ)法格式為: ControlName.AddSeries(SeriesName) 其中,SeriesName為要添加的軸名稱。函數(shù)執(zhí)行成功后,返回新添加的系列軸的索引號(hào),如果已經(jīng)有同名系列軸存在,則返回同名系

12、列軸的索引號(hào)。例如:為圖形控件gr1添加名稱為“123”的系列軸。 Integer Number Number=gr1.AddSeries(123) B程序設(shè)計(jì)第7章高級(jí)窗口控 7.2.3 統(tǒng)計(jì)圖(統(tǒng)計(jì)圖(Graph) (3)AddData函數(shù) 該函數(shù)可以向圖形控件的數(shù)據(jù)軸添加數(shù)據(jù)。語(yǔ)法格式為: ControlName.AddData(SeriesNumber,DatavalueCategoryValue) 其中,CategoryValue為添加數(shù)據(jù)在分類軸上的分類值。例如:添加數(shù)據(jù)300到圖形控件gr1的“123”系列軸。 Integer Number Number=gr1.FindSeri

13、es(123) gr1.AddData(Number,300)B程序設(shè)計(jì)第7章高級(jí)窗口控 7.2.3 統(tǒng)計(jì)圖(統(tǒng)計(jì)圖(Graph) 5.統(tǒng)計(jì)控件的編程 綜合前面所學(xué)的內(nèi)容,設(shè)計(jì)如圖711所示的統(tǒng)計(jì)圖。該統(tǒng)計(jì)圖為產(chǎn)品銷售情況一覽表,主要產(chǎn)品有“茶杯”、“地毯”和“毛巾”。B程序設(shè)計(jì)第7章高級(jí)窗口控 7.2.3 統(tǒng)計(jì)圖(統(tǒng)計(jì)圖(Graph) 分別將三種產(chǎn)品按第一季度、第二季度和第三季度劃分的不同銷售量利用條形圖來(lái)顯示。其操作步驟如下: (1)在PowerBuilder工作區(qū)中,創(chuàng)建窗口,名稱為w Graph。選擇窗口畫(huà)板菜單Insert.Control.Graph。這時(shí)將統(tǒng)計(jì)圖控件插入新建的w G

14、raph窗口中。B程序設(shè)計(jì)第7章高級(jí)窗口控 7.2.3 統(tǒng)計(jì)圖(統(tǒng)計(jì)圖(Graph) (2)在窗口畫(huà)板中添加靜態(tài)文本框st1(顯示形式),下拉列表框ddlb show(為下拉列表添加下拉選項(xiàng)),如圖712所示。B程序設(shè)計(jì)第7章高級(jí)窗口控 7.2.3 統(tǒng)計(jì)圖(統(tǒng)計(jì)圖(Graph)(3)編寫(xiě)代碼: 在窗口w Graph的Open事件中編寫(xiě)如下代碼 /當(dāng)運(yùn)行此窗口時(shí)統(tǒng)計(jì)圖將按下列設(shè)置在窗口中顯示gr1.Reset(All!)Integer Number Number=Gr1.Addseries(地毯) gr1.AddData(Number,800,1季度)gr1.AddData(Number,700

15、,2季度)gr1.AddData(Number,710,3季度)Number=Gr1.AddSeries(毛巾)gr1.AddData(Number,700,1季度)gr1.AddData(Number,900,2季度)gr1.AddData(Number,500,3季度)Number=Gr1.AddSeries(茶杯)gr1.AddData(Number,260,1季度)gr1.AddData(Number,400,2季度)gr1.AddData(Number,300,3季度)B程序設(shè)計(jì)第7章高級(jí)窗口控 7.2.3 統(tǒng)計(jì)圖(統(tǒng)計(jì)圖(Graph) 下拉列表的SelectionChanged事件

16、 .當(dāng)鼠標(biāo)選中某一種統(tǒng)計(jì)圖風(fēng)格時(shí),觸發(fā)該事件。并按該種風(fēng)格在左側(cè)的統(tǒng)計(jì)圖控.件中顯示其外觀。 Choose Case ddlb show.Text CaseArea3Dgr1.GraphType=Area3D! CaseAreaGraph gr1.GraphType=AreaGraph! CaseBar3DGraph gr1.GraphType=Bar3DGraph! CaseBar3DObjGraph gr1.GraphType=Bar3DObjGraph!CaseBarGraph gr1.GraphType=BarGraph! CaseBarStack3DObjGraph gr1.Grap

17、hType=BarStack3DObjGraph! B程序設(shè)計(jì)第7章高級(jí)窗口控 7.2.3 統(tǒng)計(jì)圖(統(tǒng)計(jì)圖(Graph)CaseBarStackGraph gr1.GraphType=BarStackGraph! CaseCol3DGraph gr1.GraphType=Col3DGraph! CaseCol3DObjGraph gr1.GraphType=Col3DObjGraph! CaseColGraph gr1.GraphType=ColGraph! CaseLine3D gr1.GraphType=Line3D! CaseLineGraph gr1.GraphType=LineGra

18、ph! CasePie3D gr1.GraphType=Pie3D! CasePieGraph gr1.GraphType=PieGraph!End ChooseB程序設(shè)計(jì)第7章高級(jí)窗口控7.2.4 富文本(富文本(RichTextEdit) 該控件是一個(gè)功能強(qiáng)大的編輯器,它的功能類似于MultilineEdit,也是一個(gè)多行編輯器。它不僅可以編輯純文本格式的文字,而且還可以使用Windows提供的字體、字號(hào)和顏色。其外觀如圖713所示。B程序設(shè)計(jì)第7章高級(jí)窗口控7.2.4 富文本(富文本(RichTextEdit) 1.屬性 富文本的General標(biāo)簽頁(yè)如圖714所示。在該標(biāo)簽頁(yè)中,可以設(shè)置

19、控件名稱、是否有橫縱向滾動(dòng)條和是否可以動(dòng)態(tài)調(diào)整控件的大小等屬性。B程序設(shè)計(jì)第7章高級(jí)窗口控7.2.4 富文本(富文本(RichTextEdit) 富文本的主要屬性在Document標(biāo)簽頁(yè)中設(shè)置,如圖715所示。在該標(biāo)簽頁(yè)中可以設(shè)置是否顯示標(biāo)尺、是否顯示工具欄以及是否顯示頁(yè)眉和頁(yè)腳等屬性。B程序設(shè)計(jì)第7章高級(jí)窗口控7.2.4 富文本(富文本(RichTextEdit)2.函數(shù) 富文本提供豐富的操作函數(shù),下面主要介紹較常用的富文本函數(shù):(1)SaveDocument函數(shù)該函數(shù)是將富文本控件中的內(nèi)容以.rtf或.txt格式保存起來(lái)。語(yǔ)法格式為: RteName.SaveDocument(,) 其中,

20、RteName為富文本控件名;為保存文件的名稱;為文件的類型,系統(tǒng)提供參數(shù)有!(.rtf格式)和!(.txt格式)。返回值類型為整型:1表示成功;-1表示不成功。例如:將富文本中的內(nèi)容以.txt格式保存到d:shenhuiproduct.txt內(nèi)的書(shū)寫(xiě)格式:Integer Number Number=rte1.SaveDocument(d:shenhuiproduct.txt,!)B程序設(shè)計(jì)第7章高級(jí)窗口控7.2.4 富文本(富文本(RichTextEdit) (2)SelectText函數(shù) 該函數(shù)的主要功能是在富文本控件中選擇一段特定位置的文本。語(yǔ)法格式為: RteName.SelectTe

21、xt(Fromline,F(xiàn)romchar,Toline,TocharBand) 其中,RteName為富文本控件名;Fromline為起始行號(hào);Fromchar為此行中的起始字符號(hào);Toline為結(jié)束行號(hào);Tochar為在此行中的結(jié)束字符號(hào);Band為選擇區(qū)域。 例如:選擇RichText控件中第三行第二個(gè)字符至第五行第四個(gè)字符的文本為: rte1.SelectText(3,2,5,4) B程序設(shè)計(jì)第7章高級(jí)窗口控7.2.4 富文本(富文本(RichTextEdit) (3)DataSource函數(shù) 該函數(shù)是在富文本控件中使用數(shù)據(jù)窗口中的數(shù)據(jù)。語(yǔ)法格式為: RteName.DataSource

22、(DwSource) 其中,RteName為富文本控件名稱;DwSource為數(shù)據(jù)窗口控件或存儲(chǔ)過(guò)程的名稱。B程序設(shè)計(jì)第7章高級(jí)窗口控7.2.4 富文本(富文本(RichTextEdit) 3.富文本應(yīng)用實(shí)例 根據(jù)以上所學(xué)的富文本基本知識(shí)創(chuàng)建如圖713所示的富文本。該例主要實(shí)現(xiàn)在PowerBuilder中運(yùn)行此窗口時(shí),可以像寫(xiě)字板一樣設(shè)置字體、字號(hào)和字的顏色等。在保存輸入內(nèi)容時(shí),可以選擇兩種不同的保存格式,還可以打印輸入的內(nèi)容B程序設(shè)計(jì)第7章高級(jí)窗口控7.2.5 OLE控件控件 OLE(對(duì)象鏈接與嵌入)是一種在應(yīng)用程序中鏈接其他應(yīng)用程序或控件的技術(shù)。利用OLE控件可以在窗口中嵌入OLE兼容的應(yīng)

23、用程序。 在PowerBuilder中,OLE應(yīng)用有兩種類型:一種是在PowerBuilder應(yīng)用程序中嵌入OLE兼容的其他應(yīng)用程序,另一種是在PowerBuilder應(yīng)用程序的窗口中添加OLE自定義控件。 例如可以在窗口中放置OLE控件,并定義該控件連接Microsoft公司的Word和Excel等應(yīng)用軟件,這樣就可以直接利用所鏈接的軟件做各種處理工作了。還可以把自定義控件(ActiveX控件)放置到窗口中,實(shí)現(xiàn)PowerBuilder標(biāo)準(zhǔn)控件無(wú)法實(shí)現(xiàn)的功能。B程序設(shè)計(jì)第7章高級(jí)窗口控7.2.5 OLE控件控件利用OLE控件調(diào)用畫(huà)圖的具體步驟: (1)新建一個(gè)窗口名稱為w OLE,然后在窗口

24、畫(huà)板中單擊菜單“Insert.Control.OLE”,彈出圖716所示對(duì)話框。B程序設(shè)計(jì)第7章高級(jí)窗口控7.2.5 OLE控件控件 (2)在彈出對(duì)話框中有三個(gè)標(biāo)簽頁(yè),功能分別如下: “Create New”標(biāo)簽頁(yè):創(chuàng)建或嵌入新的OLE對(duì)象。 “Create From File”標(biāo)簽頁(yè):選擇已經(jīng)存在的OLE對(duì)象。 “Insert Control”標(biāo)簽頁(yè):插入控件。B程序設(shè)計(jì)第7章高級(jí)窗口控7.2.5 OLE控件控件 (3)在三個(gè)標(biāo)簽頁(yè)中選擇第一個(gè)標(biāo)簽頁(yè)“Create New”,在所列的ObjectType中選擇位圖圖像,如圖716所示B程序設(shè)計(jì)第7章高級(jí)窗口控7.2.5 OLE控件控件單擊圖上

25、的“OK”按鈕,然后在要放置該控件的窗口畫(huà)板中單擊,畫(huà)圖將被打開(kāi),如圖717所示。B程序設(shè)計(jì)第7章高級(jí)窗口控7.2.5 OLE控件控件 (4)圖717中彈出的畫(huà)圖和在附件中我們使用的畫(huà)圖是一樣的,可以使用畫(huà)筆繪制我們所需要的圖形,如圖717所示。如果所需要的內(nèi)容已經(jīng)繪制完成即可關(guān)閉畫(huà)圖,這時(shí)在PowerBuilder中保存畫(huà)板中所畫(huà)的內(nèi)容。B程序設(shè)計(jì)第7章高級(jí)窗口控7.2.5 OLE控件控件 (5)如果在PowerBuilder畫(huà)板中OLE控件中的圖形沒(méi)畫(huà)完或還需要完善時(shí),在畫(huà)板中該控件上右擊,在彈出的菜單中選擇“Open”菜單項(xiàng),這時(shí)將重新彈出畫(huà)圖,繼續(xù)修改即可。 (6)保存該內(nèi)容,試運(yùn)行,

26、雙擊OLE控件,OLE服務(wù)器被激活,如圖718所示B程序設(shè)計(jì)第7章高級(jí)窗口控7.3 數(shù)據(jù)窗口控件數(shù)據(jù)窗口控件 7.3.1 使用數(shù)據(jù)窗口控件使用數(shù)據(jù)窗口控件 7.3.2 設(shè)置數(shù)據(jù)窗口控件的屬性設(shè)置數(shù)據(jù)窗口控件的屬性 7.3.3 數(shù)據(jù)窗口對(duì)象與數(shù)據(jù)窗口控?cái)?shù)據(jù)窗口對(duì)象與數(shù)據(jù)窗口控件的關(guān)聯(lián)件的關(guān)聯(lián) 7.3.4 操縱數(shù)據(jù)窗口的數(shù)據(jù)操縱數(shù)據(jù)窗口的數(shù)據(jù)B程序設(shè)計(jì)第7章高級(jí)窗口控7.3.1 使用數(shù)據(jù)窗口控件使用數(shù)據(jù)窗口控件在窗口上布置數(shù)據(jù)窗口控件的方法與第五章中布置其他控件的方法相同,如圖719所示。B程序設(shè)計(jì)第7章高級(jí)窗口控7.3.2 設(shè)置數(shù)據(jù)窗口控件的屬性設(shè)置數(shù)據(jù)窗口控件的屬性 數(shù)據(jù)窗口控件和其他窗口控件

27、一樣,也可以通過(guò)設(shè)置它的屬性,來(lái)改變它的外觀和動(dòng)作,使它能更方便地為數(shù)據(jù)處理服務(wù)。當(dāng)我們向窗口中放置了一個(gè)數(shù)據(jù)窗口控件或者選中了窗口上已有的控件后,畫(huà)板的“Properties”視圖中就顯示出了該數(shù)據(jù)窗口控件的屬性,如圖720屬性視窗所示。B程序設(shè)計(jì)第7章高級(jí)窗口控 7.3.3 數(shù)據(jù)窗口對(duì)象與數(shù)據(jù)窗口控件的關(guān)聯(lián) 在窗口畫(huà)板上新添加的數(shù)據(jù)窗口控件為空白框,預(yù)覽時(shí)沒(méi)有任何內(nèi)容。當(dāng)數(shù)據(jù)窗口控件要顯示數(shù)據(jù)庫(kù)中內(nèi)容時(shí)就需要與數(shù)據(jù)窗口對(duì)象關(guān)聯(lián), 其中有兩種方式: 1.靜態(tài)關(guān)聯(lián) (1)首先進(jìn)入窗口畫(huà)板,在窗口中插入一個(gè)新的數(shù)據(jù)窗口控件(在此之前已創(chuàng)建需要關(guān)聯(lián)的數(shù)據(jù)窗口對(duì)象)。B程序設(shè)計(jì)第7章高級(jí)窗口控 7.

28、3.3 數(shù)據(jù)窗口對(duì)象與數(shù)據(jù)窗口控件的關(guān)聯(lián) (2)在窗口畫(huà)板中右擊數(shù)據(jù)窗口控件,選擇彈出菜單中的“Properties”屬性,或選擇“Views.Properties”屬性,進(jìn)入圖720所示的屬性視窗。B程序設(shè)計(jì)第7章高級(jí)窗口控 7.3.3 數(shù)據(jù)窗口對(duì)象與數(shù)據(jù)窗口控件的關(guān)聯(lián) (3)在屬性視窗的General標(biāo)簽頁(yè)的DataObject編輯框中輸入所要關(guān)聯(lián)的數(shù)據(jù)窗口對(duì)象的名稱或者點(diǎn)擊右邊的“Browse.”按鈕,這時(shí)會(huì)彈出“Select Object”對(duì)話框,如圖721所示。B程序設(shè)計(jì)第7章高級(jí)窗口控 7.3.3 數(shù)據(jù)窗口對(duì)象與數(shù)據(jù)窗口控件的關(guān)聯(lián) (4)在彈出的對(duì)話框中選擇所需的數(shù)據(jù)窗口對(duì)象名稱,

29、然后單擊“OK”按鈕,返回到窗口畫(huà)板中,并保存所做的修改。 完成上述步驟之后,就將一個(gè)數(shù)據(jù)窗口對(duì)象與窗口中的一個(gè)數(shù)據(jù)窗口控件連接起來(lái)。這時(shí)在數(shù)據(jù)窗口控件中不再顯示空白,而是顯示數(shù)據(jù)窗口對(duì)象的標(biāo)題信息。B程序設(shè)計(jì)第7章高級(jí)窗口控 7.3.3 數(shù)據(jù)窗口對(duì)象與數(shù)據(jù)窗口控件的關(guān)聯(lián) 2.動(dòng)態(tài)關(guān)聯(lián) 除了可在數(shù)據(jù)窗口控件的屬性對(duì)話框中直接設(shè)置數(shù)據(jù)窗口控件所關(guān)聯(lián)的數(shù)據(jù)窗口對(duì)象外,在應(yīng)用程序中,也可以動(dòng)態(tài)地關(guān)聯(lián)數(shù)據(jù)窗口對(duì)象。 從上面設(shè)置屬性過(guò)程可知,數(shù)據(jù)窗口控件和數(shù)據(jù)窗口對(duì)象的關(guān)聯(lián)是利用了數(shù)據(jù)窗口控件的一個(gè)名為DataObject的屬性。B程序設(shè)計(jì)第7章高級(jí)窗口控 7.3.3 數(shù)據(jù)窗口對(duì)象與數(shù)據(jù)窗口控件的關(guān)聯(lián)

30、這個(gè)屬性的值是一個(gè)包含數(shù)據(jù)窗口對(duì)象名稱的字符串。在程序中,可以通過(guò)動(dòng)態(tài)地修改這個(gè)屬性的值來(lái)修改所關(guān)聯(lián)的數(shù)據(jù)窗口對(duì)象,即在所要修改的關(guān)聯(lián)數(shù)據(jù)窗口對(duì)象的事件中輸入下面的語(yǔ)句: DwControlName.DataObject=d objectname 例如: dw1.DataObject=d dd kehu name 是將數(shù)據(jù)窗口控件dw1中的數(shù)據(jù)窗口對(duì)象的名稱改為“d dd kehu name”。其中“d ddkehu name”是在數(shù)據(jù)窗口畫(huà)板中已創(chuàng)建的。 B程序設(shè)計(jì)第7章高級(jí)窗口控 7.3.4 操縱數(shù)據(jù)窗口的數(shù)據(jù) 1.幾個(gè)重要概念(1)緩沖區(qū) 數(shù)據(jù)窗口控件把從數(shù)據(jù)庫(kù)中檢索到的數(shù)據(jù)都存放到本地

31、計(jì)算機(jī)的內(nèi)存中,這塊內(nèi)存就是數(shù)據(jù)窗口控件的緩沖區(qū)。(2)編輯狀態(tài) 當(dāng)前緩沖區(qū)(Primary)和刪除緩沖區(qū)(Delete)為每一行和每一列的數(shù)據(jù)都維護(hù)了一個(gè)編輯狀態(tài)值(Edit Status Flag),這個(gè)狀態(tài)值是一個(gè)叫做DwItemStatus的枚舉類型值。該枚舉類型有四種類型:NotModified!、DataModified!、New!和NewModified!。B程序設(shè)計(jì)第7章高級(jí)窗口控 7.3.4 操縱數(shù)據(jù)窗口的數(shù)據(jù) (3)編輯控件 在PowerBuilder中,數(shù)據(jù)窗口使用編輯控件(Edit Control)來(lái)接收用戶的輸入。編輯控件是PowerBuilder內(nèi)部使用的一個(gè)控件。

32、我們不能修改它,只能通過(guò)GetText函數(shù)來(lái)獲得它的內(nèi)容。B程序設(shè)計(jì)第7章高級(jí)窗口控 7.3.4 操縱數(shù)據(jù)窗口的數(shù)據(jù) (4)有效性驗(yàn)證 在數(shù)據(jù)窗口的編輯控件上輸入了某個(gè)數(shù)據(jù)項(xiàng)的值后,當(dāng)用戶將焦點(diǎn)移到下一個(gè)可編輯字段上的時(shí)候,數(shù)據(jù)窗口就要對(duì)輸入的數(shù)據(jù)進(jìn)行有效性的檢查。 有效性驗(yàn)證主要是檢查用戶輸入的數(shù)據(jù)與數(shù)據(jù)窗口中該字段的類型是否匹配。B程序設(shè)計(jì)第7章高級(jí)窗口控 7.3.4 操縱數(shù)據(jù)窗口的數(shù)據(jù) 2.數(shù)據(jù)窗口控件的工作原理 當(dāng)數(shù)據(jù)窗口控件的內(nèi)容發(fā)生變化時(shí),PowerBuilder將按如下順序進(jìn)行檢查: 首先:檢查控件的文本是否是正確的數(shù)據(jù)類型,并轉(zhuǎn)換為對(duì)應(yīng)列的數(shù)據(jù)類型。例如當(dāng)前列的數(shù)據(jù)類型是一個(gè)數(shù)

33、值類型的數(shù)據(jù),那么PowerBuilder會(huì)把控件內(nèi)的文本自動(dòng)轉(zhuǎn)換成相應(yīng)的數(shù)據(jù)類型,出錯(cuò)就會(huì)觸發(fā)ItemError事件。B程序設(shè)計(jì)第7章高級(jí)窗口控 7.3.4 操縱數(shù)據(jù)窗口的數(shù)據(jù) 其次:如果控件內(nèi)的文本能夠轉(zhuǎn)換為相應(yīng)的數(shù)據(jù)類型,那么PowerBuilder會(huì)使用該列的有效性,對(duì)轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行有效性檢查。如果有效性檢查失敗的話,也會(huì)觸發(fā)ItemError事件。例如:如果當(dāng)前列要求訂貨最低數(shù)量為50,而用戶輸入30,那么就不能通過(guò)有效性規(guī)則的檢查。B程序設(shè)計(jì)第7章高級(jí)窗口控 7.3.4 操縱數(shù)據(jù)窗口的數(shù)據(jù) 最后:通過(guò)了上面的檢查之后,PowerBuilder就會(huì)觸發(fā)ItemChange事件。一般

34、在這個(gè)事件中用戶需輸入自己要檢查的一些規(guī)則B程序設(shè)計(jì)第7章高級(jí)窗口控 7.3.4 操縱數(shù)據(jù)窗口的數(shù)據(jù) 3.數(shù)據(jù)庫(kù)數(shù)據(jù)操縱函數(shù) (1)數(shù)據(jù)檢索 檢索數(shù)據(jù)使用的是Retrieve()函數(shù),Retrieve()的使用格式為: DwControlName.Retrieve(參數(shù)1,參數(shù)2) DwControlName是數(shù)據(jù)窗口控件的名稱B程序設(shè)計(jì)第7章高級(jí)窗口控 7.3.4 操縱數(shù)據(jù)窗口的數(shù)據(jù) (2)數(shù)據(jù)更新 更新數(shù)據(jù)使用Update函數(shù),其語(yǔ)法格式為: DataControlName.Update(Accept,ResetFlag) 其中Accept是一個(gè)布爾類型的參數(shù),用來(lái)表示數(shù)據(jù)窗口是否在執(zhí)行U

35、pdate函數(shù)操作之前自動(dòng)執(zhí)行AcceptText()函數(shù)。參數(shù)ResetFlag也是一個(gè)布爾類型的參數(shù),用來(lái)表示數(shù)據(jù)窗口是否自動(dòng)重設(shè)Update標(biāo)志。B程序設(shè)計(jì)第7章高級(jí)窗口控 7.3.4 操縱數(shù)據(jù)窗口的數(shù)據(jù) (3)InsertRow函數(shù) 該函數(shù)在數(shù)據(jù)窗口控件指定行前插入一行。語(yǔ)法格式為: Dwcontrol.InsertRow(Row) 其中,Dwcontrol是數(shù)據(jù)窗口控件名;Row指定在哪一行前面插入新行。當(dāng)Row為0時(shí)表示在最后一行插入一新行。函數(shù)返回值類型為整型,成功時(shí)返回新插入行的行號(hào);不成功時(shí)返回-1。B程序設(shè)計(jì)第7章高級(jí)窗口控 7.3.4 操縱數(shù)據(jù)窗口的數(shù)據(jù) (4)Delet

36、eRow函數(shù) 該函數(shù)將刪除數(shù)據(jù)窗口控件中指定行數(shù)據(jù)。語(yǔ)法格式: Dwcontrol.DeleteRow(Row) 其中,Dwcontrol為數(shù)據(jù)窗口控件名;Row為要?jiǎng)h除數(shù)據(jù)的行號(hào)。當(dāng)Row為0時(shí)表示刪除當(dāng)前行。函數(shù)返回值類型為整型,成功時(shí)返回1,不成功時(shí)返回-1。B程序設(shè)計(jì)第7章高級(jí)窗口控 7.3.4 操縱數(shù)據(jù)窗口的數(shù)據(jù) 4.緩沖區(qū)數(shù)據(jù)操縱函數(shù) (1)字段排序 如果對(duì)數(shù)據(jù)窗口對(duì)象內(nèi)的數(shù)據(jù)進(jìn)行重新排序,PowerBuilder提供了兩個(gè)函數(shù):SetSort()函數(shù)和Sort()函數(shù),格式分別為: DwControlName.SetSort(SortExpression)DwControlNam

37、e.Sort() 其中第一個(gè)函數(shù)是用戶用來(lái)指定排序表達(dá)式的,第二個(gè)函數(shù)是按第一個(gè)函數(shù)所指的排序表達(dá)式來(lái)排序的B程序設(shè)計(jì)第7章高級(jí)窗口控 7.3.4 操縱數(shù)據(jù)窗口的數(shù)據(jù) (2)數(shù)據(jù)檢索 過(guò)濾或檢索數(shù)據(jù)使用函數(shù)SetFilter()和Filter(),其語(yǔ)句格式分別為: dwControlName.SetFilter(Filter Expression)dwControlName.Filter() 其含義與SetSort()函數(shù)一樣。B程序設(shè)計(jì)第7章高級(jí)窗口控 7.3.4 操縱數(shù)據(jù)窗口的數(shù)據(jù) 5.數(shù)據(jù)行滾動(dòng)函數(shù) (1)Scroll函數(shù) 該函數(shù)是將數(shù)據(jù)窗口控件上編輯框的內(nèi)容,按指定方向和行數(shù)滾動(dòng)。語(yǔ)

38、法格式為: DwControlName.Scroll(Number) 其中,Number為滾動(dòng)的行數(shù),正值為向下滾動(dòng),負(fù)值為向上滾動(dòng)。返回值類型為整型,成功時(shí)返回控件第一行顯示的數(shù)據(jù)行號(hào);不成功時(shí)返回-1B程序設(shè)計(jì)第7章高級(jí)窗口控 7.3.4 操縱數(shù)據(jù)窗口的數(shù)據(jù) (2)ScrollToRow函數(shù) 該函數(shù)功能為滾動(dòng)到數(shù)據(jù)窗口控件的指定行,該函數(shù)改變行數(shù)但不改變列數(shù)。語(yǔ)法格式: DwControlName.ScrollToRow(Row) 其中,Row為指定的行號(hào),返回值類型為整型,成功時(shí)返回1;不成功時(shí)返回-1。B程序設(shè)計(jì)第7章高級(jí)窗口控 7.3.4 操縱數(shù)據(jù)窗口的數(shù)據(jù) (3)ScrollNex

39、tRow函數(shù) 該函數(shù)是將數(shù)據(jù)窗口控件中的內(nèi)容滾動(dòng)到下一行,該函數(shù)改變行數(shù)但不改變列數(shù)。語(yǔ)法格式為: DwControlName.ScrollNextRow() 返回值類型為整型,成功時(shí)返回顯示在數(shù)據(jù)窗口中第一個(gè)可見(jiàn)行的行號(hào);不成功時(shí)返回-1。與該函數(shù)相類似的函數(shù)為ScrollPriorRow函數(shù)(滾動(dòng)到上一行)和ScrollNextPage函數(shù)(滾動(dòng)到下一頁(yè)),其格式與該函數(shù)相近B程序設(shè)計(jì)第7章高級(jí)窗口控 7.3.4 操縱數(shù)據(jù)窗口的數(shù)據(jù) 6.數(shù)據(jù)行操作函數(shù)(1)GetRow函數(shù) 該函數(shù)為獲得數(shù)據(jù)窗口中當(dāng)前行的行號(hào)。語(yǔ)法格式為: DwControlName.GetRow() 返回值類型為整型,成

40、功時(shí)返回?cái)?shù)據(jù)窗口當(dāng)前行的行號(hào),如果沒(méi)有當(dāng)前行,函數(shù)返回0;不成功時(shí)返回-1B程序設(shè)計(jì)第7章高級(jí)窗口控 7.3.4 操縱數(shù)據(jù)窗口的數(shù)據(jù) (2)GetColumn函數(shù) 該函數(shù)為獲得數(shù)據(jù)窗口中當(dāng)前列的列號(hào)。語(yǔ)法格式為: DwControlName.GetColumn() 返回值類型為整型,成功時(shí)返回?cái)?shù)據(jù)窗口當(dāng)前列的列號(hào),如果沒(méi)有當(dāng)前列,函數(shù)返回0;不成功時(shí)返回-1。B程序設(shè)計(jì)第7章高級(jí)窗口控 7.3.4 操縱數(shù)據(jù)窗口的數(shù)據(jù) (3)RowCount函數(shù) 該函數(shù)返回?cái)?shù)據(jù)窗口當(dāng)前所顯示的行數(shù)。語(yǔ)法格式為:DwControlName.RowCount() 函數(shù)返回值類型為整型,成功時(shí)返回主緩沖區(qū)中數(shù)據(jù)行數(shù);不成功時(shí)返回-1。B程序設(shè)計(jì)第7章高級(jí)窗口控 7.3.4 操縱數(shù)據(jù)窗口的數(shù)據(jù) 7.數(shù)據(jù)項(xiàng)操縱函數(shù) (1)獲取數(shù)據(jù) 從指定的行和列獲取數(shù)據(jù),可使用PowerBuilder提供的GetItem系列函數(shù)。對(duì)于字符串、數(shù)字、日期、時(shí)間和小數(shù)等各個(gè)類型都有各自對(duì)應(yīng)的一個(gè)函數(shù)。每個(gè)函數(shù)都有同樣的數(shù)據(jù)類型,返回指定行和列的值。B程序設(shè)計(jì)第7章高級(jí)

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論