Шаг 27 - Foreign Class и классы Recordset продолжение

Давайте посмотрим, что происходит при связывании элемента управления и переменной набора записей при нашем Foreign классе.

void CTestDAOForeignDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTestDAOForeignDlg)
	DDX_FieldText(pDX, IDC_EDIT1, m_pSet->m_Text, m_pSet);
	//}}AFX_DATA_MAP
}

Функция DDX_FieldText управляет int, short, long, DWORD, CString, float, double, BOOL, или BYTE типами данных при обмене между редактирующимся элементом управления диалога и членами данных recordset.

27_1.gif (13976 b)

Теперь нам нужно подключить функции к нашему классу Set.

// DaoMySet.h : header file
//

#include "afxdao.h"

////////////////////////////
// CDaoMySet DAO recordset

Вы помните что в конструктору класс диалога наш класс набора записей установлен как NULL, так не пойдет. Объект нужно создать.

CTestDAOForeignDlg::CTestDAOForeignDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CTestDAOForeignDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTestDAOForeignDlg)
	m_pSet = NULL;
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	m_pSet=new CDaoMySet();	// новый обьект
	m_pSet->Open();		// открыть  
}

Теперь при запуске программы у нас в элементу управления будет первая запись.

27_2.gif (5069 b)

Но нам бы нужно удалить динамический объект. Удалим.

BOOL CTestDAOForeignDlg::DestroyWindow() 
{
	m_pSet->Close(); 
	delete m_pSet;
	CDialog::DestroyWindow();
	return TRUE;
}

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