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 руб./мес


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




 34 - Проект библиотека - Диалоговое окно - Авторы - Кнопки и сохранение данных / DAO / Visual C++

Шаг 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)


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