PB DataWindow 38個技巧參考模板_第1頁
PB DataWindow 38個技巧參考模板_第2頁
PB DataWindow 38個技巧參考模板_第3頁
PB DataWindow 38個技巧參考模板_第4頁
PB DataWindow 38個技巧參考模板_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、PB DataWindow 38個技巧1 使DataWindow列只能追加不能修改如何使DataWindow中的數(shù)據(jù)只能追加新記錄而不能修改,利用 Column 的 Protect 屬性可以很方便的做到這一點(diǎn),方法如下:將每一列的 Protect 屬性設(shè)置為:If( IsRowNew(), 0, 1) )在 PowerScript 中可以動態(tài)修改 Protect 屬性:dw_1.Modify("column_name_here.Protect='1tIf(IsRowNew(),0,1)'")這樣,DataWindow 中只有新追加的記錄可修改,而其他記錄是只

2、讀的。2 如何在DataWindow中實(shí)現(xiàn)列的自動折行我們在PowerBuilder應(yīng)用程序的開發(fā)過程中, 使用DataWindow時(shí), 經(jīng)常會遇到某列的數(shù)據(jù)太長, 不能同時(shí)全部顯示的情況. 若采用自動水平滾動, 操作起來又不夠簡便. 下面介紹一種方法, 實(shí)現(xiàn)列數(shù)據(jù)多行顯示, 即實(shí)現(xiàn)列數(shù)據(jù)的自動折行.具體步驟如下:1) 在DataWindow Painter中打開此DataWindow.2) 在需設(shè)定自動折行的列上雙擊鼠標(biāo), 彈開此列的屬性窗口.3) 選擇Position標(biāo)簽, 選中Autosize Height 多選框.4) 選擇Edit標(biāo)簽, 不選中Auto Horz Scroll多選框.

3、5) 單擊OK按鈕, 保存所做的修改.6) 點(diǎn)中Detail Band (即寫有Detail的灰色長帶), 單擊鼠標(biāo)右鍵, 選擇Properties. 菜單項(xiàng).7) 選中Autosize Height多選框.8) 單擊OK按鈕, 保存所做的修改.9) 保存此DataWindow.注意:連在一起的漢字(中間沒有標(biāo)點(diǎn)或空格分隔), 系統(tǒng)將認(rèn)為是一個單詞, 不會自動進(jìn)行折行. 3 在數(shù)據(jù)窗口中實(shí)現(xiàn)動畫要實(shí)現(xiàn)動畫,必須要有定時(shí)器,在數(shù)據(jù)窗口中已經(jīng)有了一個定時(shí)器,雙擊數(shù)據(jù)窗口將彈出的對話框,在Timer Interval中定義大于零的值就有定時(shí)器(可以精確到毫秒),有了這個定時(shí)器就可以實(shí)現(xiàn)動畫

4、了。比如要改變某字段的背景顏色,可設(shè)ackgound.color=RGB(Integer(Right(string(now(),'hhmmssf'),1)*256/10,Integer(Right(string(now(),'hhmmssf'),1)*256/10,0)當(dāng)然,您不僅可以改變背景顏色,而且可以改變字體等等任何屬性,使他可以動起來! 4 使數(shù)據(jù)窗口中的被選中行具有更好的外觀大家都知道,在選擇數(shù)據(jù)窗口中的某一行時(shí),如果使用pb提供的選擇函數(shù)SelectRow(),那么的外觀真是不能恭維,單調(diào)而古板的藍(lán)色背景,可能和您的漂亮而生動的應(yīng)用程序格格

5、不入。有沒有辦法改變呢?當(dāng)然有啰,請聽我慢慢道來。 改變某一行的背景比較簡單,改變每一列的背景屬性(backgroundcolor)即可,可要根據(jù)鼠標(biāo)選擇情況自動改變,并可以返回被選中的行可能還需要一定的技巧。下面分單行選擇和多行選擇分辨說明。單行選擇單行選擇比較簡單,我們只要將所有字段的背景色的表達(dá)式改為:if(GetRow()=CurrentRow(),RGB(255,126,0),RGB(0,0,0)其中第一個顏色為被選中的顏色,第二個顏色未被選中的顏色。2 / 22然后用GetRow()代替GetSelectedRow()函數(shù)來得到被選中的行。 多行選擇多行選擇比較復(fù)雜,如果

6、單純依靠改變數(shù)據(jù)窗口的屬性沒法實(shí)現(xiàn),我們必須使用數(shù)據(jù)窗口屬性和代碼結(jié)合起來才能實(shí)現(xiàn) 首先,改變數(shù)據(jù)窗口的SQL語句,增加一個計(jì)算字段:0 as flag,Select 語句改為:Select col1,col2 ,1 as flag from tablename where .,當(dāng)返回?cái)?shù)據(jù)窗口painter時(shí),您就會發(fā)現(xiàn)多了一個字段flag,我們就是利用這個字段保存行被選中的信息。其次,修改各個字段的背景顏色屬性,設(shè)置為:if(flag=1,RGB(255,126,0),RGB(255,255,255)第三:在數(shù)據(jù)窗口控件中,增加對clicked 事件的處理,代碼如下:if row<1

7、then return / setredraw(false)if this.o b j e c t.flagrow=1 then /如果該行被選中,撤銷選擇,否則選中該行this.Object.flagrow=0elsethis.Object.flagrow=1end ifsetredraw(true)您還可以定制本選中行的字體,文本屬性等等。原理相同,不再贅述。 5 將日期型字段初始化為當(dāng)天的日期 使用 Column Specifications 對話框來設(shè)置數(shù)據(jù)的初始值是一個比較好又比較通用的方法。 為了將日期型字段初始化為當(dāng)天的日期,只要設(shè)置初始化值為today,而不是toda

8、y()即可。同樣設(shè)置初始值為NUll,可以使用null,而不是 null()。 6 在DataWindow中調(diào)整列順序在 Gird 風(fēng)格的 DataWindow 中,列的排列順序是按照你選擇 Column 的順序排列的,并且不能改變.要改變列的順序則必須重新制作 DataWindow.最近我發(fā)現(xiàn)一個辦法可以改變列的順序: 在 DataWindow 畫板中打開要修改的 DataWindow,然后按 'Preview' 按鈕切換到預(yù)覽模式下,選擇要移動的列標(biāo)題并拖動到預(yù)定位置,然后返回 DataWindow 畫板,存盤即可. 7 Retrieve時(shí)不清除原有Da

9、tawindow數(shù)據(jù)當(dāng)你調(diào)用Retrieve函數(shù),PowerBuilder自動清除原有DataWindow然后Retrieve數(shù)據(jù)。在Datawindow RetrieveStart事件中,使用Return 2,這樣PowerBuilder不會清除原有數(shù)據(jù)而是追加新數(shù)據(jù)。 8 美化DataWindow的顯示效果使DataWindow 的單雙行顯示顏色不同,不僅僅可以使你的應(yīng)用程序更顯專業(yè)性,并使數(shù)據(jù)的可讀性增強(qiáng)。先調(diào)出你需要改動的DataWindow,在Detail band按下右鍵選擇Properties,選擇Tab頁中的Expressions,在color屬性中輸入下面內(nèi)容:(注

10、意是在Detail明細(xì)顯示 段按右鍵,而不是在Column上) IF(MOD(GETROW(),2)=0,RGB(192, 192, 192), RGB(255, 255, 255) 馬上Preview一下,看一看效果如何。 9 用Line建立漂亮的Grid DataWindow的技巧雖然PowerBuilder有Grid風(fēng)格的DataWindow,但不夠靈活,如果想打印一張邊框粗線條或雙線,內(nèi)框?yàn)榧?xì)線條的表格直接使用Grid風(fēng) 格的DataWindow就不能實(shí)現(xiàn)。因此許多人都用Tabular風(fēng)格的DataWindow,然后自己用Line來實(shí)現(xiàn)Grid。 在調(diào)整線條位置是一個即傷腦筋

11、又傷眼睛的事件,而一旦需要調(diào)整行高,所有工作都得重來,試一試用下面方法,會大大減輕你的工作量: 在vertical lines,改變它的屬性,在Expressions Tab上,y1行上輸入0,y2行上輸入rowheight() - 1 在horizontal lines, 設(shè)置 y1 和 y2 = rowheight() - 5 這樣PowerBuilder會自動調(diào)整線的坐標(biāo),你只需要設(shè)置橫線的長度和x1,x2的坐標(biāo)即可。 馬上Preview一下,看一看效果! 你再也不需要因?yàn)樾械母叨劝l(fā)生改變而重新調(diào)整線條位置。 10 如何創(chuàng)建一個報(bào)表,如下形式Quantity Running T

12、otal5,000 5,0002,500 7,5003,000 10,50012,000 22,500對于Running Total列,我們可使用計(jì)算列:CumulativeSum(Quantity for all),即可達(dá)到逐漸遞增求和的功能。11 數(shù)據(jù)窗口的數(shù)據(jù)送緩沖區(qū)之前確認(rèn)的四個步驟 判斷數(shù)據(jù)類型是否正確。如不正確則觸發(fā)ItemError事件。判斷數(shù)據(jù)是否符合有效性規(guī)則。如不符合有效性規(guī)則,同樣觸發(fā)ItemError事件。 判斷是否有數(shù)據(jù)被改動。判斷數(shù)據(jù)是否通過ItemChanged事件,如果數(shù)據(jù)和ItemChanged相斥,將觸發(fā)ItemError事件。12 如何在DataWindo

13、w中用數(shù)據(jù)類型為Datetime的列為條件進(jìn)行查找1當(dāng)要查找的日期條件是一常數(shù)時(shí)使用如下表達(dá)式:ls_Find = "datetime_col = DateTime ('1/1/1999')"2當(dāng)要查找的日期條件是一個變量時(shí)使用如下的表達(dá)式:ls_Find = "datetime_col = DateTime ('" + ls_Date + "')"3當(dāng)要查找的日期條件是一個DateTime數(shù)據(jù)類型時(shí)使用如下表達(dá)式:ls_Find = "datetime_col = DateTime (

14、9;" + String (ldt_DateTime) + "')"13 設(shè)置數(shù)據(jù)窗口Boolean型屬性的三種方法PowerBuilder提供了三種方法設(shè)置數(shù)據(jù)窗口的布爾型屬性,分別是True/False, 1/0, 'Yes'/'No'。例如:dw_1.Object.address.Visible = 0 dw_1.Object.address.Visible = False dw_1.Object.address.Visible = 'No'PowerBuilder在處理上以字符串的形式保存屬性,而不考

15、慮屬性值是布爾型、長整型或是字符型。為了進(jìn)一步理解,可以導(dǎo)出一個數(shù)據(jù)窗口并查看它的原碼,可以發(fā)現(xiàn)即使是列的顏色屬性它也是使用帶雙引號的數(shù)字來表達(dá)。14 如何在DataWindow中快速刪除多行在開發(fā)過程中可能經(jīng)常有要進(jìn)行多行刪除的操作,一般都使用循環(huán)語句進(jìn)行操作:FOR ll_RowOn = 1 TO dw_1.RowCount() dw_1.DeleteRow(ll_RowOn) NEXT一個快速的刪除方法是把要刪除的行從主緩沖區(qū)中移到刪除緩沖區(qū)中。例如,刪除緩沖區(qū)中所有的行:dw_1.RowsMove(dw_1, 1, dw_1.RowCount, Primary!, dw_1, 1, D

16、elete!)不過不要忘了過濾的行在不同的緩沖區(qū)中。15 如何在DataWindow的SQL語法中不使用SELECT DISTINCT實(shí)現(xiàn)刪除重復(fù)的行起先對你要顯示唯一值的列進(jìn)行排序:"city A",然后增加如下過濾字符串:" city < > city -1 or GetRow () = 1"16 如何在分組形式的DataWindow中分別顯示各組的行號當(dāng)我們?yōu)镈atawindow的每一行顯示行號時(shí),可以簡單的放一個表達(dá)式為GetRow()計(jì)算列。但是對于分組的Datawindow,要分別顯示各組的行號,則應(yīng)使用表達(dá)式為GetRow()

17、- First(GetRow() for Group 1) + 1的計(jì)算列。17 如何改變列的字體顏色,提醒用戶此列已做修改在列的Color屬性中,輸入如下表達(dá)式IF (column_name < >column_name.Original, RGB(255, 0, 0), RGB(0, 0, 0)。在這個條件中,如果此列已改變,則顯示紅色字體,否則顯示黑色字體。這個表達(dá)式主要用column_name < > column_name.Original比較當(dāng)前列的值和原始列的值是否相同來達(dá)到判斷的目的。18 在數(shù)據(jù)窗口中移走行,但不是去做過濾或刪除操作RowsDiscar

18、d()函數(shù)可做到這一點(diǎn),它在數(shù)據(jù)窗口中執(zhí)行移除工作,但被移走的行它不可被刪除或做任何修改性的保存。 19 如何在多行顯示的DataWindow 中的Footer Band中顯示當(dāng)前數(shù)據(jù)的首行和最后行的行號我們先看兩個計(jì)算列的表達(dá)式: IF (GetRow() = First(GetRow() FOR Page), 1, 0) / 1 為當(dāng)前頁的第一行IF (GetRow() < > 1 AND GetRow() = Last(GetRow() FOR Page), 1, 0) / 1 為當(dāng)前頁的最后一行由上面可知,在Footer Band中設(shè)置如下計(jì)算列表達(dá)式:'

19、Rows ' + String(First(GetRow() FOR Page) + ' to ' + String(Last(GetRow() FOR Page) + ' are displayed'。即可達(dá)到這項(xiàng)功能。 20 使可編輯的數(shù)據(jù)窗口只讀有時(shí),你可能需要將一個用于編程的數(shù)據(jù)窗口用作顯示目的,可以有以下幾種方法來實(shí)現(xiàn)這一要求:1.建立兩個數(shù)據(jù)窗口,一個用于編輯,一個用于顯示2.將數(shù)據(jù)窗口中的全部對象的taborder設(shè)置為0.3.也可以將數(shù)據(jù)窗口中的列的protect屬性設(shè)為On或Off,但你不能使用protect屬性進(jìn)行編輯操作4

20、.數(shù)據(jù)窗口有一個將datawindow設(shè)為只讀的屬性(readonly),使用它最方便。 21 數(shù)據(jù)窗口檢查重復(fù)行dw_1.SetSort ("user_id A")dw_1.Sort()dw_1.SetFilter ("user_id = user_id-1")dw_1.Filter()if dw_1.RowCount() > 0 then  Messagebox("注意", "用戶編碼重復(fù).")end ifdw_1.SetFilter ("")dw_1.Filter

21、() 22 如何在分組形式的DataWindow中分別顯示各組的行號- 當(dāng)我們?yōu)镈atawindow的每一行顯示行號時(shí),可以簡單的放一個表達(dá)式為GetRow()- 計(jì)算列。但是對于分組的Datawindow,要分別顯示各組的行號,則應(yīng)使用表達(dá)式為GetRow() - First(GetRow() for Group 1) + 1的計(jì)算列。 23 如何能讓數(shù)據(jù)窗口的某幾列在其他列橫拉時(shí)固定不動      /  功能說明:用于凍結(jié)左邊的滾動欄/  變更記錄: 變更或版本更新的時(shí)候/  /i

22、nt iif pane = 1 theni = integer(this.o b j e c t.datawindow.horizontalscrollposition2)if i < 1 or isnull(i) then returnif scrollpos > 0 thenthis.o b j e c t.datawindow.horizontalScrollPosition = 0end ifelsei = integer(this.Object.DataWindow.HorizontalScrollSplit)if i < 1 or isnull(i) then r

23、eturnif i > scrollpos thenthis.o b j e c t.datawindow.horizontalScrollPosition2 = iend ifend if 24 在數(shù)據(jù)窗口中如果要使其中一列的屬性為只讀,也就是不允許用戶修改,那么只需簡單地將這一列的Table Order 設(shè)置成0就可。然而,在有些情況下需要對這一列的某些行修改,而某些行不能修改,這就要用到這一列的protect屬性了。打開列的屬性中的Expressions,在protect中輸入條件判別式。例如:允許用戶修改新增加的記錄,而檢索出來的記錄則不允許修改。條件判別式可以寫成如下

24、:if(isRowNew(),0,1) 在 PowerScript 中可以動態(tài)修改 Protect 屬性:dw_1.Modify("column_name_here.Protect='1tIf(IsRowNew(),0,1)'")這樣,DataWindow 中只有新追加的記錄可修改,而其他記錄是只讀的。 25 控制DATAWINDOW里每頁顯示的行數(shù)1、在Datawindow中增加一個計(jì)算域,起名為:ceil_page,此計(jì)算域必須放在Detail段中,Expression中輸入 ceiling(getrow()/25) 25表示每頁打印

25、25行,也可以是一個參數(shù)。2、分組,選擇菜單RowsCreate Group,選擇ceil_page按ceil_page分組,并選中New Page On Group Break(意思是新組開始時(shí)換頁)。3、將此計(jì)算域設(shè)為隱藏(在屬性頁中的expression頁中在visible屬性中寫0)。4、補(bǔ)空行:在窗口的open事件中寫如下代碼:long li_count,li_ili_count=dw_1.retrieve()if mod(li_count,25)<>0 thenfor li_i=1 to 25 - mod(li_count,25)dw_1.insertrow(0)nex

26、tend if 26 數(shù)據(jù)窗口的closeQuery事件:提示保存數(shù)據(jù)dw_1.AcceptText()IF dw_1.ModifiedCount() + dw_1.DeletedCount() > 0 THENCHOOSE CASE MessageBox("操作提示","數(shù)據(jù)已經(jīng)發(fā)生變化,是否保存?",Question!,YesNoCancel!,1)CASE 1cb_save.TriggerEvent(clicked!)CASE 2Return 0/不做任何操作直接關(guān)閉窗口CASE 3Return 1/不會運(yùn)行Close Event,

27、維持原來的情況END CHOOSEEND IF27 Getchild函數(shù)主要被用來得到一個數(shù)據(jù)窗口的子數(shù)據(jù)窗口該函數(shù)在兩種情況下可以使用,1、取出數(shù)據(jù)窗口對象的下拉式數(shù)據(jù)窗口;                            2、取出復(fù)合風(fēng)格(composite)數(shù)據(jù)窗口對象里所嵌入的子數(shù)據(jù)窗口對象。語法:integer

28、dwcontrol.GetChild (string name, REF DataWindowChild     dwchildvariable )例子1  這段程序取出一個composite數(shù)據(jù)窗口對象的兩個子數(shù)據(jù)窗口,并對他們進(jìn)行過濾,和排序的操作。/*dw_dy是連接一個composite數(shù)據(jù)窗口對象的一個數(shù)據(jù)窗口控件。dw_1、dw_2分別是嵌套的數(shù)據(jù)窗口的NAME*/String ls_filterDataWindowChild dwc_czrw,dwc_czx/定義子數(shù)據(jù)窗口變量dw_dy.Settranso b j e c t(s

29、qlca)dw_dy.Retrieve()dw_dy.GetChild("dw_2",dwc_czrw)dw_dy.Getchild("dw_1",dwc_czx)ls_filter = "czrw_bh = '"+dw_3.GetItemString(dw_3.GetRow(),"czrw_bh")+"'"/過濾條件dwc_czrw.SetFilter(ls_filter)dwc_czrw.Filter()ls_filter = "czx_rwbh = '&q

30、uot;+dw_3.GetItemString(dw_3.GetRow(),"czrw_bh")+"'"dwc_czx.SetSort("czx_sx A")dwc_czx.Sort()dwc_czx.SetFilter(ls_filter)dwc_czx.filter()當(dāng)然也可以通過數(shù)據(jù)共享(ShareData)等方式操作子數(shù)據(jù)窗口中的數(shù)據(jù)。訪問復(fù)合數(shù)據(jù)窗口對象.方法 :dw_dy.o b j e c t.dw_1.o b j e c t.對象例子2   下拉數(shù)據(jù)窗口動態(tài)過濾  在數(shù)據(jù)窗口dw

31、_1的ItemFocusChanged事件中寫入如下腳本:Integer rtncodeString ls_nowFld,ls_deptid,ls_sqlDataWindowChild fld_childrtncode = dw_1.GetChild("Unit_id",fld_child) /獲得Unit_id字段名下拉數(shù)據(jù)窗口的句柄If rtncode = -1 Then MessageBox("錯誤!", "不是下拉數(shù)據(jù)窗口!")fld_child.SetTransObject(SQLCA) /設(shè)置事務(wù)對象ls_sql = Lo

32、wer(fld_child.GetSQLSelect()/ 獲得DDDW的SQL語句/ 去除Sql 語句中的Where條件子句, 如原Sql 語句中須有Where條件子句,此處則需進(jìn)行較/復(fù)雜的處理,應(yīng)視具體情況而定。if Pos(ls_sql, " where ")>0 then ls_sql = Left(ls_sql,Pos(ls_sql, " where ")/重新設(shè)置Sql 語句中的Where條件子句ls_deptid=dw_1.Object.dept_idGetRow() /取得當(dāng)前dept_id選定值ls_sql = ls_sql +

33、 " Where dept_id = '" +Trim(ls_deptid)+"'"/重新設(shè)置Sql 語句fld_child.SetSQLSelect(ls_sql)fld_child.Retrieve()/取得滿足條件的數(shù)據(jù) 28 從數(shù)據(jù)窗口中獲取數(shù)據(jù)   單條:假設(shè)我們要讀取dept_id字段的第一筆數(shù)據(jù),可以用下列方式表示li_id = dw_1.o b j e c t.dept_id1 假設(shè)我們要讀取第一行中第二個字段的數(shù)據(jù),可以用下列方式表示ls_name = dw_1.o b j e c

34、 t.DATA1,2 假設(shè)我們要讀取dept_id字段的所有數(shù)據(jù),可以用下列方式表示li_array = dw_1.o b j e c t.dept_id.CURRENT 假設(shè)我們要讀取過濾緩沖區(qū) (filter buffer) 內(nèi)dept_id字段的第一筆數(shù)據(jù),可以用下列方式表示li_id = dw_1.o b j e c t.dept_id.Filter1 假設(shè)我們要讀取從第二筆數(shù)據(jù)的第一個字段到第三筆數(shù)據(jù)的二個字段之間的數(shù)據(jù),表示lstr_array = dw_1.o b j e c t.DATA2,1,3,2 假設(shè)我們要讀取整個第二筆的數(shù)據(jù),可以

35、用下列方式表示lstr_dept = dw_1.o b j e c t.DATA2       使用GetItemX ( )函數(shù)  x為string number等   lstr_name = dw_1.getitemstring (li_count , "emp_name")  li_count為哪一條  多條:string ls_name        ls_name = dw_ 1.o b j e c

36、 t.emp_name.current數(shù)據(jù)的讀取   一般格式數(shù)據(jù)窗口控件.Retrieve ( )  返回個數(shù) ,-1為錯誤增加數(shù)據(jù)    數(shù)據(jù)窗口控件.InsertRow (行數(shù))   參數(shù)為0加到最后數(shù)據(jù)的刪除        數(shù)據(jù)窗口控件.Deleterow (行數(shù))數(shù)據(jù)的過濾l   數(shù)據(jù)窗口控件.SetFilter (條件字符串).     數(shù)據(jù)窗口控件.Filter ( ) 用

37、法將主要緩沖區(qū) (Primary Buffer) 內(nèi)不符合過濾條件的數(shù)據(jù)移到過濾緩沖區(qū) (Filter Buffer)內(nèi)。             例子:string ls_exp   ls_exp = "dept_id = 100"   dw_1.SetFilter (ls_exp)      dw_1.Filter ( )排序   

38、dw_1.SetSort ("dept_id")     dw_1.Sort ( )將數(shù)據(jù)從所有的緩沖區(qū) (Buffer) 中清除    dw_1.ReSet ( )計(jì)算數(shù)據(jù)數(shù)目。例如dw_1.Rowcount ( )  類似: .DeletedCount ( ) .ModifiedCount ( ) .FilteredCount ( )數(shù)據(jù)窗口的滾動  數(shù)據(jù)窗口控件.ScrollToRow (行數(shù)) 29 數(shù)據(jù)窗口屬性改變:   描述數(shù)據(jù)窗口對象本身顏色

39、,可以表示如下long ll_color    ll_color = dw_emplist.Describe ("DataWindow.Color")    描述數(shù)據(jù)窗口對象內(nèi)標(biāo)題 dept_id_t 的顏色,可以表示如下long ll_color   ll_color = dw_emplist.Describe ("dept_id_t.Color")    修改數(shù)據(jù)窗口對象本身顏色,可以表示如下:dw_emplist.Modify ("

40、;DataWindow.Color = 255")    修改數(shù)據(jù)窗口對象內(nèi)標(biāo)題 dept_id 的顏色,可以表示如下dw_emplist.Modify ("dept_id_t.Color = 255")    假設(shè)當(dāng)我們希望在程序運(yùn)行階段才給予下行條件薪水超過 50000 時(shí)顯示紅色,低于 50000 時(shí)顯示黑色。程序的寫法如下       ls_modstring = "Salary.Color = '0tIf (Salar

41、y > 50000,255,0) '"       dw_1.modify (ls_modstring) 30 得到當(dāng)前鼠標(biāo)所指對象所在的帶區(qū) string str_band str_band=GetBandAtPointer() /得到當(dāng)前鼠標(biāo)所指對象所在的帶區(qū) str_band=left(str_band,(pos(str_band,'t') - 1)/得到"header"、"detail"等 

42、0;      if str_band<>'header' then return /單擊非頭區(qū),退出31 得到鼠標(biāo)指向的列對象名 str_o b j e c t=GetObjectAtPointer() /得到當(dāng)前鼠標(biāo)所指對象名 str_o b j e c t=left(str_o b j e c t,(pos(str_o b j e c t,'t') - 1)        /得到列對象名(默認(rèn)為列名_t為列

43、標(biāo)題) str_column=left(str_o b j e c t,(len(str_title) - 2) /判斷該名稱是否為列名字 if this.describe(str_column+".band")='!' then return /非是列名,即列標(biāo)題不是按正常規(guī)律起名的。                    

44、60;                                        32 得到當(dāng)前行、列,總行、列  /this 針對數(shù)據(jù)窗口而言   

45、60;    li_col      = this.GetColumn()        li_ColCount = long(describe(this,"datawindow.column.count")        ll_row    = this.GetRow()   ll_RowCount = t

46、his.RowCount()       /設(shè)置當(dāng)前行、列       scrolltorow(this,ll_Row)       setrow(this,ll_Row)       setcolumn(this,li_col)       this.SetFocus()33 得到所有列標(biāo)題

47、60;ll_colnum = Long(dw_1.o b j e c t.datawindow.column.count)        for i = 1 to ll_colnum  /得到標(biāo)題頭的名字  ls_colname = dw_1.describe('#' + string(i) + ".name") + "_t"           ls

48、_value = dw_1.describe(ls_colname + ".text") next34 如何用代碼取得數(shù)據(jù)窗口匯總帶計(jì)算列的值?   String ls_value ls_value = dw_1.Describe("Evaluate("'compute_1',1)") 如果是數(shù)值型,要轉(zhuǎn)換。 35 取得單擊的列標(biāo)題、列名、數(shù)據(jù)庫字段名string ls_dwolong ll_posstring ls_typestring ls_titlestring

49、ls_columnstring ls_dbnameif Not KeyDown(KeyControl!) then  returnls_dwo = dwo.Nameif trim(ls_dwo) = '' or isnull(ls_dwo) then returnls_type = This.describe(ls_dwo + '.type')if ls_type = 'column' then ls_title =  This.describe(ls_dwo + '_t.text')/標(biāo)題 

50、;ls_column = This.describe(ls_dwo + '.Name')  /數(shù)據(jù)窗口列名 ls_dbname = This.describe(ls_dwo + '.dbname') /數(shù)據(jù)庫中字段名 messagebox('信息',    '標(biāo) 題 文 本   :' + ls_title + &       'rn數(shù)據(jù)窗口列名  :' + ls_column + &       'rn數(shù)據(jù)庫中字段名:' + ls_dbname )end if36 窗口為w_gcde內(nèi),放入一個DW_1,如何得到dw_1內(nèi)的某列值yuonghu_id列的內(nèi)容方法:long lng_column_count   integer i 

溫馨提示

  • 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

提交評論