На этом шаге мы рассмотрим обработка команды меню Query Database.
Теперь для пункта Query Database меню Data добавим функцию-обработчик команды и функцию-обработчик обновления пользовательского интерфейса.
#include "QueryDialog.h" #include "StockDataList.h" #include "ResultsDialog.h"
CQueryDialog aQDlg; // По умолчанию задаем в элементе Date Time Picker значения // первой и последней даты из файла (по всем бумагам) CStockData sdFirst = m_DocList.GetHead(); CStockData sdLast = m_DocList.GetTail(); aQDlg.m_fromdate = sdFirst.GetDate(); aQDlg.m_todate = sdLast.GetDate(); if( aQDlg.DoModal() == IDOK ) { // Формируем запрос CString strQuery = "select * from PriceHistory where ph_fund = '"; strQuery += aQDlg.m_strFund; strQuery += "' and ph_date between '"; strQuery += aQDlg.m_fromdate.Format( "%Y/%m/%d" ); strQuery += "' and '"; strQuery += aQDlg.m_todate.Format( "%Y/%m/%d" ); strQuery += "'"; // Формируем строку заголовка CString strCaption = aQDlg.m_strFund; strCaption += " Prices "; strCaption += aQDlg.m_fromdate.Format( "%d/%m/%Y" ); strCaption += " - "; strCaption += aQDlg.m_todate.Format( "%d/%m/%Y" ); CResultsDialog rd; rd.m_strQuery = strQuery; rd.m_strCaption = strCaption; rd.DoModal(); }
Обработчик команды модификации пользовательского интерфейса отвечает за то, чтобы команда Query Database становилась доступной, только если приложение находится в режиме отображения динамики изменения цены на какую-то бумагу.
// Делаем пункт Query Database доступным, только если // в файле определена дата и бумага выбрана для просмотра BOOL bEnable = FALSE; bEnable = m_strCurrentFund.IsEmpty() ? FALSE : TRUE; pCmdUI->Enable( bEnable );
Текст измененного приложения можно взять здесь (134,8 Кб).
Рис.1. Пример работающего приложения
Теперь Вы можете собрать и запустить приложение STUpload. Загрузите файл Ch7Test.dat. Выберите для просмотра одну из ценных бумаг и щелкните ставший доступным пункт меню Query Database. Данные файла Ch7Test.dat в точности соответствуют записям, уже загруженным в базу Stocks. Примите заданные в полях значения по умолчанию и щелкните ОК, чтобы просмотреть записи из базы данных. Поэкспериментируйте с выборкой части записей из этого набора, сужая период времени.
Со следующего шага мы начнем знакомиться с технологией COM.