Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Класс CFilesDlg



Класс 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.012 с)...