Как связать CRecordset с CDialog
В документации Visual C++ ENROLL описывается, как
соединить элементы управления CRecordView с полями
переменных CRecordset. Небольшая доработка поможет
связать поля переменных с элементами управления
CDialog. В данной статье описываются шаги, которые
необходимо предпринять для этого.
Подключить CRecordset к CDialog можно точно так же, как
CRecordset к CRecordView. Как только CRecordset и CDialog созданы,
проделайте следующие шаги:
- При помощи ClassWizard, укажите класс CRecordset как 'foreign
class' для CDialog. Вот пример, как это делается с
диалогом CAboutDlg в примере ENROLL:
- Для Visual C++ 2.x, из директории \MSVC\MFC\SAMPLES\ENROLL\STEP1
загружается проект ENROLL step 1, а для Visual C++ 4.0 из
директории \MSDEV\SAMPLES\MFC\TUTORIAL\ENROLL\STEP1.
- Запускается ClassWizard (CTRL+W).
- В выпадающием списке 'Class Name' выбирается класс
'CAboutDlg'.
- В ClassWizard, выбирается закладка 'Class Info'.
- В выпадающем списке 'Foreign Class' выбирается 'CSectionSet'.
CSectionSet это класс CRecordset который Вам необходимо
связать с диалогом.
- В окошке редактирования 'Foreign Variable' напишите m_pSet
(произвольное название).
После этого для класса CAboutDlg будет создана
переменная-член m_pSet. Переменная m_pSet будет
указывать на объект CSectionSet.
- В Visual C++ 4.0, чтобы добавить элементы управления к
CDialog, воспользуйтесь редактором ресурсов. В более
ранних версиях Visual C++, для этого прийдётся
воспользоваться AppStudio.
- Добавьте следующий код к CDialog, чтобы назначать,
открывать и закрывать записи (recordset). Например:
BOOL CAboutDlg::OnInitDialog()
{
CEnrollDoc * pDoc=(CEnrollDoc *) (GetParentFrame()->
GetActiveDocument());
m_pSet= &(pDoc->m_SomeRecordset);
m_pSet->Open();
CDialog::OnInitDialog();
return TRUE;
}
Перед тем, как использовать этот код,
убедитесь, что объект CSectionSet (наследованный от
CRecordset) объявлен как public переменная класса CEnrollDoc (наследованного
от CDocument). Обратите внимание, что в коде,
приведённом выше, эта переменная называется
'm_SomeRecordset'. Так же можно добавить дополнительный
код для проверки CDBExceptions а так же чтобы позволить
пользователю перемещаться по записям.
ЗАМЕЧАНИЕ: данный код не закрывает объект
CRecordset. Это можно сделать в OnOK и OnCancel в деструкторе
CDialog, либо когда объект CRecordset самостоятельно
разрушится.
ССЫЛКИ
Более подробную информацию о 'Foreign Class' и 'Foreign
Variable' возможностях визарда (ClassWizard), перейдите на
закладку 'Class Info' в ClassWizard и кликните Help.
|