  | 
				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 文章: 564 來自: 臺灣
  第 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. 你的設計環境就自己轉換一下吧 !! | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |