  | 
				VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.   
				 | 
			 
		 
		 
	
		| 上一篇主題 :: 下一篇主題   | 
	 
	
	
		| 發表人 | 
		內容 | 
	 
	
		goto-dream
 
 
  註冊時間: 2004-05-11 文章: 909
 
  第 1 樓
  | 
		
			
				 發表於: 星期五 六月 11, 2004 2:00 pm    文章主題: vfp8學習筆記_grid新增功能(轉貼) | 
				     | 
			 
			
				
  | 
			 
			
				vfp8學習筆記_grid新增功能    flywms
 
http://mihu.agi-china.com/sdss/dispbbs.asp?boardID=2&ID=3766&page=3
 
 
 
微軟公司網站上有一個演示vfp8新功能的示例程序代碼。晚上不想寫程序,就轉為學習,其中的grid新增功能演示有7個,有些自己不知道,都是花了一些功夫實現類似功能。想想有些狐友可能還不知道,筆記如下:
 
1,表格寬度自動適應*********************************************************************
 
   Grid_AutoFit.prg
 
* 說明: AutoFit方法允許開發者將grid全部或部分列設為最佳寬度
 
*提示:autofit方法只能將表單中顯示出來的行進行自動調整,這樣,當用戶滾動grid的時候,有可能需要再次進行寬度設定。
 
***學習筆記:看來需要針對grid滾動事件再次調用autofit,將這個功能加到自建grid類中。
 
*******************************************************************
 
#DEFINE CRLF CHR(13)+CHR(10)
 
LOCAL lcStr as String
 
PUBLIC oForm as Form
 
*設置示例數據位置
 
lcDataPath ="**vfp8安裝目錄\samples\Data\**"
 
 
* 從示例Customer表調取數據
 
SELECT cust_id, company, contact FROM (lcDataPath + "Customer") ;
 
 INTO CURSOR curCust
 
GO TOP
 
 
* 創建一個包含grid的表單
 
oForm = NEWOBJECT("form1")
 
oForm.Show()
 
 
lcStr = "列寬自動調整前的grid."
 
MESSAGEBOX(lcStr)
 
 
* 通過調用Autofit方法自動調整Company列寬.
 
oForm.Grid1.Column2.AutoFit()
 
 
lcStr = "'Company'列寬調整後的grid." + CRLF+CRLF + ;
 
  "用戶可以通過雙擊列間分割線實現自動調整左列寬度."
 
MESSAGEBOX(lcStr)
 
 
* 調用grid的Autofit方法自動調整所有列寬.
 
oForm.Grid1.AutoFit()
 
 
lcStr = "全部列寬調整後的grid." + CRLF+CRLF + ;
 
  "用戶可以通過雙擊grid左上角第一列左邊的小方塊實現全部列寬自動調整"
 
MESSAGEBOX(lcStr)
 
 
RETURN
 
 
* 本例使用的Form類定義
 
DEFINE CLASS form1 AS form
 
 Height = 250
 
 Width = 483
 
 Caption = "Form1"
 
 Name = "Form1"
 
 
 ADD OBJECT grid1 AS grid WITH ;
 
  Height = 200, ;
 
  Left = 24, ;
 
  RecordSource = "curCust", ;
 
  Top = 25, ;
 
  Width = 432, ;
 
  Name = "Grid1"
 
ENDDEFINE
 
 
**********************
 
* 2隱藏Grid列
 
* 說明: 開發者可以通過Grid列的Visible屬性實現特定列的隱藏
 
********************************************************************************
 
#DEFINE CRLF CHR(13)+CHR(10)
 
 
LOCAL lcStr as String
 
PUBLIC oForm as Form
 
 
*設置示例數據位置
 
lcDataPath ="**vfp8安裝目錄\samples\Data\**"
 
 
* 從示例Customer表調取數據
 
SELECT cust_id, company, contact FROM (lcDataPath + "Customer") ;
 
 INTO CURSOR curCust
 
GO TOP
 
 
* 創建一個包含grid的表單
 
oForm = NEWOBJECT("form1")
 
oForm.Show()
 
 
lcStr = "列隱藏前的grid"
 
MESSAGEBOX(lcStr)
 
 
* 設置特定column的Visible屬性為false來隱藏它.
 
oForm.Grid1.Column2.Visible = .f.
 
 
lcStr = "設置'Company'列visible屬性為false實現隱藏後的grid"
 
MESSAGEBOX(lcStr)
 
 
RETURN
 
 
* Form class used for this sample.
 
DEFINE CLASS form1 AS form
 
 Height = 250
 
 Width = 483
 
 Caption = "Form1"
 
 Name = "Form1"
 
 
 ADD OBJECT grid1 AS grid WITH ;
 
  Height = 200, ;
 
  Left = 24, ;
 
  RecordSource = "curCust", ;
 
  Top = 25, ;
 
  Width = 432, ;
 
  Name = "Grid1"
 
ENDDEFINE
 
 
********************************************************************
 
* 3將Grid中的checkbox自動居中
 
* 說明:grid中的checkbox類新增一個設置居中位置的屬性Centered.
 
* 提示:如果checkbox不在grid中,設置Centered為true將使checkbox在其自己的控件空間範圍內居中。
 
********************************************************************
 
 
#DEFINE CRLF CHR(13)+CHR(10)
 
 
LOCAL lcStr as String
 
PUBLIC oForm as Form
 
 
*設置示例數據位置
 
lcDataPath ="**vfp8安裝目錄\samples\Data\**"
 
 
* 從示例Customer表調取數據
 
SELECT product_id, discontinu FROM (lcDataPath + "Products") ;
 
 INTO CURSOR curProd
 
GO TOP
 
* 創建一個包含grid的表單
 
oForm = NEWOBJECT("form1")
 
oForm.Show()
 
 
lcStr = "checkbox列居中前的grid."
 
MESSAGEBOX(lcStr)
 
 
* 設置checkbox的Centered屬性為true實現居中
 
oForm.Grid1.Column2.Check1.Centered = .t.
 
oForm.Refresh()
 
 
lcStr = "checkbox居中後的grid"
 
MESSAGEBOX(lcStr)
 
 
RETURN
 
 
* Form class used for this sample.
 
DEFINE CLASS form1 AS form
 
 Height = 250
 
 Width = 483
 
 Caption = "Form1"
 
 Name = "Form1"
 
 
 ADD OBJECT grid1 AS grid WITH ;
 
  Height = 200, ;
 
  Left = 24, ;
 
  RecordSource = "curProd", ;
 
  Top = 25, ;
 
  Width = 432, ;
 
  Name = "Grid1"
 
  
 
 PROCEDURE Init
 
  This.Grid1.Column2.AddObject("Check1","checkbox")
 
  This.Grid1.Column2.Check1.Caption = ""
 
  This.Grid1.Column2.CurrentControl = "Check1"
 
  This.Grid1.Column2.Sparse = .f.
 
 ENDPROC
 
 
ENDDEFINE
 
********************************************************************************
 
* 4Grid是否允許單元數據選定
 
*說明: grid的AllowCellSelection屬性設置為false, 將禁止用戶編輯grid內容,而僅僅實現如listbox般顯示功能。
 
*提示: 這個功能允許你很好的顯示grid的多列內容,但是用戶只能以行為單位進行選擇而不能選擇其中的任何一列.
 
********************************************************************************
 
#DEFINE CRLF CHR(13)+CHR(10)
 
 
LOCAL lcStr as String
 
PUBLIC oForm as Form
 
 
*設置示例數據位置
 
lcDataPath ="**vfp8安裝目錄\samples\Data\**"
 
 
* 從示例Customer表調取數據
 
SELECT cust_id, company, contact FROM (lcDataPath + "Customer") ;
 
 INTO CURSOR curCust
 
GO TOP
 
* 創建一個包含grid的表單
 
oForm = NEWOBJECT("form1")
 
oForm.Show()
 
 
lcStr = "設置AllowCellSelection屬性為false前的grid."
 
MESSAGEBOX(lcStr)
 
 
 
* 設置AllowCellSelection屬性為false來禁止對於grid的列選擇功能.
 
oForm.Grid1.AllowCellSelection = .f.
 
 
lcStr = "設置AllowCellSelection屬性為true後的grid." + CRLF+CRLF + ;
 
  "請點擊不同的列,注意數據是整行整行選定的."
 
MESSAGEBOX(lcStr)
 
 
RETURN
 
 
* Form class used for this sample.
 
DEFINE CLASS form1 AS form
 
 Height = 250
 
 Width = 483
 
 Caption = "Form1"
 
 Name = "Form1"
 
 
 ADD OBJECT grid1 AS grid WITH ;
 
  Height = 200, ;
 
  Left = 24, ;
 
  RecordSource = "curCust", ;
 
  Top = 25, ;
 
  Width = 432, ;
 
  Name = "Grid1"
 
ENDDEFINE
 
 
********************************************************************
 
* 5Grid高亮顯示
 
*說明:  grid提供5個高亮屬性來決定選定行和記錄的顯示顏色,其中HighlightStyle屬性決定了其他高亮屬性是否可用,以及grid顯示方式。
 
***********************************************************************
 
#DEFINE CRLF CHR(13)+CHR(10)
 
 
LOCAL lcStr as String
 
PUBLIC oForm as Form
 
lcDataPath ="**vfp8安裝目錄\samples\Data\**"
 
SELECT cust_id, company FROM (lcDataPath + "Customer") ;
 
 INTO CURSOR curCust
 
GO TOP
 
oForm = NEWOBJECT("form1")
 
oForm.Show()
 
 
*設置HighlightStyle屬性值為2,使得grid的高亮顏色即使在grid失去焦點後依然保持.
 
oForm.Grid1.HighlightStyle = 2
 
 
*設置HighlightForeColor屬性使得選定行的字體顏色為'黃色'
 
oForm.Grid1.HighlightForeColor = RGB(255,255,0)
 
 
*設置HighlightBackColor屬性使得選定行的背景顏色為'藍色'
 
oForm.Grid1.HighlightBackColor = RGB(0,0,255)
 
 
*設置SelectedItemForeColor屬性使得選定行的當前列字體顏色為'紅色'
 
oForm.Grid1.SelectedItemForeColor = RGB(255,0,0)
 
 
*設置SelectedItemBackColor屬性使得選定行的當前列背景顏色為'綠色'
 
oForm.Grid1.SelectedItemBackColor = RGB(0,255,0)
 
 
lcStr = "設置高亮屬性後的grid." + CRLF+CRLF + ;
 
  "在不同行列進行移動測試相應的顏色變化"
 
MESSAGEBOX(lcStr)
 
 
RETURN
 
 
* Form class used for this sample.
 
DEFINE CLASS form1 AS form
 
 Height = 250
 
 Width = 483
 
 Caption = "Form1"
 
 Name = "Form1"
 
 
 ADD OBJECT grid1 AS grid WITH ;
 
  Height = 200, ;
 
  Left = 24, ;
 
  RecordSource = "curCust", ;
 
  Top = 25, ;
 
  Width = 432, ;
 
  Name = "Grid1"
 
ENDDEFINE
 
 
********************************************************************************
 
* 6_Grid標題加入圖片
 
* 說明: Grid列標題能夠包含圖片
 
********************************************************************************
 
#DEFINE CRLF CHR(13)+CHR(10)
 
 
LOCAL lcStr as String
 
LOCAL lcDataPath as String
 
PUBLIC oForm as Form
 
lcDataPath ="**vfp8安裝目錄\samples\Data\**"
 
SELECT cust_id, company, contact FROM (lcDataPath + "Customer") ;
 
 INTO CURSOR curCust
 
GO TOP
 
 
oForm = NEWOBJECT("form1")
 
oForm.Show()
 
 
*改變grid列標頭高度來適應圖片.
 
oForm.Grid1.HeaderHeight = 22
 
 
*設置列標頭的Picture屬性到一個圖片文件
 
oForm.Grid1.Column2.Header1.Picture ="你自己找一個圖片.bmp"
 
 
lcStr = "設置圖片標頭後的grid"
 
MESSAGEBOX(lcStr)
 
 
RETURN
 
 
DEFINE CLASS form1 AS form
 
 Height = 250
 
 Width = 483
 
 Caption = "Form1"
 
 Name = "Form1"
 
 
 
 ADD OBJECT grid1 AS grid WITH ;
 
  Height = 200, ;
 
  Left = 24, ;
 
  RecordSource = "curCust", ;
 
  Top = 25, ;
 
  Width = 432, ;
 
  Name = "Grid1"
 
  
 
ENDDEFINE
 
 
********************************************************************************
 
* 7_Grid鎖定列功能
 
*說明: Grid列能夠實現鎖定,使得鎖定列始終被顯示
 
*提示:用戶可以右鍵點擊列標頭之間的位置將左側的列鎖定.
 
********************************************************************************
 
#DEFINE CRLF CHR(13)+CHR(10)
 
 
LOCAL lcStr as String
 
PUBLIC oForm as Form
 
 
lcDataPath ="**vfp8安裝目錄\samples\Data\**"
 
 
SELECT * FROM (lcDataPath + "Customer") ;
 
 INTO CURSOR curCust
 
GO TOP
 
 
oForm = NEWOBJECT("form1")
 
oForm.Show()
 
 
*設置LockColumns屬性為需要鎖定列的數量
 
oForm.Grid1.LockColumns = 2
 
 
lcStr = " 將LockColumns屬性設置為2,使得'Cust_ID'和'Company'列實現鎖定." + CRLF+CRLF + ;
 
  "用戶可以右鍵點擊列標頭之間的位置將左側的列鎖定."
 
MESSAGEBOX(lcStr)
 
 
RETURN
 
 
DEFINE CLASS form1 AS form
 
 Height = 250
 
 Width = 583
 
 Caption = "Form1"
 
 Name = "Form1"
 
 
 ADD OBJECT grid1 AS grid WITH ;
 
  Height = 200, ;
 
  Left = 24, ;
 
  RecordSource = "curCust", ;
 
  Top = 25, ;
 
  Width = 532, ;
 
  Name = "Grid1"
 
ENDDEFINE _________________ 福隆昌淨水有限公司--淨水器的專家,淨水器,飲水機,濾心!!
 
 
想了解更多,您可上幸福雞湯組.找尋!!丁澐瑄.老師.
 
 
          愛作夢 | 
			 
		  | 
	 
	
		| 回頂端 | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
  | 
   
  
		 |