依據條件改變資料顏色

2021-08-22 05:26:52 字數 1722 閱讀 2041

依據條件改變資料顏色

(深圳:獨孤求敗2003-05-26)

依據條件改變資料顏色是許多場合都要用到的重要功能,資料顏色的改變不僅引人注目,而且能起到暗示作用,清楚地告訴使用者價位的漲跌或狀態的改變等。大多數****實時**顯示軟體都提供了這種功能。在當前價位比其前一價位高時,當前價位資料顏色變紅,表示價位**;反之,顏色變綠,表示價位**;若當前價位與其前一價位相等,則資料顏色不變。powerbuilder沒有提供解決這一問題的捷徑,但我們仍可利用動態資料窗來實現。先考慮一下實現的步驟,在retrieve前需要把有關列的資料先儲存起來;retrieve後我們獲得了相應列的新資料;我們需要將上述二者作一比較,以確定顏色的變化。值得指出的是,由於動態資料窗函式dwmodify()只能用描述資料窗的模式串作引數,不能接收變數作引數,故我們得想法把比較的結果傳遞給資料窗。為解決這個問題,可以在定義資料窗時多定義幾個空列,這幾列不與資料庫表中的列相對應,它們作為存放比較結果的緩衝區。原則上若需要n列實時地變色,則需要n列緩衝區,就應該多定義n個空列。下面給出了乙個例子具體說明。

這段程式寫在某視窗的timer事件中,該視窗內有資料窗dw_infor,其"buy"、"sell"列分別表示買價和賣價,需要實時地變顏色。為此,我們在資料窗dw_infor中多定義了"buybuf"和"sellbuf"兩列,分別存放"buy"列和"sell"列retrieve前後資料比較的結果。

//red=255;green=65280

inti,infor_rownumdecimalbuy_old,sell_old,buy_new,sell_new

dw_infor.setredraw(false)

infor_rownum=dw_infor.rowcount()

fori=1toinfor_rownum

buy_old[i]=dw_infor.getitemnumber(i,"buy")

sell_old[i]=dw_infor.getitemnumber(i,"sell")

next

dw_infor.retrieve()

fori=1toinfor_rownum

buy_new[i]=dw_infor.getitemnumber(i,"buy")

sell_new[i]=dw_infor.getitemnumber(i,"sell")

next

fori=1toinfor_rownum

dw_infor.setitem(i,"buybuf",buy_new[i]-buy_old[i])

dw_infor.setitem(i,"sellbuf",sell_new[i]-sell_old[i])

next

dw_infor.dwmodify("buy.color='0~tif(buybuf>0,255,if(buybuf<0,65280,0))'")dw_infor.dwmodify("sell.color="0~tif(sellbuf>0,255,if(sellbuf<0,65280,0))'")dw_infor.setredraw(true)

我們看到,程式在retrieve前後分別將"buy"和"sell";列的資料寫進與其型別匹配的陣列中,然後將比較的結果分別寫入"buybuf"和"sellbuf"列,最後用函式dwmodify()改變有關列的顏色。記住在該視窗的open事件中設定事務物件並啟用timer事件。此外,還有一些方法可以改變顏色,比如先在某些需要變顏色的行或列設定帶顏色的長方形,同時將其上面的資料窗中的資料設定成透明的,當條件改變時,可以通過改變資料窗後的長方形的顏色來實現。

改變資料庫字元編碼

檢視編碼 show variables like collation show variables like character set 修改 mysql 修改預設字符集,轉換字符集 mysql 5.x 1.修改 mysql 資料庫預設字符集 mysql database default chara...

改變資料庫的歸檔模式

我在資料的歸檔模式,關閉資料後,在啟動就出現如下的問題 sql plus release 10.2.0.1.0 production on 星期二 3月 2 17 18 17 2010 請輸入使用者名稱 system test 連線到 oracle database 10g release 10.2...

CentOS下Mysql 改變資料儲存路徑

通過yum安裝的mysql會預設將資料儲存位置設定在 var lib mysql 下,而這個目錄在centos安裝時都是系統掛載的磁碟,磁碟大小不會設的很大,當資料庫中的資料太多時,就會把該磁碟佔滿,使得mysql服務強制停止,並沒法啟動。報錯情況可能為 mysql deamon failed to...