Шаг 31 - Проект библиотека - Диалоговое окно - Авторы

Этот диалог в Access выглядит так:

31_1.gif (6456 b)

Итак, нам нужно в ресурсы добавить диалоговую панель. Естественно связать с классом CDialogAuthor.

31_2.gif (7950 b)

Наш диалог будет работать с DAO поэтому надо подключить заголовки.

// DialogAuthor.h : header file
//

#include "afxdao.h"

/////////////////////////
// CDialogAuthor dialog
......

А описание самого диалога должно быть доступно для функций главного диалога программы.

////////////////////////////
// CBiblioDlg dialog

#include "DialogAuthor.h"
......

Организуем запуск окна:

void CBiblioDlg::OnButtonContens() 
{
	CDialogAuthor cd;
	cd.DoModal(); 
}

Все окно готово к эксплутации. Прежде чем двинуться дальше нам нужно создать базу данных. Это можно сделать двумя способами. Используя Access и программным путем. Будет делать программным путем. Мы должны при запуске программы проверить есть ли файл базы данных, а если нет, то создать его и не пугать пользователя. Вот так и поступим. Для начала запустим DAO.

////////////////////////////////
// CBiblioDlg message handlers

BOOL CBiblioDlg::OnInitDialog()
{
	......
	
	// TODO: Add extra initialization here
	try
	{
		// при ошибке исключение
		AfxDaoInit( );
	}
	catch(...)
	{
		AfxMessageBox("Error Dao Init");
		return FALSE;	// не удалось создать диалог
	}
	return TRUE;  // return TRUE  unless you set the focus to a control
}

Так же при запуске окна мы должны проверить существования файла базы данных, если нет его - создать. Сначала определение имени. В stdafx.h.

#endif // _AFX_NO_AFXCMN_SUPPORT

#define DATABASENAME "biblio"
//{{AFX_INSERT_LOCATION}}

При инициализации проверим и если вдруг нету ее базы данных создать.

BOOL CBiblioDlg::OnInitDialog()
{
	......
	// TODO: Add extra initialization here
	try
	{
		// при ошибке исключение
		AfxDaoInit( );
	}
	catch(...)
	{
		AfxMessageBox("Error Dao Init");
		return FALSE;	// не удалось создать диалог
	}

	CDaoDatabase db;
	try
	{
		db.Open(DATABSENAME);	// попытка открытия
	}
	catch(...)
	{
		try
		{
		db.Create(DATABASENAME);	// может вернуть исключение
		}
		catch(...)
		{
			AfxMessageBox("Error Create Database");
			return FALSE;	// не удалось создать диалог
		}
	}

	if (!db.IsOpen()) return FALSE; 
	db.Close(); 

	return TRUE;  // return TRUE  unless you set the focus to a control
}

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