日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DataGrid方法标注

發(fā)布時間:2025/5/22 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DataGrid方法标注 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在VS2010中無法增加了CColumn和Ccolumns類

解決方案,方案名->右擊->添加類->ActiveX控件中的MFC類->添加彈出了“從ActiveX控件添加類向?qū)?#xff0c;然后選擇”文件“->位置處填寫你所添加的控件的.Ocx文件(C:\WINDOWS\system32\MSDATGRD.OCX),在這里我只是添加了CColumn 和CColumns 兩個類。

?

注意:用這種方法添加的Ccolumn和Ccolumns類,不僅函數(shù)名會改變,而且在運用的時候會出現(xiàn)各種問題,連最基本的Ccolumns cols=m_grid.GetItem(ColeVariant(long(0)));編譯都不能通過,更是由于很多函數(shù)名的更改,造成很多困難。所以,我們可以先在VC++6.0中添加Microsoft DataGrid Control Version 6.0(OLEDB)控件,IDE會自動給我們添加所需要的函數(shù),將添加后的Ccolumn和Ccolumns的頭文件和源文件,復(fù)制到我們VS2008工程目錄下,將它們添加到工程中,就可以正常使用了,而且編譯也不會出任何問題!

二、在DLG視圖上,右擊,選中:插入ActiveX控件,選擇:Microsoft DataGridControl Version 6.0(OLEDB),然后將此Grid控件關(guān)聯(lián)一個控件變量m_dataGrid

三、初始化MS控件(即微軟件的軟件)

在CdlgApp類中的initInstance()中加入:

[cpp]?view plaincopy
  • AfxEnableControlContainer();???//初始化MS控件??
  • 四、引入ADO控件

    1、導(dǎo)入庫文件

    使用ADO前必須在工程的stdafx.h文件最后用直接引入符號#import引入ADO庫文件,以使編譯器能正確編譯。代碼如下:

    [cpp]?view plaincopy
  • #import?"C:\Program?Files\commonfiles\system\ado\msado15.dll"?no_namespacerename("EOF","EndOfFile")rename("BOF","FirstOfFile")??
  • ADO類的定義是作為一種資源存儲在ADO DLL(msado15.dll)中,在其內(nèi)部稱為類型庫。

    類型庫描述了自治接口,以及C++使用的COM vtable接口。

    當使用#import指令時,在運行時Visual C++需要從ADO DLL中讀取這個類型庫,

    并以此創(chuàng)建一組C++頭文件。這些頭文件具有.tli 和.tlh擴展名,#import引入ADO庫文件的代碼編譯后,在項目的目錄下生成了這兩個文件。在C++程序代碼中調(diào)用的ADO類要在這些文件中定義。

    程序的第三行指示ADO對象不使用名稱空間,在有些應(yīng)用程序中,由于應(yīng)用程序中的對象與ADO中的對象之間可能會出現(xiàn)命名沖突,所以有必要使用名稱空間。如果要使用名稱空間,則可把第三行程序修改為: rename_namespace("AdoNS")。第四行代碼將ADO中的EOF(文件結(jié)束)更名為adoEOF,因為文件的結(jié)尾也是以EOF結(jié)尾的,是為了避免與定義了自己的EOF的其他庫沖突。 至于改為什么名字,可以根據(jù)自己的命名習(xí)慣自己確定。

    如何出現(xiàn)編譯錯誤,可能是軟件沒能注冊成功的原因,可以手動在? 開始->運行中 寫:regsvr32? (msado15.dll的地址,可以直接裝msado15.dll拖到運行框中,將會自動出現(xiàn)它的地址)??

    2、初始化COM環(huán)境

    OLE DB 是基于COM技術(shù)編寫的,ADO是OLE DB基礎(chǔ)之上的用戶程序,

    OLE DB是一個COM組件,在訪問COM組件的時候需要初始化COM庫,方法如下:

    (1)??::CoInitialize(NULL); //初始化OLE/COM庫環(huán)境

    //對數(shù)據(jù)庫的訪問在上下代碼之間寫,下面第三步就應(yīng)該寫在這里

    ::CoUninitialize();//既然初始化了環(huán)境,當然一定要記得釋放他了

    (2)也可以調(diào)用MFC全局函數(shù)

    AfxOleInit();

    五:三大ADO指針的創(chuàng)建、實例化和與DataGrid控件的關(guān)聯(lián)

    [cpp]?view plaincopy
  • _ConnectionPtr?pConnection;??
  • ??
  • _RecordsetPtr?pRecordset;??
  • ??
  • _CommandPtr?pCommand;??
  • ??
  • pConnection.CreateInstance(__uuidof(Connection));??
  • ??
  • pRecordset.CreateInstance(__uuidof(Recordset));??
  • ??
  • pCommand.CreateInstance(__uuidof(Command));??
  • ??
  • try{??
  • ??
  • ?????????m_ptrConnection.CreateInstance(__uuidof(Connection));???
  • ??
  • ?????????ASSERT(m_ptrConnection);??//?判斷m_ptrConnection是否有效??
  • ??
  • ?????????TCHAR?currentDir[1024]={0};??
  • ??
  • ?????????GetCurrentDirectory(1024,currentDir);??
  • ??
  • ?????????CString?connectStr;??
  • ??
  • ?????????connectStr.Format(L"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=%s\\db2.mdb",currentDir);//我的數(shù)據(jù)庫名為db2.mdb??
  • ??
  • ?????????m_ptrConnection->ConnectionString=(_bstr_t)connectStr;??
  • ??
  • ?????????if(m_ptrConnection->Open(_bstr_t(connectStr),"","",adConnectUnspecified)?!=?S_OK)??????//成功連接數(shù)據(jù)庫??
  • ??
  • ?????????{??
  • ??
  • ??????????????return?false;??
  • ??
  • ?????????}??
  • ??
  • ?????}?catch(...)??
  • ??
  • ?????{??
  • ??
  • ?????????CString?str=L"連接數(shù)據(jù)庫失敗";??
  • ??
  • ?????????AfxMessageBox(str);??
  • ??
  • ?????}??
  • //下面實現(xiàn)打開連接

    [cpp]?view plaincopy
  • m_ptrRecordset->?CursorLocation?=?adUseClient;???//非常重要,如果沒有,則無法顯示數(shù)據(jù)??
  • ??
  • HRESULT?hr?=?m_ptrRecordset->Open(_bstr_t(L"select*?from?Main"),?_variant_t((IDispatch*)m_ptrConnection,?TRUE),??
  • ??
  • ??????????????adOpenStatic,adLockBatchOptimistic,?adCmdUnknown);??
  • ??
  • m_dataGrid.putref_DataSource((LPUNKNOWN)m_ptrRecordset);??
  • ??
  • m_dataGrid.Refresh();??
  • ??
  • m_ptrConnection->Close();??//在窗口銷毀時,關(guān)閉與數(shù)據(jù)庫連接,?一般是在DestroyWindow()中實現(xiàn)??
  • 標注:putref_DataSource((LPUNKNOWN)m_ptrRecordset);

    1、這句代碼是將CrecordSet對象與我們的DataGrid控件連接起來的函數(shù),我看代碼查了好久才查到,在VC6.0中原為SetRefDataSource,不知道在VS2010中怎么就變成它了,隨便改接口函數(shù)真是害死人。

    2、m_ptrRecordset->CursorLocation = adUseClient;

    adUseClient是需要把數(shù)據(jù)傳輸?shù)奖镜?#xff0c;應(yīng)用舉例是斷開數(shù)據(jù)庫進行Recordset操作,即在內(nèi)存中操作,而不直接寫入遠端數(shù)據(jù)庫,相反地有,adUseServer,是指直接在數(shù)據(jù)庫中進行操作,下面這個例子在數(shù)據(jù)量大的時候,進行Find操作,比adUseClient省了很多時間。

    3。不用時關(guān)閉連接:m_ptrConnection->Close();??//在窗口銷毀時,關(guān)閉與數(shù)據(jù)庫連接, 一般是在DestroyWindow()中實現(xiàn)

    注意:我原想用ADO控件和DataGrid控件的結(jié)合的方法來實現(xiàn),但在DataGrid控件的屬性上設(shè)置DataSourceO 為ADO控件的ID時,出現(xiàn)很多朋友出現(xiàn)的錯誤:“該組件上的 GetValue 操作失敗,生成錯誤代碼 0x80020003”查了很多資料都沒有辦法解決。

    DataGrid函數(shù)

    COleVariant()是VARIANT的封裝類,只是為了解決數(shù)據(jù)轉(zhuǎn)換問題而設(shè)計的

    m_grid.GetRow()返回用戶點擊的行號

    m_grid.RowTop()返回指定行,頂部所在位置,如果是可見行,其值為負值

    m_grid.GetRowHeight()返回行高

    m_grid.SetText(s);?? 設(shè)置grid中的值

    ?

    m_grid.put_row(m_grid.get_row());? ///以下三句,實現(xiàn),獲取當前選中空格的數(shù)據(jù)
    m_grid.put_col(m_grid.get_col());
    CString str = m_grid. get_Text() ;獲得當前焦點所在單元格數(shù)據(jù)。

    如何給DATAGRID控件生成的列表添加序號

    請參看我的另一篇文章:http://blog.csdn.net/harvic880925/article/details/7790980

    總結(jié)

    以上是生活随笔為你收集整理的DataGrid方法标注的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 久久精品国产亚洲av成人 | 亚洲人成无码www久久久 | 国产视频xxx | 国产www在线 | 99久久精品国产一区色 | 波多野结衣视频免费观看 | wwwwxxx日本 | 日韩视频在线观看一区二区三区 | 久久一级视频 | 亚洲精品第三页 | 一级黄色片在线观看 | 中国美女黄色 | 成人黄色av网址 | 日本在线观看a | 久久在线免费观看视频 | 欧美一区二区三区久久综合 | 国产一级特黄aaa大片 | 久久久久国产精品夜夜夜夜夜 | 色香欲综合网 | 日韩精品导航 | 在线免费观看污 | 不卡av电影在线观看 | 青青草视频免费 | 国产精品99久久久久久一二区 | 久久久久久久久成人 | 国产男女在线 | 亚洲成人精品一区二区三区 | 中文字幕在线天堂 | 国产女人水真多18毛片18精品 | 在线看一区二区 | 成都免费高清电影 | 亚洲国产精品无码观看久久 | 色多多视频在线 | 爱综合网 | 亚洲国产av一区二区三区 | 大肉大捧一进一出好爽视频动漫 | 熊猫电影yy8y全部免费观看 | 免费黄色观看 | 麻豆一区二区三区精品视频 | 国产 丝袜 欧美中文 另类 | 蜜桃视频一区二区三区在线观看 | 亚洲欧洲日韩综合 | 日本3级网站 | 亚洲毛片在线观看 | 日韩av免费在线观看 | 国产午夜精品久久久久 | 91热热 | 日韩欧美中文字幕精品 | 澳门av网站 | 黄色网页免费在线观看 | 国产无精乱码一区二区三区 | 伊人免费视频 | 欧美激情在线一区二区 | 特级黄色大片 | 欧美乱大交xxxxx春色视频 | 久久精品国产亚洲AV高清综合 | 91尤物视频在线观看 | 久久久久久久久久久久久久久久久久久久 | 韩国伦理片在线看 | 超碰在 | 亚洲精品污一区二区三区 | 免费成人结看片 | 亚洲综合在线一区二区 | 国产欧美一区二区三区视频在线观看 | 九色国产视频 | yy6080久久 | 健身教练巨大粗爽gay视频 | 99国产精品99久久久久久粉嫩 | 青春草在线视频免费观看 | 成人啪啪网站 | 99热这里只有精品8 国产一卡二 | 97夜夜操| 国产男女猛烈无遮挡a片漫画 | 末发成年娇小性xxxxx | 91精品国产色综合久久不卡98 | 五月天国产视频 | 日韩综合精品 | 久久久无码人妻精品无码 | 丰满人妻妇伦又伦精品国产 | 精品少妇av | 丰满多毛的大隂户视频 | 亚洲日本久久 | 国产剧情演绎av | 国产免费黄色小视频 | 三区在线| 精品三级在线观看 | 日韩欧美在线视频观看 | 中文字幕在线免费观看 | 欧美成人片在线 | 色哟哟国产精品色哟哟 | 精品久久二区 | 十大黄台在线观看 | 国产成人精品在线 | 久久亚洲av无码西西人体 | 国产亚洲精品久久久久久打不开 | 免费日韩网站 | 成人一级影视 | 黄色片视频免费 | 欧美精品免费一区二区 |