Пример #1
0
            public void InitializeSignalList(CONN_SETT_TYPE key, IEnumerable <string> listSignalNameShr)
            {
                KEY_CONTROLS   keyCtrl = KEY_CONTROLS.UNKNOWN;
                CheckedListBox clb;

                switch (key)
                {
                case CONN_SETT_TYPE.DATA_AISKUE:
                    keyCtrl = KEY_CONTROLS.CLB_AIISKUE_SIGNAL;
                    break;

                case CONN_SETT_TYPE.DATA_SOTIASSO:
                    keyCtrl = KEY_CONTROLS.CLB_SOTIASSO_SIGNAL;
                    break;

                default:
                    break;
                }

                if (!(keyCtrl == KEY_CONTROLS.UNKNOWN))
                {
                    clb = (findControl(keyCtrl.ToString())) as CheckedListBox;

                    // отменить регистрацию обработчика
                    enableSelectedIndexchanged(clb, key, false);

                    clb.Items.AddRange(listSignalNameShr.ToArray());

                    // восстановить регистрацию обработчика
                    enableSelectedIndexchanged(clb, key, true);

                    if (clb.Items.Count > 0)
                    {
                        clb.SelectedIndex = 0;
                    }
                    else
                    {
                        ;
                    }
                }
                else
                {
                    Logging.Logg().Error(string.Format(@"PanelSOTIASSODay.PanelManagement::InitializeSignalList (key={0}) - ", key.ToString())
                                         , Logging.INDEX_MESSAGE.NOT_SET);
                }
            }
Пример #2
0
        /// <summary>
        /// Обработчик события - изменения даты/номера часа на панели с управляющими элементами
        /// </summary>
        /// <param name="dtNew">Новые дата/номер часа</param>
        private void panelManagement_OnEvtDateTimeChanged(ActionDateTime action_changed)
        {
            KEY_CONTROLS   key_ctrl = KEY_CONTROLS.UNKNOWN;
            CheckedListBox clb      = null;

            foreach (CONN_SETT_TYPE conn_sett_type in _types)
            {
                //Очистить графические представления
                m_dictZGraphValues[conn_sett_type].Clear();
                //Очистить табличные представления значений
                m_dictDataGridViewValues[conn_sett_type].Clear();
            }
            //??? либо автоматический опрос в 'm_HandlerDb'
            m_HandlerQueue.UserDate = new HandlerSignalQueue.USER_DATE()
            {
                UTC_OFFSET = m_panelManagement.CurUtcOffset,Value = m_panelManagement.CurDateTime
            };
            // , либо организация цикла опроса в этой функции
            //...
            // , либо вызов метода с аргументами
            //m_HandlerDb.Request(...);
            foreach (CONN_SETT_TYPE conn_sett_type in _types)
            {
                key_ctrl = conn_sett_type == CONN_SETT_TYPE.DATA_AISKUE ? KEY_CONTROLS.CLB_AIISKUE_SIGNAL
                    : conn_sett_type == CONN_SETT_TYPE.DATA_SOTIASSO ? KEY_CONTROLS.CLB_SOTIASSO_SIGNAL
                        : KEY_CONTROLS.UNKNOWN;

                if (!(key_ctrl == KEY_CONTROLS.UNKNOWN))
                {
                    clb = findControl(key_ctrl.ToString()) as CheckedListBox;

                    foreach (int indx in clb.CheckedIndices.Cast <int>())
                    {
                        DataAskedHost(new object[] { new object[] { HandlerSignalQueue.EVENT.CHECK_VALUES,conn_sett_type,indx } });
                    }

                    DataAskedHost(new object[] { new object[] { HandlerSignalQueue.EVENT.CUR_VALUES,conn_sett_type,clb.SelectedIndex } });
                }
                else
                {
                    Logging.Logg().Error(string.Format(@"PanelSOTIASSODay::panelManagement_OnEvtDateTimeChanged () - не удалось найти элемент графического интерфейса для {0}",conn_sett_type)
                                         ,Logging.INDEX_MESSAGE.NOT_SET);
                }
            }
        }
Пример #3
0
            public void ClearSignalList(CONN_SETT_TYPE key)
            {
                KEY_CONTROLS   keyCtrl = KEY_CONTROLS.UNKNOWN;
                CheckedListBox clb;

                switch (key)
                {
                case CONN_SETT_TYPE.DATA_AISKUE:
                    keyCtrl = KEY_CONTROLS.CLB_AIISKUE_SIGNAL;
                    break;

                case CONN_SETT_TYPE.DATA_SOTIASSO:
                    keyCtrl = KEY_CONTROLS.CLB_SOTIASSO_SIGNAL;
                    break;

                default:
                    break;
                }

                if (!(keyCtrl == KEY_CONTROLS.UNKNOWN))
                {
                    clb = (findControl(keyCtrl.ToString())) as CheckedListBox;

                    // отменить регистрацию обработчика
                    enableSelectedIndexchanged(clb, key, false);

                    m_dictPreviousSignalItemSelected[key] = -1;
                    clb.Items.Clear();

                    // восстановить регистрацию обработчика
                    enableSelectedIndexchanged(clb, key, true);
                }
                else
                {
                    Logging.Logg().Error(string.Format(@"PanelSOTIASSODay.PanelManagement::InitializeSignalList (key={0}) - ", key.ToString())
                                         , Logging.INDEX_MESSAGE.NOT_SET);
                }
            }
Пример #4
0
        /// <summary>
        /// Обработчик события - нажатие кнопки "Экспорт"
        /// </summary>
        private void panelManagement_OnEvtExportDo()
        {
            KEY_CONTROLS  key_ctrl = KEY_CONTROLS.UNKNOWN;
            HDataGridView dgv;
            string        pathRemoteTemplate = string.Empty
            ,pathUserTemplate         = string.Empty
            ,nameFolderRemoteTemplate = NAMEFOLDER_TEMPLATE_SOTIASSO_DAY
            ,nameFolderUserTemplate   = string.Empty
            ,nameFileTemplate         = NAMEFILE_TEMPLATE_SOTIASSO_DAY;
            ExcelFile excel;

            System.Data.DataTable tableExportDo;
            int iColumn = STARTCOLUMN_TEMPLATE_SOTIASSO_DAY
            ,iStartRow  = STARTROW_TEMPLATE_SOTIASSO_DAY
            ,i_agregate = I_AGREGATE;

            //Excel Application Object
            Microsoft.Office.Interop.Excel.Application oExcelApp;
            Microsoft.Office.Interop.Excel.Workbook    oExcelWorkbook;

            try {
                // определить путь к шаблону отчета
                pathRemoteTemplate = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,Path.Combine(nameFolderRemoteTemplate,nameFileTemplate));
                // определить каталог для размещения итогового отчета
                nameFolderUserTemplate = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),@"Statistic");
                // определить полный путь для размещения итогового отчета
                pathUserTemplate = Path.Combine(nameFolderUserTemplate
                                                ,nameFileTemplate.Replace(@"TEC",(string)(findControl(KEY_CONTROLS.CBX_TEC_LIST.ToString()) as ComboBox).SelectedItem)
                                                .Replace(@"DATE",m_panelManagement.CurDateTime.Date.ToString(@"yyyyMMdd")));
                // создать при необходимости каталог на ПК пользователя
                if (Directory.Exists(nameFolderUserTemplate) == false)
                {
                    Directory.CreateDirectory(nameFolderUserTemplate);
                }
                else
                {
                    ;
                }
                // проверить: выполняется ли уже MS Excel
                oExcelApp = null;
                try {
                    oExcelApp = (Microsoft.Office.Interop.Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
                } catch {
                } finally {
                    if (object.Equals(oExcelApp,null) == true)
                    {
                        // если не выполняется - создать объект MS Excel
                        oExcelApp = new Microsoft.Office.Interop.Excel.Application();
                    }
                    else
                    {
                        ;
                    }
                }
                // проверить: существует ли уже файл с отчетом
                if (File.Exists(pathUserTemplate) == true)
                {
                    try {
                        // удалить файл, т.к. на его место запишем новый
                        File.Delete(pathUserTemplate);
                    } catch {
                        // нет доступа к файлу, возможно, он уже открыт в MS Excel - найти открытую книгу с известным наименованием
                        oExcelWorkbook = oExcelApp.Workbooks.Cast <Microsoft.Office.Interop.Excel.Workbook>().FirstOrDefault(book => { return(book.FullName.Equals(pathUserTemplate) == true); });
                        if (object.Equals(oExcelWorkbook,null) == false)
                        {
                            // закрыть - если была найдена
                            oExcelWorkbook.Close(false);
                        }
                        else
                        {
                            ;
                        }
                        // книгу "освободили" - можно удалить
                        try {
                            // но только в том случае, если книга была занята действительно MS Excel
                            File.Delete(pathUserTemplate);
                        } catch {
                            // иначе - выход (книгу блокирует другая программа)
                            return;
                        }
                    }
                }
                else
                {
                    ;
                }
                // копируем шаблон на ПК пользователя
                File.Copy(pathRemoteTemplate,pathUserTemplate);
                // объект для работы с ячейками книги MS Excel
                excel = new GemBox.Spreadsheet.ExcelFile();
                excel.LoadXls(pathUserTemplate);

                //excel.Worksheets[0].Rows[0].Cells[0].Value = i_agregate;
                // устанавливаем дату
                excel.Worksheets[0].Rows[0].Cells[1].Value = m_panelManagement.CurDateTime.Date.ToShortDateString();
                excel.Worksheets[0].Rows[0].Cells[2].Value = m_panelManagement.CurDateTime.Date.AddDays(1).ToShortDateString();

                foreach (CONN_SETT_TYPE conn_sett_type in _types)
                {
                    key_ctrl = conn_sett_type == CONN_SETT_TYPE.DATA_AISKUE ? KEY_CONTROLS.DGV_AIISKUE_VALUE
                        : conn_sett_type == CONN_SETT_TYPE.DATA_SOTIASSO ? KEY_CONTROLS.DGV_SOTIASSO_VALUE
                            : KEY_CONTROLS.UNKNOWN;

                    if (!(key_ctrl == KEY_CONTROLS.UNKNOWN))
                    {
                        dgv = findControl(key_ctrl.ToString()) as HDataGridView;

                        try {
                            tableExportDo = dgv.GetValues();
                            if (tableExportDo.Columns.Count > 0)
                            {
                                excel.Worksheets[0].InsertDataTable(tableExportDo,iStartRow - 1,iColumn,true);

                                iColumn += tableExportDo.Columns.Count;
                            }
                            else
                            {
                                // нет столбцов - нет строк - нет значений для вставки
                                ;
                            }
                        } catch (Exception e) {
                            Logging.Logg().Exception(e,string.Format(@"PanelSOTIASSODay::panelManagement_OnEvtExportDo () - conn_sett_type={0}, заполнение значениями...",conn_sett_type),Logging.INDEX_MESSAGE.NOT_SET);
                        }
                    }
                    else
                    {
                        Logging.Logg().Error(string.Format(@"PanelSOTIASSODay::panelManagement_OnEvtExportDo () - не удалось найти элемент графического интерфейса для {0}",conn_sett_type)
                                             ,Logging.INDEX_MESSAGE.NOT_SET);
                    }
                }

                excel.SaveXls(pathUserTemplate);

                //System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(@"excel.exe", string.Format("\"{0}\"", pathUserTemplate)));

                oExcelApp.Workbooks.Open(pathUserTemplate);
                oExcelApp.Visible = true;
            } catch (Exception e) {
                Logging.Logg().Exception(e,string.Format(@"PanelSOTIASSODay::panelManagement_OnEvtExportDo () - подготовка шаблона..."),Logging.INDEX_MESSAGE.NOT_SET);
            }
        }