C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 46 - Еще одна виртуальная функция CDaoDialog еще меньше кода / DAO / Visual C++

Шаг 46 - Еще одна виртуальная функция CDaoDialog еще меньше кода

Заметили, что в прошлом шаге нам приходилось каждый раз обновлять записи при перемещении. Обновлять те записи, которые не привязаны к элементам управления через DDX. Это немного напрягает. Выход опять в использовании виртуальной функции. Мы ее создадим и назовем OnUpdateSet. Эта функция будет вызываться каждый раз после вызова DDX. Ее описание:

class CDaoDialog : public CDialog
{
// Construction
public:
	virtual void OnUpdateSet();	// код для обновления не связанных в диалоге записей
				// вызывается при перемещении
	virtual void OnSave();	// код для сохранения не связанных в диалоге записей
				// вызывается при сохранении
	void Last();
	......
};

Пустая реализация:

void CDaoDialog::OnUpdateSet()
{

}

Вызов при каждом перемещении.

void CDaoDialog::Next()
{
	SaveData();
	cNavigator.OnButtonNext();
	UpdateData(FALSE);
	OnUpdateSet();	   
}

void CDaoDialog::Prev()
{
	SaveData();
	cNavigator.OnButtonPrev(); 
	UpdateData(FALSE);
	OnUpdateSet();	
}

void CDaoDialog::First()
{
	SaveData();
	cNavigator.OnButtonFirst(); 
	UpdateData(FALSE);
	OnUpdateSet();
}

void CDaoDialog::Last()
{
	SaveData();
	cNavigator.OnButtonLast(); 
	UpdateData(FALSE);	
	OnUpdateSet();
}

А вот теперь можно изменить прошлый проект. Реализовать ее.

void CAllDialog::OnUpdateSet()
{
	m_Book.SetRecord(m_pSet->m_ID_BOOK);
	m_Piple.SetRecord(m_pSet->m_ID_PIPLE); 
}

И теперь при каждом перемещении она будет вызываться. Так, что всякие там Next, Prev нас не волнуют больше. Ну, и теперь ее же можно вызывать в OnInitDialog для начальной настройки.

BOOL CAllDialog::OnInitDialog() 
{
	......
	OnUpdateSet();	// обновить Combo
	
	return TRUE;	// return TRUE unless you set the focus to a control
			// EXCEPTION: OCX Property Pages should return FALSE
}

Еще меньше кода, еще проще и надежнее программировать. В проекте находится класс CDaoDialog упакованный для использования в Component Gallery, как ogx файл.


Загрузить проект | |
Автор Каев Артем.
[AD]