




已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
DataWindow 進階介紹 Describe 語法 dwcontrol Describe stringpropertylist 範例 dw 1 Describe DataWindow Table Select 以上語句取得DW的SQL語法 Modify 語法 dwcontrol Modify stringpropertylist 範例 dw 1 Modify DataWindow Color 255 以上語句修改DW顏色 1使DataWindow列只能追加不能修改 如何使DataWindow中的資料只能追加新記錄而不能修改 利用Column的Protect屬性可以很方便的做到這一點 方法如下 將每一列的Protect屬性設置為 If IsRowNew 0 1 在PowerScript中可以動態(tài)修改Protect屬性 dw 1 Modify column name here Protect 1 tIf IsRowNew 0 1 這樣 DataWindow中只有新追加的記錄可修改 而其他記錄是唯讀的 2如何在DataWindow中實現列的自動折行 我們在PowerBuilder應用程式的開發(fā)過程中 使用DataWindow時 經常會遇到某列的資料太長 不能同時全部顯示的情況 若採用自動水準滾動 操作起來又不夠簡便 下面介紹一種方法 實現列資料多行顯示 即實現列資料的自動折行 具體步驟如下 1 在DataWindowPainter中打開此DataWindow 2 在需設定自動折行的列上雙擊滑鼠 彈開此列的屬性視窗 3 選擇Position標籤 選中AutosizeHeight多選框 4 選擇Edit標籤 不選中AutoHorzScroll多選框 5 單擊OK按鈕 保存所做的修改 2如何在DataWindow中實現列的自動折行 6 點中DetailBand 即寫有Detail的灰色長帶 單擊滑鼠右鍵 選擇Properties 菜單項 7 選中AutosizeHeight多選框 8 單擊OK按鈕 保存所做的修改 9 保存此DataWindow 注意 連在一起的漢字 中間沒有標點或空格分隔 系統(tǒng)將認為是一個單詞 不會自動進行折行 3在資料視窗中實現動畫 要實現動畫 必須要有計時器 在資料視窗中已經有了一個計時器 雙擊資料視窗將彈出的對話方塊 在TimerInterval中定義大於零的值就有計時器 可以精確到毫秒 有了這個計時器就可以實現動畫了 比如要改變某欄位的背景顏色 可設backgound color RGB Integer Right string now hhmmssf 1 256 10 Integer Right string now hhmmssf 1 256 10 0 當然 您不僅可以改變背景顏色 而且可以改變字體等等任何屬性 4使資料視窗中的被選中行具有更好的外觀 大家都知道 在選擇資料視窗中的某一行時 如果使用pb提供的選擇函數SelectRow 那麼的外觀真是不能恭維 單調而古板的藍色背景 可能和您的漂亮而生動的應用程式格格不入 有沒有辦法改變呢 當然有囉 請聽我慢慢道來 改變某一行的背景比較簡單 改變每一列的背景屬性 backgroundcolor 即可 可要根據滑鼠選擇情況自動改變 並可以返回被選中的行可能還需要一定的技巧 下面分單行選擇和多行選擇分辨說明 單行選擇單行選擇比較簡單 我們只要將所有欄位的背景色的運算式改為 if GetRow CurrentRow RGB 255 126 0 RGB 0 0 0 其中第一個顏色為被選中的顏色 第二個顏色未被選中的顏色 然後用GetRow 代替GetSelectedRow 函數來得到被選中的行 4使資料視窗中的被選中行具有更好的外觀 多行選擇多行選擇比較複雜 如果單純依靠改變資料視窗的屬性沒法實現 我們必須使用資料視窗屬性和代碼結合起來才能實現首先 改變資料視窗的SQL語句 增加一個計算欄位 0asflag Select語句改為 Selectcol1 col2 1asflagfromtablenamewhere 當返回資料視窗painter時 您就會發(fā)現多了一個欄位flag 我們就是利用這個欄位保存行被選中的資訊 其次 修改各個欄位的背景顏色屬性 設置為 if flag 1 RGB 255 126 0 RGB 255 255 255 第三 在資料視窗控制項中 增加對clicked事件的處理 代碼如下 4使資料視窗中的被選中行具有更好的外觀 ifrow 1thenreturn setredraw false ifthis object flag row 1then 如果該行被選中 撤銷選擇 否則選中該行this Object flag row 0elsethis Object flag row 1endifsetredraw true 您還可以定制本選中行的字體 文本屬性等等 原理相同 不再贅述 5將日期型欄位初始化為當天的日期 使用ColumnSpecifications對話方塊來設置資料的初始值是一個比較好又比較通用的方法 為了將日期型欄位初始化為當天的日期 只要設置初始化值為today 而不是today 即可 同樣設置初始值為NUll 可以使用null 而不是null 6在DataWindow中調整列順序 在Gird風格的DataWindow中 列的排列順序是按照你選擇Column的順序排列的 並且不能改變 要改變列的順序則必須重新製作DataWindow 最近我發(fā)現一個辦法可以改變列的順序 在DataWindow畫板中打開要修改的DataWindow 然後按 Preview 按鈕切換到預覽模式下 選擇要移動的列標題並拖動到預定位置 然後返回DataWindow畫板 存檔即可 7Retrieve時不清除原有Datawindow資料 當你調用Retrieve函數 PowerBuilder自動清除原有DataWindow然後Retrieve資料 在DatawindowRetrieveStart事件中 使用Return2 這樣PowerBuilder不會清除原有資料而是追加新資料 8美化DataWindow的顯示效果 使DataWindow的單雙行顯示顏色不同 不僅僅可以使你的應用程式更顯專業(yè)性 並使資料的可讀性增強 先調出你需要改動的DataWindow 在Detailband按下右鍵選擇Properties 選擇Tab頁中的Expressions 在color屬性中輸入下面內容 注意是在Detail明細顯示段按右鍵 而不是在Column上 IF MOD GETROW 2 0 RGB 192 192 192 RGB 255 255 255 馬上Preview一下 看一看效果如何 9用Line建立漂亮的GridDataWindow的技巧 雖然PowerBuilder有Grid風格的DataWindow 但不夠靈活 如果想列印一張邊框粗線條或雙線 內框為細線條的表格直接使用Grid風格的DataWindow就不能實現 因此許多人都用Tabular風格的DataWindow 然後自己用Line來實現Grid 在調整線條位置是一個即傷腦筋又傷眼睛的事件 而一旦需要調整行高 所有工作都得重來 試一試用下面方法 會大大減輕你的工作量 在verticallines 改變它的屬性 在ExpressionsTab上 y1行上輸入0 y2行上輸入rowheight 1在horizontallines 設置y1和y2 rowheight 5這樣PowerBuilder會自動調整線的座標 你只需要設置橫線的長度和x1 x2的座標即可 馬上Preview一下 看一看效果 你再也不需要因為行的高度發(fā)生改變而重新調整線條位置 10如何創(chuàng)建一個報表 如下形式 QuantityRunningTotal5 0005 0002 5007 5003 00010 50012 00022 500對於RunningTotal列 我們可使用計算列 CumulativeSum Quantityforall 即可達到逐漸遞增求和的功能 11資料視窗的資料送緩衝區(qū)之前確認的四個步驟 判斷資料類型是否正確 如不正確則觸發(fā)ItemError事件 判斷資料是否符合有效性規(guī)則 如不符合有效性規(guī)則 同樣觸發(fā)ItemError事件 判斷是否有資料被改動 判斷資料是否通過ItemChanged事件 如果資料和ItemChanged相斥 將觸發(fā)ItemError事件 12如何在DataWindow中用資料類型為Datetime的列為條件進行查找 1 當要查找的日期條件是一常數時使用如下運算式 ls Find datetime col DateTime 1 1 1999 2 當要查找的日期條件是一個變數時使用如下的運算式 ls Find datetime col DateTime ls Date 3 當要查找的日期條件是一個DateTime資料類型時使用如下運算式 ls Find datetime col DateTime String ldt DateTime 13設置資料視窗Boolean型屬性的三種方法 PowerBuilder提供了三種方法設置資料視窗的布林型屬性 分別是True False 1 0 Yes No 例如 dw 1 Object address Visible 0dw 1 Object address Visible Falsedw 1 Object address Visible No PowerBuilder在處理上以字串的形式保存屬性 而不考慮屬性值是布林型 長整型或是字元型 為了進一步理解 可以導出一個資料視窗並查看它的原碼 可以發(fā)現即使是列的顏色屬性它也是使用帶雙引號的數字來表達 14如何在DataWindow中快速刪除多行 在開發(fā)過程中可能經常有要進行多行刪除的操作 一般都使用迴圈語句進行操作 FORll RowOn 1TOdw 1 RowCount dw 1 DeleteRow ll RowOn NEXT一個快速的刪除方法是把要刪除的行從主緩衝區(qū)中移到刪除緩衝區(qū)中 例如 刪除緩衝區(qū)中所有的行 dw 1 RowsMove dw 1 1 dw 1 RowCount Primary dw 1 1 Delete 不過不要忘了過濾的行在不同的緩衝區(qū)中 15如何在DataWindow的SQL語法中不使用SELECTDISTINCT實現刪除重複的行 起先對你要顯示唯一值的列進行排序 cityA 然後增加如下過濾字串 citycity 1 orGetRow 1 16如何在分組形式的DataWindow中分別顯示各組的行號 當我們?yōu)镈atawindow的每一行顯示行號時 可以簡單的放一個運算式為GetRow 計算列 但是對於分組的Datawindow 要分別顯示各組的行號 則應使用運算式為GetRow First GetRow forGroup1 1的計算列 17如何改變列的字體顏色 提醒用戶此列已做修改 在列的Color屬性中 輸入如下運算式IF column namecolumn name Original RGB 255 0 0 RGB 0 0 0 在這個條件中 如果此列已改變 則顯示紅色字體 否則顯示黑色字體 這個運算式主要用column namecolumn name Original比較當前列的值和原始列的值是否相同來達到判斷的目的 18在資料視窗中移走行 但不是去做過濾或刪除操作 RowsDiscard 函數可做到這一點 它在資料視窗中執(zhí)行移除工作 但被移走的行它不可被刪除或做任何修改性的保存 19如何在多行顯示的DataWindow中的FooterBand中顯示當前資料的首行和最後行的行號 我們先看兩個計算列的運算式 IF GetRow First GetRow FORPage 1 0 1為當前頁的第一行IF GetRow 1ANDGetRow Last GetRow FORPage 1 0 1為當前頁的最後一行由上面可知 在FooterBand中設置如下計算列運算式 Rows String First GetRow FORPage to String Last GetRow FORPage aredisplayed 即可達到這項功能 20使可編輯的資料視窗唯讀 有時 你可能需要將一個用於編程的資料視窗用作顯示目的 可以有以下幾種方法來實現這一要求 1 建立兩個資料視窗 一個用於編輯 一個用於顯示2 將資料視窗中的全部物件的taborder設置為0 3 也可以將資料視窗中的列的protect屬性設為On或Off 但你不能使用protect屬性進行編輯操作4 資料視窗有一個將datawindow設為唯讀的屬性 readonly 使用它最方便 21資料視窗檢查重複行 dw 1 SetSort user idA dw 1 Sort dw 1 SetFilter user id user id 1 dw 1 Filter ifdw 1 RowCount 0thenMessagebox 注意 用戶編碼重複 endifdw 1 SetFilter dw 1 Filter 22如何在分組形式的DataWindow中分別顯示各組的行號 當我們?yōu)镈atawindow的每一行顯示行號時 可以簡單的放一個運算式為GetRow 計算列 但是對於分組的Datawindow 要分別顯示各組的行號 則應使用運算式為GetRow First GetRow forGroup1 1的計算列 23如何能讓資料視窗的某幾列在其他列橫拉時固定不動 功能說明 用於凍結左邊的滾動欄 變更記錄 變更或版本更新的時候intiifpane 1theni integer this object datawindow horizontalscrollposition2 ifi0thenthis object datawindow horizontalScrollPosition 0endifelsei integer this Object DataWindow HorizontalScrollSplit ifiscrollposthenthis object datawindow horizontalScrollPosition2 iendifendif 24 在資料視窗中如果要使其中一列的屬性為唯讀 也就是不允許用戶修改 那麼只需簡單地將這一列的TableOrder設置成0就可 然而 在有些情況下需要對這一列的某些行修改 而某些行不能修改 這就要用到這一列的protect屬性了 打開列的屬性中的Expressions 在protect中輸入條件判別式 例如 允許用戶修改新增加的記錄 而檢索出來的記錄則不允許修改 條件判別式可以寫成如下 if isRowNew 0 1 在PowerScript中可以動態(tài)修改Protect屬性 dw 1 Modify column name here Protect 1 tIf IsRowNew 0 1 這樣 DataWindow中只有新追加的記錄可修改 而其他記錄是唯讀的 25控制DATAWINDOW裏每頁顯示的行數 1 在Datawindow中增加一個計算域 起名為 ceil page 此計算域必須放在Detail段中 Expression中輸入ceiling getrow 25 25表示每頁列印25行 也可以是一個參數 2 分組 選擇功能表Rows CreateGroup 選擇ceil page按ceil page分組 並選中NewPageOnGroupBreak 意思是新組開始時換頁 3 將此計算域設為隱藏 在屬性頁中的expression頁中在visible屬性中寫0 4 補空行 在視窗的open事件中寫如下代碼 longli count li ili count dw 1 retrieve ifmod li count 25 0thenforli i 1to25 mod li count 25 dw 1 insertrow 0 nextendif 26資料視窗的closeQuery事件 提示保存資料 dw 1 AcceptText IFdw 1 ModifiedCount dw 1 DeletedCount 0THENCHOOSECASEMessageBox 操作提示 資料已經發(fā)生變化 是否保存 Question YesNoCancel 1 CASE1cb save TriggerEvent clicked CASE2Return0 不做任何操作直接關閉視窗CASE3Return1 不會運行CloseEvent 維持原來的情況ENDCHOOSEENDIF 27Getchild函數主要被用來得到一個資料視窗的子資料視窗 該函數在兩種情況下可以使用 1 取出資料視窗物件的下拉式資料視窗 2 取出複合風格 composite 資料視窗物件裏所嵌入的子資料視窗物件 語法 integerdwcontrol GetChild stringname REFDataWindowChilddwchildvariable 例子1這段程式取出一個composite資料視窗物件的兩個子資料視窗 並對他們進行過濾 和排序的操作 dw dy是連接一個composite資料視窗物件的一個資料視窗控制項 dw 1 dw 2分別是嵌套的資料視窗的NAME 27Getchild函數主要被用來得到一個資料視窗的子資料視窗 Stringls filterDataWindowChilddwc czrw dwc czx 定義子資料視窗變數dw dy Settransobject sqlca 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 dw 3 GetItemString dw 3 GetRow czrw bh dwc czx SetSort czx sxA dwc czx Sort dwc czx SetFilter ls filter dwc czx filter 27Getchild函數主要被用來得到一個資料視窗的子資料視窗 當然也可以通過資料共用 ShareData 等方式操作子資料視窗中的資料 訪問複合資料視窗物件 方法 dw dy object dw 1 object 對象 27Getchild函數主要被用來得到一個資料視窗的子資料視窗 例子2下拉資料視窗動態(tài)過濾在資料視窗dw 1的ItemFocusChanged事件中寫入如下腳本 IntegerrtncodeStringls nowFld ls deptid ls sqlDataWindowChildfld childrtncode dw 1 GetChild Unit id fld child 獲得Unit id欄位名下拉資料視窗的控制碼Ifrtncode 1ThenMessageBox 錯誤 不是下拉資料視窗 fld child SetTransObject SQLCA 設置事務物件ls sql Lower fld child GetSQLSelect 獲得DDDW的SQL語句 27Getchild函數主要被用來得到一個資料視窗的子資料視窗 去除Sql語句中的Where條件子句 如原Sql語句中須有Where條件子句 此處則需進行較 複雜的處理 應視具體情況而定 ifPos ls sql where 0thenls sql Left ls sql Pos ls sql where 重新設置Sql語句中的Where條件子句ls deptid dw 1 Object dept id GetRow 取得當前dept id選定值ls sql ls sql Wheredept id Trim ls deptid 重新設置Sql語句fld child SetSQLSelect ls sql fld child Retrieve 取得滿足條件的資料 28從資料視窗中獲取資料 單條 假設我們要讀取dept id欄位的第一筆資料 可以用下列方式表示 li id dw 1 object dept id 1 假設我們要讀取第一行中第二個欄位的資料 可以用下列方式表示 ls name dw 1 object DATA 1 2 假設我們要讀取dept id欄位的所有資料 可以用下列方式表示 li array dw 1 object dept id CURRENT假設我們要讀取過濾緩衝區(qū) filterbuffer 內dept id欄位的第一筆資料 可以用下列方式表示 li id dw 1 object dept id Filter 1 假設我們要讀取從第二筆資料的第一個欄位到第三筆資料的二個欄位之間的資料 表示 lstr array dw 1 object DATA 2 1 3 2 假設我們要讀取整個第二筆的資料 可以用下列方式表示 lstr dept dw 1 object DATA 2 28從資料視窗中獲取資料 使用GetItemX 函數x為stringnumber等lstr name dw 1 getitemstring li count emp name li count為哪一條多條 stringls name ls name dw 1 object emp name current資料的讀取一般格式 資料視窗控制項 Retrieve 返回個數 1為錯誤增加資料資料視窗控制項 InsertRow 行數 參數為0加到最後資料的刪除資料視窗控制項 Deleterow 行數 資料的過濾l資料視窗控制項 SetFilter 條件字串 28從資料視窗中獲取資料 資料視窗控制項 Filter 用法 將主要緩衝區(qū) PrimaryBuffer 內不符合過濾條件的資料移到過濾緩衝區(qū) FilterBuffer 內 例子 stringls expls exp dept id 100 dw 1 SetFilter ls exp dw 1 Filter 排序dw 1 SetSort dept id dw 1 Sort 將資料從所有的緩衝區(qū) Buffer 中清除dw 1 ReSet 計算資料數目 例如 dw 1 Rowcount 類似 DeletedCount ModifiedCount FilteredCount 資料視窗的滾動資料視窗控制項 ScrollToRow 行數 29資料視窗屬性改變 描述資料視窗物件本身顏色 可以表示如下 longll colorll color dw emplist Describe DataWindow Color 描述資料視窗物件內標題dept id t的顏色 可以表示如下 longll colorll color dw emplist Describe dept id t Color 修改資料視窗物件本身顏色 可以表示如下 dw emplist Modify DataWindow Color 255 修改資料視窗物件內標題dept id的顏色 可以表示如下 dw emplist Modify dept id t Color 255 假設當我們希望在程式運行階段才給予下行條件 薪水超過50000時顯示紅色 低於50000時顯示黑色 程式的寫法如下 ls modstring Salary Color 0 tIf Salary 50000 255 0 dw 1 modify ls modstring 30得到當前滑鼠所指物件所在的帶區(qū) stringstr bandstr band GetBandAtPointer 得到當前滑鼠所指物件所在的帶區(qū)str band left str band pos str band t 1 得到 header detail 等ifstr band header thenreturn 單擊非頭區(qū) 退出 31得到滑鼠指向的列物件名 str object GetObjectAtPointer 得到當前滑鼠所指物件名str object left str object pos str object t 1 得到列物件名 默認為列名 t為列標題 str column left str object len str title 2 判斷該名稱是否為列名字ifthis describe str column band thenreturn 非是列名 即列標題不是按正常規(guī)律起名的 32得到當前行 列 總行 列 this針對資料視窗而言 li col this GetColumn li ColCount long describe this datawindow column count ll row this GetRow ll RowCount this RowCount 設置當前行 列scrolltorow this ll Row setrow this ll Row setcolumn this li col this SetFocus 33得到所有列標題 ll colnum Long dw 1 object datawindow column count fori 1toll colnum 得到標題頭的名字ls colname dw 1 describe string i name t ls value dw 1 describe ls colname text next 34如何用代碼取得資料視窗匯總帶計算列的值 Stringls valuels value dw 1 Describe Evaluate compute 1 1 如果是數值型 要轉換 35取得單擊的列標題 列名 資料庫欄位名 stringls dwo ls type ls title ls column ls dbnamelongll posifNotKeyDown KeyControl thenreturnls dwo dwo Nameiftrim ls dwo orisnull ls dwo thenreturnls type This describe ls dwo type ifls type column thenls title This describe ls dwo t text 標題ls column This describe
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年醫(yī)藥企業(yè)研發(fā)外包(CRO)模式技術創(chuàng)新與突破報告
- 2025年游戲化營銷在品牌推廣中的沉浸式體驗策略與效果評估報告
- 聚焦2025年:房地產市場區(qū)域分化與投資策略創(chuàng)新報告
- 北京高考口算題庫及答案
- 保險原理課程題庫及答案
- 寶潔在線測評題庫及答案
- 公交導向型城市交通擁堵治理策略2025年應用研究報告
- 安全助產試題必考及答案
- 安全證a試題及答案
- 安全考試試題及答案
- 09SMS202-1埋地矩形雨水管道及附屬構筑物(混凝土模塊砌體)
- 醫(yī)生簽約MCN機構合同模版
- 重慶市沙坪壩區(qū)南開中學校2023-2024學年八年級下學期期末英語試題(無答案)
- 廣東省深圳市南山區(qū)2023-2024學年七年級下學期期末英語試題
- 2022-2023學年江蘇省蘇州市高二下學期學業(yè)質量陽光指標調研卷英語試卷
- 蘇教版小學四年級下冊科學期末測試卷及參考答案1套
- 體育場館物業(yè)管理操作規(guī)范
- 24春國開電大《旅游學概論》形考任務1-4試題及答案
- 人工智能導論智慧樹知到期末考試答案章節(jié)答案2024年哈爾濱工程大學
- 生命倫理學:生命醫(yī)學科技與倫理智慧樹知到期末考試答案章節(jié)答案2024年山東大學
- JT∕T1180.4-2018交通運輸企業(yè)安全生產標準化建設基本規(guī)范第4部分:道路普貨運輸
評論
0/150
提交評論