Шаг 34 - Проект библиотека - Диалоговое окно - Авторы - Кнопки и сохранение данных

Итак, нас осталось сделать кнопки навигации и сохранение данных при изменении. Одна кнопка вперед есть. Надо сделать кнопку назад, в самое начало и в самый конец.

34_1.gif (2441 b)

Код к ним сделаем.

void CDialogAuthor::OnButtonNext() 
{
	try
	{
		m_pAuthor->MoveNext();	// вперед 
		if (m_pAuthor->IsEOF()) throw CString(""); // если это последняя то новая нужна 
		UpdateData(FALSE);		// показать что там 
	}
	catch(...)			// если последняя, то создать новую
	{
		m_pAuthor->AddNew();
		m_pAuthor->Update();
		m_pAuthor->MoveLast();	// на последнею
		UpdateData(FALSE);		// показать что там
	}
}

void CDialogAuthor::OnButtonLast() 
{
	m_pAuthor->MoveLast();		// на последнюю
	UpdateData(FALSE);	
}

void CDialogAuthor::OnButtonPrev() 
{
	m_pAuthor->MovePrev();
	if (m_pAuthor->IsBOF())
		m_pAuthor->MoveNext();	// вперед если ушли за таблицу 
	UpdateData(FALSE);	
}

void CDialogAuthor::OnButtonFirst() 
{
	m_pAuthor->MoveFirst();		// на первую
	UpdateData(FALSE);
}

Теперь наша задача будет научиться сохранять изменения если вдруг что-то введено. Так как при любом перемещении все происходит одинаково мы создадим функцию SaveDate.

void CDialogAuthor::SaveData()
{
	m_pAuthor->Edit();		// начать редактирование
	UpdateData(TRUE);		// сохранить данные
	m_pAuthor->Update();	// подтвердить
}

И теперь ее нужно вызывать при каждом перемещении.

void CDialogAuthor::OnButtonNext() 
{
	try
	{
		SaveData();	 
		......
	}
	......
}

void CDialogAuthor::OnButtonLast() 
{
	SaveData();
	......
}

void CDialogAuthor::OnButtonPrev() 
{
	SaveData();
	......
}

void CDialogAuthor::OnButtonFirst() 
{
	SaveData();
	......
}

BOOL CDialogAuthor::DestroyWindow() 
{
	SaveData();
	......
}

Ну и давайте пояснения, что ли сделаем к полям.

34_2.gif (3936 b)

И теперь все работает очень похоже на Access.

34_3.gif (6552 b)


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