Шаг 40 - Пробуем CDaoNavigator

Итак, у нас есть навигатор. Давайте посмотрим, как он будет работать с обычным проектом. Создаем проект с именем TestDao1 на базе диалогового окна. Создадим некую базу данных. Имя у нее TestDAO1, а в ней таблица Piple. Вот она.

40_1.gif (2284 b)

Добавляем наш класс из компонентов.

40_2.gif (2557 b)

Подключаем описание его к классу диалога.

///////////////////////////
// CTestDao1Dlg dialog

#include "DaoNavigator.h"

class CTestDao1Dlg : public CDialog
{
// Construction
public:
	CTestDao1Dlg(CWnd* pParent = NULL);	// standard constructor
	CDaoNavigator  cNavigator;
// Dialog Data

Создаем набор записей на основе таблице в базе данных.

40_3.gif (2383 b)

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

CTestDao1Dlg::CTestDao1Dlg(CWnd* pParent /*=NULL*/)
	: CDialog(CTestDao1Dlg::IDD, pParent)
{
	m_pSet = new CSet();
	m_pSet->Open(); 
}
......
void CTestDao1Dlg::OnDestroy() 
{
	CDialog::OnDestroy();
	delete m_pSet;	
}

В OnInitDialog настраиваем навигатора.

BOOL CTestDao1Dlg::OnInitDialog()
{
	CDialog::OnInitDialog();
	cNavigator.SetRecordset(m_pSet); 
	......
}

Ну а теперь элементы управления на диалоговое окно, кнопки, код к ним.

void CTestDao1Dlg::OnButtonFirst() 
{
	SaveData();
	cNavigator.OnButtonFirst(); 
	UpdateData(FALSE);	
}

void CTestDao1Dlg::OnButtonLast() 
{
	SaveData();
	cNavigator.OnButtonLast(); 
	UpdateData(FALSE);	
}

void CTestDao1Dlg::OnButtonNext() 
{
	SaveData();
	cNavigator.OnButtonNext(); 
	UpdateData(FALSE);
}

void CTestDao1Dlg::OnButtonPrev() 
{
	SaveData();
	cNavigator.OnButtonPrev(); 
	UpdateData(FALSE);
}

Функция SaveData Вам известна из прошлых шагов. Как видите применение класса навигации просто сэкономило нам время. Самое главное всегда его применять, если в нем ошибка исправить надо будет один раз, в одном классе.


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 11.08.2001