 |
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 _________________ 福隆昌淨水有限公司--淨水器的專家,淨水器,飲水機,濾心!!
想了解更多,您可上幸福雞湯組.找尋!!丁澐瑄.老師.
愛作夢 |
|
回頂端 |
|
 |
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|