Шаг 368 - Вид на основе Microsoft DataGrid OLEDB

В "Шаг 364 - Встраивание DBGRID в класс вида" описано как можно встраивать GRID в вид. Если за основу взять этот шаг то изменений будет совсем мало. Сначала надо добавить описание класса CADODC и CDataGrid. Подключаем описание классов:

#include "adodc.h"
#include "_recordset.h"
#include "datagrid.h"

#define IDC_DBGRID1 111111
#define IDC_ADO 2222222 

class CTestViewGridView : public CView
{

Описываем объекты.

class CTestViewGridView : public CView
{
protected: // create from serialization only
	CTestViewGridView();
	DECLARE_DYNCREATE(CTestViewGridView)
// Attributes
public:
	CTestViewGridDoc* GetDocument();
	C_Recordset cr;
	CAdodc ca;
private:
	CDataGrid  cmg;

Обратите внимание на строку CDataGrid cmg; я просто заменил класс для переменной cmg так как все остальное не меняется. Ну и теперь инициализироваться ADODC и передать указатель набора записей в GRID.

////////////////////////////////////
// CTestViewGridView message handlers
int CTestViewGridView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	CRect rc;
	GetClientRect(&rc);
	cmg.Create(_T("STATIC"), "Hi", WS_CHILD | WS_VISIBLE, CRect(0, 0, 400, 200), this, IDC_DBGRID1);
	cmg.ShowWindow(SW_SHOW);
	ca.Create(_T("STATIC"), "Hi", WS_CHILD | WS_VISIBLE, CRect(0, 0, 400, 200), this, IDC_ADO);
    	ca.SetConnectionString("PROVIDER=MSDASQL.1;dsn=Auto;uid=sa;pwd=123;database=auto;");
	ca.SetRecordSource("SELECT * FROM car"); 
	ca.Refresh(); 
	cr=ca.GetRecordset(); 
    	ca.SetConnectionString("PROVIDER=MSDASQL.1;dsn=Auto;uid=sa;pwd=123;database=auto;");
	ca.SetRecordSource("SELECT * FROM car"); 
	ca.Refresh(); 
	cr=ca.GetRecordset(); 
	long i=cr.GetRecordCount(); 
	cmg.SetRefDataSource(cr);
	cmg.UpdateData(); 
	return 0;
}

Запускам и смотрим.

368_1.gif (6700 b)

Вывод из всех этих шагов напрашивается сам по себе. Что VC так же удачно и просто использует OCX как и VB.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 15.09.2001