private void CreateReportViewer() { frmRpt = new frm_Report(); #region Подготовить данные для вывода в отчет // Исходные данные в отчет DataInput_HB _DataInput_HB = new DataInput_HB(HB); List<cReportList> RepListInputHB = new List<cReportList>(); foreach (HeatBalance.Class.Param par in _allParamsInput) { if (par.IsReport) { if (_DataInput_HB.GetType().GetProperty(par.PropertyName).GetValue(_DataInput_HB, null) != null) { double d = Math.Round(Convert.ToDouble( _DataInput_HB.GetType().GetProperty(par.PropertyName).GetValue( _DataInput_HB, null)), 3); RepListInputHB.Add(new HeatBalance.Class.cReportList(par.Description, d.ToString())); } } } frmRpt.cReportInputBindingSource.DataSource = RepListInputHB; // Результаты расчета в отчет DataOutput _dataOutput = new DataOutput(HB); List<cReportList> RepListOutput = new List<cReportList>(); foreach (HeatBalance.Class.Param par in _allParamsOutput) { if (par.IsReport) { double d = Math.Round(Convert.ToDouble( _dataOutput.GetType().GetProperty(par.PropertyName).GetValue(_dataOutput, null)), 3); RepListOutput.Add(new HeatBalance.Class.cReportList(par.Description, d.ToString())); } } #endregion #region Указать отчету источники данных frmRpt.cReportInputBindingSource.DataSource = RepListInputHB; frmRpt.cReportOutputBindingSource.DataSource = RepListOutput; #endregion #region Показать окно отчета на весь экран frmRpt.WindowState = FormWindowState.Maximized; frmRpt.ShowDialog(this); #endregion }
private void FormOptionDefault() { btn_Diagramma.Enabled = false; btn_report.Enabled = false; // Показать в заголовке главного окна номер текущей версии и пользвателя this.Text = this.Text + " [" + Assembly.GetExecutingAssembly().GetName().Version.ToString() + "]"; // Установить редактируемый объект в PropertyGrid _DataInput = new DataInput_HB(HB); propertyGrid1.SelectedObject = _DataInput; //btn_OpenGR.Enabled = false; //btn_OpenReport.Enabled = false; string path = Application.UserAppDataPath.ToString() + @"\"; #region -- Заполнить перечень показателей в отчет: исходные данные if (File.Exists(path + "cfgInputToRep.xml")) { XmlSerializer xmls = new XmlSerializer(typeof(List<HeatBalance.Class.Param>)); FileStream fs = null; try { // Исходные данные fs = new FileStream(path + "cfgInputToRepDP1.xml", FileMode.Open); _allParamsInput = (List<HeatBalance.Class.Param>)xmls.Deserialize(fs); } catch { } finally { if (fs != null) fs.Close(); } } else { DataInput_HB _dataIn = new DataInput_HB(HB); PropertyInfo[] pArrIn = _dataIn.GetType().GetProperties(); if (pArrIn != null) foreach (PropertyInfo p in pArrIn) { string descrIn = ""; object[] attrIn = p.GetCustomAttributes(false); if (attrIn != null) foreach (object a in attrIn) { if (a is DisplayNameAttribute) descrIn += (a as DisplayNameAttribute).DisplayName; if (a is CategoryAttribute) descrIn = descrIn.Insert(0, (a as CategoryAttribute).Category + ", "); } HeatBalance.Class.Param parIn = new HeatBalance.Class.Param(0); parIn.Description = descrIn; parIn.IsReport = true; parIn.PropertyName = p.Name; _allParamsInput.Add(parIn); } } #endregion #region -- Заполнить перечень показателей в отчет: результаты расчета if (File.Exists(path + "cfgOutputToRep.xml")) { XmlSerializer xmls = new XmlSerializer(typeof(List<HeatBalance.Class.Param>)); FileStream fsOut = null; try { fsOut = new FileStream(path + "cfgOutputToRep.xml", FileMode.Open); _allParamsOutput = (List<HeatBalance.Class.Param>)xmls.Deserialize(fsOut); } catch { } finally { if (fsOut != null) fsOut.Close(); } } else { DataOutput _dataOut = new DataOutput(HB); PropertyInfo[] pArrOut = _dataOut.GetType().GetProperties(); if (pArrOut != null) foreach (PropertyInfo p in pArrOut) { string descrOut = ""; object[] attrOut = p.GetCustomAttributes(false); if (attrOut != null) foreach (object a in attrOut) { if (a is DisplayNameAttribute) descrOut += (a as DisplayNameAttribute).DisplayName; if (a is CategoryAttribute) descrOut = descrOut.Insert(0, (a as CategoryAttribute).Category + ", "); } HeatBalance.Class.Param parOut = new HeatBalance.Class.Param(0); parOut.Description = descrOut; parOut.IsReport = true; parOut.PropertyName = p.Name; _allParamsOutput.Add(parOut); } } #endregion }