 |
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
clmao
註冊時間: 2006-04-15 文章: 57
第 1 樓
|
發表於: 星期二 五月 30, 2006 9:39 pm 文章主題: grid 顏色老問題 |
|
|
各位大大:
很抱歉,再次提出來
因為程式中用到GRID
而GRID裝的某一個欄位需要因著資料不同
欄位內的文字會有兩種顏色
syntech大大提到說用RICHEDIT
但是我找不到RICHEDIT物件(抱歉,FOXPRO有嗎?好像是DELPHI才有)
syntech大大可否指導一下
另外部分文字要改變顏色,要如何做?
再則,小賴大大說用CONTAINER(自訂類別)
但是,我不知道當用自訂類別的TEXT1 TEXT2..取代欄位的TEXT1時
要如何(或是說要在哪裡)設定自訂類別的屬性
因為自訂類別的文字方塊顏色 會因GRID內之某一欄位值不同
而有不同之顏色
尚請兩位大大指導
萬分感激
謝謝!
亦請其他大大有任何寶貴的方法,不吝指導
謝謝! |
|
回頂端 |
|
 |
clmao
註冊時間: 2006-04-15 文章: 57
第 2 樓
|
發表於: 星期四 六月 01, 2006 10:09 pm 文章主題: |
|
|
各位大大:
不知是否有空指導一下?謝謝! |
|
回頂端 |
|
 |
hdm
註冊時間: 2005-11-23 文章: 23 來自: Taipei
第 3 樓
|
發表於: 星期日 六月 04, 2006 5:22 pm 文章主題: |
|
|
試試 GRID1.COLUMNx 中的 DynamicBackColor 與 DynamicForeColor
範例查 VFP Help. |
|
回頂端 |
|
 |
clmao
註冊時間: 2006-04-15 文章: 57
第 4 樓
|
發表於: 星期日 六月 04, 2006 6:15 pm 文章主題: |
|
|
hdm大大
謝謝您!
但是我的欄位裡面有兩個資料,是用自訂類別作的!
GRID1.COLUMNx 中的 DynamicBackColor 與 DynamicForeColor
無法影響至自訂類別。
例如:
A欄位中有P和Q兩個文字方塊資料
而P和Q的文字顏色要依照B欄位的資料改變顏色,
如果B欄位為1,P和Q顏色為紫色
如果B欄位為2,P和Q顏色為紅色 |
|
回頂端 |
|
 |
nelsonchuang
註冊時間: 2003-09-04 文章: 563 來自: 臺灣
第 5 樓
|
發表於: 星期日 六月 04, 2006 9:55 pm 文章主題: 打個勾就有了 |
|
|
[img][/img]如附檔打勾後你的物件清單就會有了 _________________ 大家好,請多指教 |
|
回頂端 |
|
 |
hdm
註冊時間: 2005-11-23 文章: 23 來自: Taipei
第 6 樓
|
發表於: 星期日 六月 04, 2006 11:26 pm 文章主題: |
|
|
clmao :
碰上你說的情形(應該是Comtainer吧?!) 仍可以利用GRID1.COLUMN 中的 DynamicBackColor
來呼叫自訂函數設定Container內textbox顏色.
假設 自訂CLASS TEXT21 內含 TEXT1 與 TEXT2 兩個 TEXTBOX,
TABLE AB 有欄位 B,P,Q,手動設定GRID屬性如以下:
GRID1.RECORDSOURCE=AB
GRID1.COLUMN1.CONTROLSOURCE=B
GRID1.COLUMN1.TEXT1.CONTROLSOURCE=B
GRID1.COLUMN2.CONTROLSOURCE=(none)
GRID1.COLUMN2.DynamicBackColor=THISFORM.SET_COLOR(B)
GRID1.COLUMN2.TEXT21.CONTROLSOURCE=P
GRID1.COLUMN2.TEXT21.CONTROLSOURCE=Q
在同一FORM中設定一個自訂函數 SET_COLOR如下:
*****************************************
LPARAMETERS B_VAL
WITH THISFORM.GRID1.COLUMN2.TEXT21
IF B_VAL=1 && 背景紫色
.TEXT1.BACKCOLOR=RGB(128,0,255)
.TEXT2.BACKCOLOR=RGB(128,0,255)
ELSE && 背景紅色
.TEXT1.BACKCOLOR=RGB(255,0,0)
.TEXT2.BACKCOLOR=RGB(255,0,0)
ENDIF
RETURN .BACKCOLOR && 回傳TEXT21原背景色
ENDWITH
*******************************************
P.S.我已測過OK,其它GRID內屬性細節自己視情況調整囉...祝好運 !! |
|
回頂端 |
|
 |
hdm
註冊時間: 2005-11-23 文章: 23 來自: Taipei
第 7 樓
|
發表於: 星期日 六月 04, 2006 11:29 pm 文章主題: |
|
|
SORRY,修改部分內容:
.................................
.............手動設定GRID屬性如以下:
.............................
.............................
.............................
..............................
.................................
GRID1.COLUMN2.TEXT21.TEXT1.CONTROLSOURCE=P
GRID1.COLUMN2.TEXT21.TEXT2.CONTROLSOURCE=Q |
|
回頂端 |
|
 |
clmao
註冊時間: 2006-04-15 文章: 57
第 8 樓
|
發表於: 星期一 六月 05, 2006 9:11 am 文章主題: |
|
|
感謝hdm及nelsonchuang大大!
我即刻試一下
謝謝! |
|
回頂端 |
|
 |
clmao
註冊時間: 2006-04-15 文章: 57
第 9 樓
|
發表於: 星期一 六月 05, 2006 10:50 am 文章主題: |
|
|
請問hdm大大:
您的自訂函數SET_COLOR如何寫?
謝謝! |
|
回頂端 |
|
 |
hdm
註冊時間: 2005-11-23 文章: 23 來自: Taipei
第 10 樓
|
發表於: 星期一 六月 05, 2006 11:06 am 文章主題: |
|
|
在FORM DESIGNER中的主選單選FORM/NEW METHOD. |
|
回頂端 |
|
 |
clmao
註冊時間: 2006-04-15 文章: 57
第 11 樓
|
發表於: 星期一 六月 05, 2006 2:39 pm 文章主題: |
|
|
hdm大大:
執行時會有問題
我的指令如下:
thisform.Pageframe1.Page1.grid1.column18.dynamicforecolor="IIF(tg_all.model='01', THISFORM.SET_COLOR(1), IIF(tg_all.model='02', THISFORM.SET_COLOR(2), IIF(tg_all.model='03', THISFORM.SET_COLOR(3),THISFORM.SET_COLOR(4))))"
上面指令為一行
而
set_color函數內容為
LPARAMETERS B_VAL
WITH THISFORM.pageframe1.page1.GRID1.COLUMN18.comb_all1
DO case
case VAL(B_VAL)=1 && 背景紫色
.TEXT1.FORECOLOR=RGB(128,0,255)
.TEXT2.FORECOLOR=RGB(128,0,255)
.TEXT3.FORECOLOR=RGB(128,0,255)
CASE VAL(B_VAL)=2 && 背景紅色
.TEXT1.FORECOLOR=RGB(255,0,0)
.TEXT2.FORECOLOR=RGB(255,0,0)
.TEXT3.FORECOLOR=RGB(255,0,0)
CASE VAL(B_VAL)=3 && 背景紅色
.TEXT1.FORECOLOR=RGB(0,128,128)
.TEXT2.FORECOLOR=RGB(0,128,128)
.TEXT3.FORECOLOR=RGB(0,128,128)
otherwise && 背景紅色
.TEXT1.FORECOLOR=RGB(0,0,0)
.TEXT2.FORECOLOR=RGB(0,0,0)
.TEXT3.FORECOLOR=RGB(0,0,0)
ENDCASE
RETURN .FORECOLOR && 回傳TEXT21原背景色
ENDWITH
但是會出現
會先出現
Function argument value, type, or count is invalid.
再出現
Expression is invalid. Use a valid
expression for DYNAMICFORECOLOR
property.
錯誤訊息
要如何處理?
麻煩大大指導,謝謝! |
|
回頂端 |
|
 |
clmao
註冊時間: 2006-04-15 文章: 57
第 12 樓
|
發表於: 星期一 六月 05, 2006 2:42 pm 文章主題: |
|
|
hdm大大:
謝謝!
已經找到問題所在
謝謝您的指導
因為資料的型態不符
所以有問題
感謝您! |
|
回頂端 |
|
 |
clmao
註冊時間: 2006-04-15 文章: 57
第 13 樓
|
發表於: 星期二 六月 06, 2006 10:44 pm 文章主題: |
|
|
hdm大大:
感謝您的指導,但是,目前我遇到一個問題,如果經過篩選或排序後,反白區域會分兩段,一段是一般的欄位,另外一段是組合欄位。
但是如果改成:
ThisForm.CurrentRec = RECNO()
This.Refresh
thisform.Pageframe1.Page1.grid1.column18.DynamicBackColor="IIF(ThisForm.CurrentRec=RECNO(),THISFORM.SET_COLOR2(1,18),THISFORM.SET_COLOR2(2,18))"
且放在AFTERROWCOLCHANG()內
就會變成一整行
但是會分兩段變化。
因為我於INIT()內有設定
this.HighlightStyle = 1
this.HighlightBackColor = RGB(255,0,0)
不知大大有何高見,煩請指導,謝謝。 |
|
回頂端 |
|
 |
clmao
註冊時間: 2006-04-15 文章: 57
第 14 樓
|
發表於: 星期二 六月 06, 2006 10:50 pm 文章主題: |
|
|
Tigerlee大大:
我是在INIT()內下此一行命令:
thisform.Pageframe1.Page1.grid1.column18.dynamicforecolor="iif(this.activeRow=RECNO(),thisform.set_color(5,18),IIF(tg_all.model='01', THISFORM.SET_COLOR(1,18), IIF(tg_all.model='02', THISFORM.SET_COLOR(2,18), IIF(tg_all.model='03', THISFORM.SET_COLOR(3,18),THISFORM.SET_COLOR(4,18)))))"
然後在form內的SETCOLOR()設定:
LPARAMETERS B_VAL,cou_i
IF cou_i=18
WITH THISFORM.pageframe1.page1.GRID1.COLUMN18.comb_all1
DO case
case B_VAL=1 && 背景紫色
.TEXT1.FORECOLOR=RGB(0,0,128)
.TEXT2.FORECOLOR=RGB(0,0,128)
.TEXT3.FORECOLOR=RGB(0,0,128)
.TEXT5.FORECOLOR=RGB(255,0,0)
CASE B_VAL=2 && 背景紅色
.TEXT1.FORECOLOR=RGB(116,0,232)
.TEXT2.FORECOLOR=RGB(116,0,232)
.TEXT3.FORECOLOR=RGB(116,0,232)
.TEXT5.FORECOLOR=RGB(255,0,0)
CASE B_VAL=3 && 背景紅色
.TEXT1.FORECOLOR=RGB(0,111,0)
.TEXT2.FORECOLOR=RGB(0,111,0)
.TEXT3.FORECOLOR=RGB(0,111,0)
.TEXT5.FORECOLOR=RGB(255,0,0)
CASE B_VAL=5 && 背景紅色
.TEXT1.FORECOLOR=RGB(255,255,255)
.TEXT2.FORECOLOR=RGB(255,255,255)
.TEXT3.FORECOLOR=RGB(255,255,255)
.TEXT5.FORECOLOR=RGB(255,255,255)
otherwise && 背景紅色
.TEXT1.FORECOLOR=RGB(0,0,0)
.TEXT2.FORECOLOR=RGB(0,0,0)
.TEXT3.FORECOLOR=RGB(0,0,0)
.TEXT5.FORECOLOR=RGB(255,0,0)
ENDCASE
RETURN .FORECOLOR && 回傳TEXT21原背景色
ENDWITH
ENDIF
這麼做會很麻煩!
因為每一個組合欄位均要對應一段程式。
敬請指導!謝謝! |
|
回頂端 |
|
 |
hdm
註冊時間: 2005-11-23 文章: 23 來自: Taipei
第 15 樓
|
發表於: 星期三 六月 07, 2006 12:31 pm 文章主題: |
|
|
clmao :
用我先前範例參考, 如果只是要把一個ROW反白,
1. 一般的Column 用GRID.HightLightxx屬性
grid1. HightLightrow=.t.
grid1. HightLightStyle=1
grid1. HightLight backcolor=rgb(0,0,255) && 藍底
grid1. HightLightforekcolor=rgb(255,255,255) && 白字
2.有Container 的 Column 設定屬性:
grid1.column2.dynamicbackcolor=thisform.set_color()
再設定相關函數如下:
******** thisform.init() ***********
sele ab
go top
thisform.current_recno=recno() && CURRENT_RECNO 要加入THISFORM自訂屬性
**********thisform.set_color() ***********
WITH THISFORM.GRID1.COLUMN2.TEXT21
IF THISFORM.CURRENT_RECNO=RECNO() && 藍底白字
.BACKCOLOR=RGB(0,0,255)
.TEXT1.BACKCOLOR=RGB(0,0,255)
.TEXT2.BACKCOLOR=RGB(0,0,255)
.TEXT1.FORECOLOR=RGB(255,255,255)
.TEXT2.FORECOLOR=RGB(255,255,255)
ELSE && 白底黑字
.BACKCOLOR=RGB(255,255,255)
.TEXT1.BACKCOLOR=RGB(255,255,255)
.TEXT2.BACKCOLOR=RGB(255,255,255)
.TEXT1.FORECOLOR=RGB(0,0,0)
.TEXT2.FORECOLOR=RGB(0,0,0)
ENDIF
RETURN .BACKCOLOR
ENDWITH
********* thisform.grid1.afterrowcolchange()********
thisform.current_recno=RECNO()
THISFORM.Refresh
****************************************
P.S. 你的設計環境就自己轉換一下吧 !! |
|
回頂端 |
|
 |
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|