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); } }
/// <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); } } }
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); } }
/// <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); } }