Приложение STUpload: обработка команды меню Query Database

   
На этом шаге мы рассмотрим обработка команды меню Query Database.

   
Теперь для пункта Query Database меню Data добавим функцию-обработчик команды и
функцию-обработчик обновления пользовательского интерфейса.

  • Создание обработчика команды OnDataQuerydatabase().
  • Вставьте в начало файла STUploadDoc.cpp следующие строки:
       #include "QueryDialog.h" 
       #include "StockDataList.h" 
       #include "ResultsDialog.h"
    
  • Средствами ClassWizard создайте в классе CSTUploadDoc обработчик команды для идентификатора
    ID_DATA_QUERYDATABASE, назвав эту функцию OnDataQuerydatabase().
  • Замените строку с комментарием //TODO следующим кодом:
    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 становилась
доступной, только если приложение находится в режиме отображения динамики изменения цены на какую-то бумагу.

  • Создание функции-обработчика обновления пользовательского интерфейса.
  • Средствами ClassWizard в классе CSTUploadDoc создайте обработчик
    UPDATE_COMMAND_UI для идентификатора ID_DATA_QUERYDATABASE, назвав эту функцию
    OnUpdateDataQuerydatabase().
  • Замените строку с комментарием //TODO следующим кодом:
    // Делаем пункт 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.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий