Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Класс CFilesDlg предназначен для выбора имен файлов базы данных: файла оперативных данных (Акты) и файла справочных данных (Расценки).
Создание ресурса диалогового окна с идентификатором IDD_FILESDLG.
Создать форму окна выбора имен файлов (см. рис. 10.4).
Файлы Базы Данных |
Файл Акт Akt1.akt Выбор файла Акт Файл Расценки Cena1.cen Выбор файла Расценки OK Cancel |
Рис. 10.4. Диалоговое окно выбора имен файлов
- Создать шаблон диалогового окна.
Для этого выполнить команду Project-> Add Resource и в появившемся окне Add Resource дважды щелкнуть на элементе Dialog в списке Resource Type. Появляется шаблон диалогового окна с идентификатором IDD_DIALOG1 и заголовком Dialog, а также панели инструментов Dialog Editor и Toolbox. В окне имеются две кнопки OK и Cancel. Отмасштабировать окно.
- В окне свойств окна Properties изменить значение свойства ID с IDD_DIALOG1 на IDD_FILESDLG, а также – значение свойства Caption с Dialog на Файлы Базы Данных.
- Установить язык Русский. Для этого в окне Resource View щелкнуть на идентификаторе IDD_FILESDLG. В появившемся окне свойств Properties щелкнуть на свойстве Language и в списке выбрать язык Русский.
- Добавить в диалоговое окно элементы управления: две надписи (инструмент Static Text), два текстовых поля (Edit Control) и две кнопки (Button). Щелкнуть сначала на инструменте панели инструментов Toolbox, а затем - в выбранной области диалогового окна. Для изменения свойств элементов щелкнуть на элементе и в окне свойств Properties ввести значения: для надписей только в свойство Caption – Файл Акты и Файл Расценки; для текстовых полей в свойство ID – IDC_FILEAKT и IDC_FILECENA; для кнопки выбора файла Акты в свойство ID – IDC_BUTTONAKT, в свойство Caption – Выбор файла Акты; для кнопки выбора файла Расценки в свойство ID – IDC_BUTTONCENA, в свойство Caption – Выбор файла Расценки; для кнопки OK в свойство ID – IDC_BUTTONOK; для кнопки Cancel – IDC_BUTTONCANCEL.
2) Создание класса диалогового окна.
- Открыть шаблон диалогового окна при отсутствии его. Для этого щелкнуть на вкладке Resource View или выполнить команду View->Resource View и в появившемся окне Resource View открыть папки Pr, Pr.rc, затем – Dialog и дважды щелкнуть на идентификаторе IDD_FILESDLG.
- Щелкнуть правой кнопкой мыши на пустом месте диалогового окна и выполнить команду контекстного меню Add Class. Откроется окно мастера MFC Class Wizard.
- Ввести в поле Class name имя нового класса CFilesDlg, в списке Base class выбрать имя базового класса диалоговых окон CDialog, проверить наличие в поле Dialog ID идентификатора IDD _ FILESDLG, и затем щелкнуть на кнопке Finish.
3) Связывание элементов управления диалогового окна с
функциями-обработчиками сообщений
Связать кнопку Выбор файла Акты.
- Открыть окно Class View и щелкнуть на имени класса CFilesDlg. Появится окно свойств Properties.
- Щелкнуть на кнопке желтая молния Events (События) и в появившемся списке идентификаторов раскрыть идентификатор IDC_BUTTONAKT (щелкнуть на символе +). Появляется список сообщений
- Выбрать элемент BN_CLICKED, а в комбинированном списке справа щелкнуть на команде <Add> OnBnClickedButtonakt. Прототип новой функции-обработчика будет добавлен в файл FilesDlg.h, а ее текст – в файл FilesDlg.cpp.
- Аналогично связать три остальные кнопки: кнопку Выбор файла Расценки (IDC_BUTTONCENA) с функцией-обработчиком OnBnClickedButtoncena(), кнопку OK (IDC_BUTTONOK) с функцией-обработчиком OnBnClickedButtonok(), кнопку Cancel (IDC_ BUTTONCANCEL) с функцией-обработчиком OnBnClickedButtoncancel().
4) Связывание переменных класса с элементами окна
Связать с текстовым полем Файл Акты.
- Запустить мастер создания переменных класса Add Member Variable Wizard. Для этого открыть окно Class View и выделить имя класса CFilesDlg. Затем либо выполнить команду Project->Add Variable, либо щелкнуть правой кнопкой мыши на имени класса и выполнить команду контекстного меню Add->Add Variable. А можно также еще открыть диалоговое окно, щелкнуть правой кнопкой мыши на пустом месте окна и выполнить команду контекстного меню Add Variable.
- В появившемся окне Add Member Variable Wizard-Pr выполнить следующее: установить флажок Control variable; в списке Control ID выбрать идентификатор текстового поля IDC_FILEAKT; в списке Category выбрать значение value; в списке Variable type появится CString; ввести в поле Variable name строку m_strFileakt; в списке Access проверить наличие элемента public; и наконец, щелкнуть на кнопке Finish. Появляется содержимое файла CFilesDlg.cpp с функциями класса CFilesDlg.
- Аналогично связать с текстовым полем Файл Расценки (IDC_FILECENA) переменную класса m_strFilecena.
5) Определение и объявление переменных – имен файлов БД.
-Добавить в файл MainFrm.cpp определение переменных – имен файлов Базы Данных.
CString AktFile=”akt1.akt”; //определение переменных
CString CenaFile=”cena1.cen”; //внешний класс памяти
int AktMode=0;
int CenaMode=0;
-Добавить в файл FilesDlg.cpp объявление переменных – имен файлов Базы Данных.
extern CString AktFile;
extern CString CenaFile;
6) Добавление функции-обработчика OnInitDialog().
Необходимо создать функцию CFilesDlg:OnIninDialog(), которая вызывается перед отображением диалогового окна. В результате в текстовых полях выводятся имена файлов.
- Открыть окно Class View и щелкнуть на имени класса CFilesDlg. Появится окно свойств Properties.
- Щелкнуть на кнопке Overrides (с изображением зеленого ромба) и в списке функций выбрать элемент OnInitDialog(), а в комбинированном списке справа щелкнуть на команде <Add> OnInitDialog(). Прототип новой функции-обработчика OnInitDialog() будет добавлен в файл FilesDlg.h, а ее текст – в файл FilesDlg.cpp.
- Заменить текст функции.
BOOL CFilesDlg::OnInitDialog()
{
CDialog()::OnInitDialog();
m_strFileakt=AktFile;//имена файлов присваиваются переменным
m_strFilecena=CenaFile;//m_str…класса
UpdateData(FALSE);//заносит в текст. поле значения перем. m_str.
return TRUE;
}
7) Добавление текстов функций-обработчиков в файл CFilesDlg.
Для кнопки Выбор файла Акты:
void CFilesDlg::OnBnClickedButtonakt()
{
CString strAkt;
static char Filter[]="Akt Files(*.akt)|*.akt||";//фильтр имен ф.
CFileDialog dialog(TRUE, "*.akt", strAkt, OFN_ HIDEREAD-
ONLY | OFN_OVERWRITEPROMPT, Filter);//откр. диал. окна
if (dialog.DoModal()==IDOK)//вывод диалог. окна
{
strAkt=dialog.GetPathName();//возвр. имя файла с указ. пути
m_strFileakt=strAkt;
UpdateData(FALSE);//заносит в текст. поле знач. перем.m_str
}
}
Для кнопки Выбор файла Расценки:
void CFilesDlg::OnBnClickedButtoncena()
{
CString strCena;
static char Filter[]="Cena Files (*.cen)|*.cen||";
CFileDialog dialog (TRUE,"*.cen",strCena,OFN_HIDEREAD
ONLY | OFN_OVERWRITEPROMPT,Filter);
if (dialog.DoModal()==IDOK)
{
strCena=dialog.GetPathName();
m_strFilecena=strCena;
UpdateData(FALSE);//значения перем. m_str… в текстовое поле
}
}
Для кнопки OK:
void CFilesDlg::OnBnClickedButtonok()
{
UpdateData(TRUE);// знач. текст. поля - в переменную m_str…
AktFile=m_strFileakt;….//знач. перем. m_str…присваиваются
CenaFile=m_strFilecena; // перем. файла MainFrm.cpp
EndDialog(1);//устан. флажка закрытия файла, 1 – в DoModal()
}
Для кнопки Cancel:
void CFilesDlg::OnBnClickedButtoncancel()
{
OnOK();//фиксирование данных блока диалога и обновление
} //переменных приложения
8) Добавление в файл MainFrm.cpp текста функции вызова диалогового окна и подключение файла заголовков FilesDlg.h:
#include “FilesDlg.h”
...
void CMainFrame::OnFilename()
{
CFilesDlg dlg;
dlg.DoModal();//вывод диалогового окна и удаление после диалога
}
9) Компиляция и и тестирование приложения.
Дата публикования: 2014-11-26; Прочитано: 162 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!