程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> DataGrid控件用法詳解

DataGrid控件用法詳解

編輯:關於VC++

寫在前面

剛寫這個題目,就覺得肩上重了,不知道自己能否對DataGrid詳解之。希望大家共同指正。DataGrid控件是VC方便地用來顯示數據的一個極好的網格控件,我不否認網上還有期它不少優秀的網格控件,但我總喜歡使用微軟自已的東西 。除非它滿足不了我的需要。不是我太依賴Microsoft,你想想,如果你最常用的開發工具是VC,VC是微軟的主打開發工具,它與Windows系統的兼容性極好,連它的控件也不例外,你為何不先選用成熟的代碼,如果它升級了,你的系統幾乎不作改動就可以繼續為你效勞,有什麼不好,這不完全是那種無謂的依靠,而是利用 。更重要的是你可以更注重你的系統功能,而不是代碼的細節。

之所以要寫這樣的文章,因為有幾個網友在問我網格控件的用法,我想也許其他朋友也有用(如果真的是這樣,我很高興)。

一、我先交待主要內容

在網格控件中顯示查詢的數據結果。

對網格控件的顯示進行控制(如列寬)。

對網格內容格式進行控制(如將小於1的小數顯示成百分數)

二、准備工作

先建立一個工程,我的主框架選用對話框,然後插入你DataGrid控件,見如圖1

圖1

找到Microsoft DataGrid OLEDB 6.0 控件,確定,出現圖所示對話框,這個對話框中你要根據需要選擇的類,這些類封裝了這個控件的幾乎所有功能有方法。這裡我只選擇了三個類:CDataGrid,CColumns,CColumn,如圖2(我們知道,ActiveX是基於COM的,這三個類是對這個控件的COM查詢接口的封裝,使你在使用時幾乎不知道自己在使用COM控件。正因為如此,你要想直接查看這個控件的源代碼,也就不可能了。)

圖2

三、功能實現及代碼

1.在網格控件中顯示查詢的數據結果。

數據庫接庫,並取得查詢的數據結果。這裡我使用了一個ADO封裝類(當然你可以使用其它的方法方法數據庫,而不會影響控件的使用)。

CADODatabase m_DBCn;//數據庫對象
CADORecordset m_Rs;//記錄集對象
CDataGRid m_ctrlDG;//DataGrid控件對象
...
CString strConnection; strConnection.Format(_T("Provider=Microsoft.Jet.OLEDB.4.0;")
   _T("Data Source=note.mdb"));
m_DBCn.Open((LPCTSTR)strConnection); //打開程序數據庫
m_Rs.SetDatabase(&m_DBCn); m_Rs.Open(_T("select * from test;")); //執行查詢
m_ctrlDG.SetRefDataSource((LPUNKNOW)m_Rs.GetRecordset());//顯示在DataGrid控件中

如圖3:

圖3

2.對網格控件的顯示進行控制(如列寬)。 要實現對列的控制,就要先取得列對象。

CColumns cols = m_ctrlDG.GetColumns();//先取得列集

CColumn col = cols.GetItem(vt); //再取得列集中的列,由VARIANT vt變量指出列的索引號

然後,你就可以對當前列為所欲為,這裡我對它設置列寬 col.SetWidth(fWidth);//fWidth指定列寬 如圖4

圖4

3.對網格內容格式進行控制(如將小於1的小數顯示成百分數)

要設置列的顯示格式,還是要先取得列,再對它設置格式,取得列的方法同上。

col.SetNumberFormat(_T("0.0%"));//百分數格式 如圖5

圖5

4.除此之外,我們還可以對它多行顯示,如圖6

圖6

5.另外,還可以利用消息機制,對控件的HeadClick消息處理,使控件能進行排序。 (具體情況參見源代碼)

四、結束語

細心的朋友會發現,查看相關類的方法名(函數名),能故名思意,看出控件的功能,另外在插入控件時,一般有也幫助文件,不過是針VB的,而且VB的調用方法與VC差別較大,但只有對比VC和VB方法名的相似之處,你還是可以很快對這款控件上手,並運用到你的項目中去。 

本文源程序在VC6.0英語版,Windows XP調試通過,並附源程序(工程名 TestGrid)。DataGrid控件的功能遠不止這此,希望本文能拋磚引玉,歡迎有興趣的朋友交流 eMail:[email protected]

本文配套源碼

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved