VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

grid 顏色老問題
前往頁面 1, 2, 3  下一頁
 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
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. 你的設計環境就自己轉換一下吧 !!
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
前往頁面 1, 2, 3  下一頁
1頁(共3頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作