  | 
				VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.   
				 | 
			 
		 
		 
	
		| 上一篇主題 :: 下一篇主題   | 
	 
	
	
		| 發表人 | 
		內容 | 
	 
	
		moon64
 
 
  註冊時間: 2008-12-16 文章: 45
 
  第 1 樓
  | 
		
			
				 發表於: 星期三 三月 04, 2009 2:36 pm    文章主題: Grid 比對資料...改顏色 | 
				     | 
			 
			
				
  | 
			 
			
				grid 有 Column1 ~ Column4
 
如1.游標在 Record2 時, 比對 record1 內 Column1 ~ Column4, 若比對成立, 改變顏色
 
如2.游標在 Record5 時, 比對 record1~ record4 內 Column1 ~ Column4, 若比對成立, 改變顏色
 
beforerowcolchange :  oldrow = this.activerow
 
afterrowcolchange  :
 
 
 newrow = this.ActiveRow
 
  DO CASE
 
   CASE oldrow < newrow   && 往下一格
 
      sfood1 = food1
 
      sfood2 = food2
 
      sfood3 = food3
 
      sfood4 = food4
 
      Bcolor1 = "(115,255,115)" 
 
      Bcolor2 = "( 58,226,206)" 
 
      Bcolor3 = "(255,221,  0)" 
 
      Bcolor4 = "(255,188,  0)" 
 
      Bcolorno= "(228,228,255)" 
 
      FOR i = 1 TO 4       && food1~food4 欄位 是 數字型態
 
        str_i = STR( i, 1, 0 )
 
        BackColor1 = "IIF( food&str_i = sfood1, RGB&bBcolor1, IIF( food&str_i = sfood2, RGB&bBcolor2, IIF( food&str_i = sfood3, RGB&bBcolor3, IIF( food&str_i = sfood4, RGB&bBcolor4, RGB&bBcolorno )"
 
         ENDFOR
 
      thisform.grid.column1.DynamicBackColor = BackColor1 
 
      thisform.grid.column2.DynamicBackColor = BackColor1
 
      thisform.grid.column3.DynamicBackColor = BackColor1 
 
      thisform.grid.column4.DynamicBackColor = BackColor1
 
*   CASE oldrow > newrow   && 往上一格
 
 ENDCASE       
 
以上 我不知出在哪問題,請大家指點 ><!! | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		ckp6250
 
 
  註冊時間: 2004-07-30 文章: 1645
 
  第 2 樓
  | 
		
			
				 發表於: 星期三 三月 04, 2009 11:08 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				一般而言,DynamicBackColor 應設定在 grid 的 init 中 , 您把它設定在 afterrowcolchange ,
 
看起來怪怪地 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		moon64
 
 
  註冊時間: 2008-12-16 文章: 45
 
  第 3 樓
  | 
		
			
				 發表於: 星期三 三月 04, 2009 11:37 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				| Mr. ckp6250...你說的沒錯, init 表示一次改變所有,我有想過了,但是,每recno 要比對上期的需求...... | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		DennisTsai
 
 
  註冊時間: 2005-07-26 文章: 178
 
  第 4 樓
  | 
		
			
				 發表於: 星期四 三月 05, 2009 9:22 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				| 加欄位,對應運算結果填入rgb值,如此用DynamicBackColor來作就千變萬化了 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		moon64
 
 
  註冊時間: 2008-12-16 文章: 45
 
  第 5 樓
  | 
		
			
				 發表於: 星期四 三月 05, 2009 12:17 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				| MR.DennisTsai...謝謝你的提示,我正在思考中....... 怎拼程式^^! | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		moon64
 
 
  註冊時間: 2008-12-16 文章: 45
 
  第 6 樓
  | 
		
			
				 發表於: 星期五 三月 06, 2009 9:47 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				糾正: 
 
isverify 欄位 = .F. 
 
 
beforerowcolchange : 
 
oldrow = this.ActiveRow 
 
n = LASTKEY() 
 
DO CASE 
 
  CASE n = 24           && 往下一格 
 
     REPLACE isverify WITH .T. 
 
  CASE n = 5            && 往上一格 
 
     REPLACE isverify WITH .F. 
 
ENDCASE 
 
 
afterrowcolchange : 
 
newrow = this.ActiveRow 
 
Bcolor1 = "(115,255,115)" 
 
Bcolor2 = "( 58,226,206)" 
 
Bcolor3 = "(255,221, 0)" 
 
Bcolor4 = "(255,188, 0)" 
 
Bcolorno= "(228,228,255)" 
 
DO CASE 
 
  CASE oldrow < newrow   && 往下一格 
 
     sfood1 = food1 
 
     sfood2 = food2 
 
     sfood3 = food3 
 
     sfood4 = food4 
 
BackColor1 = "IIF( (food1 = sfood1 AND isverify = .T.), RGB&Bcolor1, IIF( (food1 = sfood2 AND isverify = .T.), RGB&Bcolor2, IIF( (food1 = sfood3 AND isverify = .T.), RGB&Bcolor3, IIF( (food1 = sfood4 AND isverify = .T.), RGB&Bcolor4, RGB&Bcolorno ))))" 
 
 
BackColor2 = "IIF( (food2 = sfood1 AND isverify = .T.), RGB&Bcolor1, IIF( (food2 = sfood2 AND isverify = .T.), RGB&Bcolor2, IIF( (food2 = sfood3 AND isverify = .T.), RGB&Bcolor3, IIF( (food2 = sfood4 AND isverify = .T.), RGB&Bcolor4, RGB&Bcolorno ))))" 
 
 
BackColor3 = "IIF( (food3 = sfood1 AND isverify = .T.), RGB&Bcolor1, IIF( (food3 = sfood2 AND isverify = .T.), RGB&Bcolor2, IIF( (food3 = sfood3 AND isverify = .T.), RGB&Bcolor3, IIF( (food3 = sfood4 AND isverify = .T.), RGB&Bcolor4, RGB&Bcolorno ))))"  
 
 
BackColor4 = "IIF( (food4 = sfood1 AND isverify = .T.), RGB&Bcolor1, IIF( (food4 = sfood2 AND isverify = .T.), RGB&Bcolor2, IIF( (food4 = sfood3 AND isverify = .T.), RGB&Bcolor3, IIF( (food4 = sfood4 AND isverify = .T.), RGB&Bcolor4, RGB&Bcolorno ))))" 
 
 
     thisform.grid.column1.DynamicBackColor = BackColor1
 
     thisform.grid.column2.DynamicBackColor = BackColor2
 
     thisform.grid.column3.DynamicBackColor = BackColor3
 
     thisform.grid.column4.DynamicBackColor = BackColor4
 
 
*   CASE oldrow > newrow   && 往上一格 
 
ENDCASE 
 
訊息結果: expression is invalid. use a valid expression for DynamicBackcolor property 
 
請問 哪不對!!!
  moon64 在 星期五 三月 06, 2009 2:31 pm 作了第 4 次修改 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		moon64
 
 
  註冊時間: 2008-12-16 文章: 45
 
  第 7 樓
  | 
		
			
				 發表於: 星期五 三月 06, 2009 9:49 am    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				Recno 食物1 食物2 食物3 食物4
 
--- --- --- --- ---
 
 1    2   3  〔4〕   5
 
 2   〔4〕  5  〔9〕   10
 
 3    1   3   8    11
 
 4    1   3   5   〔7〕
 
 5    4   6   7    9   <∼游標比對上期,〔〕為變顏色
 
 6    1   5   7    8   <∼不能比對
 
 
以上我想要的結果..謝謝 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		moon64
 
 
  註冊時間: 2008-12-16 文章: 45
 
  第 8 樓
  | 
		
			
				 發表於: 星期五 三月 06, 2009 7:02 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				問題已解決.....
 
INIT:  加入 PUBLIC sfood1,sfood2,sfood3,sfood4   < 重點
 
AFTERROWCOLCHANGE:
 
最後加入 this.refresh()
 
其他慢慢調整就可^^ 最後 謝謝 MR.ckp6250 . MR.DennisTsai . 大家  鞠躬 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |