123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- using System.Collections;
- using DataDynamics.ActiveReports.Export.Xls;
- using DataDynamics.ActiveReports.Export.Pdf;
- using System.Threading;
- namespace IControls_FireManager
- {
- //
- // 엑티브레포트 뷰어를 제공합니다. 실제로 데이타는 각 폼에 따라 다르므로 뷰어는 UI 만 신경쓰면 됩니다
- // XLS,PDF 버튼은 동적으로 생성합니다.
- //
- public partial class Form_ActiveReport_Viewer : Form
- {
- // 레포트 정보를 생성시 진행팝업창
- public Form Popup_ReportCreate_Progress = new Form();
- // 생성자
- public void Initialize()
- {
- // 컴포넌트 초기화
- InitializeComponent();
- // 툴바에 메뉴 추가
- this.viewer_Report.Toolbar.ToolStrip.Items.Add(new ToolStripSeparator());
- this.viewer_Report.Toolbar.ToolStrip.Items.Add("엑셀 내보내기");
- this.viewer_Report.Toolbar.ToolStrip.Items.Add(new ToolStripSeparator());
- this.viewer_Report.Toolbar.ToolStrip.Items.Add("PDF 내보내기");
- ///
- /// 이벤트
- ///
- // 폼닫기 이벤트를 등록 (이벤트 핸들러 해제용)
- this.FormClosing += new FormClosingEventHandler(CreateForm_FormClosing);
- // 윈도우 스타일 변경 이벤트 핸들러 등록
- _Event.WindowStyleSet_SendMessage_Event += new _Event.WindowStyleSet_SendMessage_Handler(_Event_WindowStyleSet_SendMessage_Event);
- // 툴바에 등록
- this.viewer_Report.Toolbar.ToolStrip.Items[25].Click += new EventHandler(Form_ActiveReportViewer_XLS_Export_Click);
- this.viewer_Report.Toolbar.ToolStrip.Items[27].Click += new EventHandler(Form_ActiveReportViewer_PDF_Export_Click);
- ///
- /// 스타일 변경
- ///
- UI_Style_Initialize();
- // 프로그램 실행중 한번만 실행하도록 만듬
- _Data.ActiveReportViewer_Enable = true;
- }
- // 레포트 (데이타베이스 쿼리 결과를 곧바로 받아서 전체 작업개수를 파악하지 않으며 가변 혹은 고정으로 출력되는 레포트)
- public Form_ActiveReport_Viewer(
- // 레포트 타입
- ACTIVE_REPORT_DATA DATA_TYPE,
- // 쿼리 결과 데이타. 즉 실제로 레포트에 출력할 데이타를 전달받음
- object ResultData,
- // 컬럼 텍스트명 및 길이 추출정보필드
- // 가변레포트 : _Report_Column_Info 타입의 클래스의 리스트 정보
- // 고정레포트 : 해당레포트포맷을 참조해서 인덱서로 구성된 클래스의 리스트 정보
- ArrayList Column_Info,
- // 제목
- string Title,
- // 개요
- string Summary,
- // 컬럼 높이 (가변레포트에서만 사용)
- float ColumnHeight,
- // 폰트 사이즈 (가변레포트에서만 사용)
- int FontSize)
- {
- Initialize();
- // 총 개수
- int All_ProcessCount = _ActiveReport.Get_All_ProcessCount(ResultData);
- // 결과가 없다면 실행안함
- if (ResultData == null || All_ProcessCount == 0) return;
- // 기존의 팝업창 종료
- if (Popup_ReportCreate_Progress != null) _Crossthread.Form_Close(Popup_ReportCreate_Progress);
- // 레포트 생성중입니다. 프로그레스 팝업창
- Popup_ReportCreate_Progress = _Popup.Create(Popup_Type.Progress, Popup_Style.Normal, _Text.OK, 250, 200, _Text.ReportCreateProgress, All_ProcessCount);
- // 기존 스레드 종료
- _Thread.Abort("ACTIVE_REPORT_DATA");
- // 레포트 타입에 따라 폼이 결정된다
- object Report = null;
- switch (DATA_TYPE)
- {
- //
- // 가변레포트
- //
- case ACTIVE_REPORT_DATA.VARIABLE_HEIGHT:
- Report = new ActiveReport_Variable_Height(Popup_ReportCreate_Progress, ResultData, Column_Info, Title, Summary, ColumnHeight, FontSize);
- break;
- case ACTIVE_REPORT_DATA.VARIABLE_WIDTH:
- Report = new ActiveReport_Variable_Width(Popup_ReportCreate_Progress, ResultData, Column_Info, Title, Summary, ColumnHeight, FontSize);
- break;
- //
- // 고정레포트
- //
- case ACTIVE_REPORT_DATA.OPER_GROUP:
- Report = new ActiveReport_OperGroup(Popup_ReportCreate_Progress, ResultData, Column_Info, Title, Summary, ColumnHeight, FontSize);
- break;
- case ACTIVE_REPORT_DATA.OPER_SET:
- Report = new ActiveReport_OperSet(Popup_ReportCreate_Progress, ResultData, Column_Info, Title, Summary, ColumnHeight, FontSize);
- break;
- case ACTIVE_REPORT_DATA.PAGE:
- Report = new ActiveReport_Page(Popup_ReportCreate_Progress, ResultData, Column_Info, Title, Summary, ColumnHeight, FontSize);
- break;
-
- }
- // 레포트 문서에다 실제 데이타를 출력하는 스레드 실행
- if (Report != null)
- {
- this.viewer_Report.Document = ((DataDynamics.ActiveReports.ActiveReport)Report).Document;
- _Thread.Create("ACTIVE_REPORT_DATA", ActiveReport_DataBinding, Report);
- }
- }
- //
- // 레포트 생성 스레드
- //
- public void ActiveReport_DataBinding(object ActiveReport_Documnet)
- {
- try
- {
- // Active Report Document Fetch
- ((DataDynamics.ActiveReports.ActiveReport)ActiveReport_Documnet).Run();
- }
- catch (Exception e)
- {
- _Thread.Abort("ACTIVE_REPORT_DATA");
- _Event.DebugView_SendMessage_Write(e.ToString());
- }
- }
- // set active report class : 혹시 외부에서 접근가능할 루틴이 필요하다면 사용
- public DataDynamics.ActiveReports.Document.Document Document
- {
- set
- {
- this.viewer_Report.Document = value;
- }
- }
- // 폼닫기 이벤트를 등록 (이벤트 핸들러 해제용)
- public void CreateForm_FormClosing(object sender, FormClosingEventArgs e)
- {
- // 기존 스레드 종료
- _Thread.Abort("ACTIVE_REPORT_DATA");
- // 프로그레스바 진행중에는 닫아 버리면 종료
- if (Popup_ReportCreate_Progress != null)
- {
- _Popup.ProcessPopup_Enable = false;
- _Popup.ProcessPopup_Processbar_AllCnt = 0;
- _Popup.ProcessPopup_Processbar_Cnt = 0;
- Popup_ReportCreate_Progress.Close();
- }
- // 툴바 클릭 이벤트 핸들러 해제
- if (this.viewer_Report.Toolbar.ToolStrip.Items["엑셀 내보내기"] != null)
- this.viewer_Report.Toolbar.ToolStrip.Items["엑셀 내보내기"].Click -= new EventHandler(Form_ActiveReportViewer_XLS_Export_Click);
- if (this.viewer_Report.Toolbar.ToolStrip.Items["PDF 내보내기"] != null)
- this.viewer_Report.Toolbar.ToolStrip.Items["PDF 내보내기"].Click -= new EventHandler(Form_ActiveReportViewer_PDF_Export_Click);
- // 윈도우 스타일 변경 이벤트 핸들러 해제
- _Event.WindowStyleSet_SendMessage_Event -= new _Event.WindowStyleSet_SendMessage_Handler(_Event_WindowStyleSet_SendMessage_Event);
- // 프로그램 실행중 한번만 실행하도록 만듬
- _Data.ActiveReportViewer_Enable = false;
- }
- // 윈도우 스타일 변경 이벤트
- public void _Event_WindowStyleSet_SendMessage_Event()
- {
- UI_Style_Initialize();
- }
- // 스타일 초기화 함수
- private void UI_Style_Initialize()
- {
- }
- //
- // 파일 내보내기
- //
- // XLS 파일로 내보내기
- public void Form_ActiveReportViewer_XLS_Export_Click(object sender, EventArgs e)
- {
- // 다이얼로그 생성
- SaveFileDialog SaveFileDialog_XLS = new SaveFileDialog();
- // 확장자 넣기
- SaveFileDialog_XLS.Filter = "(*.xls)|*.xls";
- // 파일 세이브 다이얼로그
- if (SaveFileDialog_XLS.ShowDialog() == DialogResult.OK)
- {
- if (SaveFileDialog_XLS.FileName.Substring(SaveFileDialog_XLS.FileName.Length - 3, 3).ToUpper() == "XLS")
- {
- XlsExport DocumentXlsExport = new DataDynamics.ActiveReports.Export.Xls.XlsExport();
- DocumentXlsExport.Export(this.viewer_Report.Document, SaveFileDialog_XLS.FileName);
- }
- }
- }
- // PDF 파일로 내보내기
- public void Form_ActiveReportViewer_PDF_Export_Click(object sender, EventArgs e)
- {
- // 다이얼로그 생성
- SaveFileDialog SaveFileDialog_PDF = new SaveFileDialog();
- // 확장자 넣기
- SaveFileDialog_PDF.Filter = "(*.pdf)|*.pdf";
- // 파일 세이브 다이얼로그
- if (SaveFileDialog_PDF.ShowDialog() == DialogResult.OK)
- {
- if (SaveFileDialog_PDF.FileName.Substring(SaveFileDialog_PDF.FileName.Length - 3, 3).ToUpper() == "PDF")
- {
- PdfExport DocumentPdfExport = new DataDynamics.ActiveReports.Export.Pdf.PdfExport();
- DocumentPdfExport.Export(this.viewer_Report.Document, SaveFileDialog_PDF.FileName);
- }
- }
- }
- }
- /*
- public partial class Form_ActiveReport_Viewer : Form
- {
- // 레포트 정보를 생성시 진행팝업창
- public Form Popup_ReportCreate_Progress = new Form();
- public int Popup_ReportCreate_Progress_Count_End = 0; // 최종카운트
- // 레포트 문서 (엑티브 레포트 실제 클래스)
- ActiveReport_OperGroup OperGroup = null;
- ActiveReport_OperSet OperSet = null;
- // 수신기 아이디
- public string TEMP_RECEIVER_ID = null;
- // 스레드 종료를 알리는 이벤트
- public delegate void ThreadEnd_SendMessage_Handler(int AllWorkCount, ACTIVE_REPORT_DATA DATA_TYPE);
- public event ThreadEnd_SendMessage_Handler ThreadEnd_SendMessage_Event;
- public void ThreadEnd_SendMessage_Write(int AllWorkCount, ACTIVE_REPORT_DATA DATA_TYPE)
- {
- if (ThreadEnd_SendMessage_Event != null)
- { ThreadEnd_SendMessage_Event(AllWorkCount, DATA_TYPE); }
- }
- // 생성자 공통부
- public void Initialize()
- {
- // 컴포넌트 초기화
- InitializeComponent();
- // 툴바에 메뉴 추가
- this.viewer_Report.Toolbar.ToolStrip.Items.Add(new ToolStripSeparator());
- this.viewer_Report.Toolbar.ToolStrip.Items.Add("엑셀 내보내기");
- this.viewer_Report.Toolbar.ToolStrip.Items.Add(new ToolStripSeparator());
- this.viewer_Report.Toolbar.ToolStrip.Items.Add("PDF 내보내기");
- ///
- /// 이벤트
- ///
- // 폼닫기 이벤트를 등록 (이벤트 핸들러 해제용)
- this.FormClosing += new FormClosingEventHandler(CreateForm_FormClosing);
- // 툴바에 등록
- this.viewer_Report.Toolbar.ToolStrip.Items[25].Click += new EventHandler(Form_ActiveReportViewer_XLS_Export_Click);
- this.viewer_Report.Toolbar.ToolStrip.Items[27].Click += new EventHandler(Form_ActiveReportViewer_PDF_Export_Click);
- ///
- /// 스타일 변경
- ///
- // 프로그램 실행중 한번만 실행하도록 만듬
- _Data.ActiveReportViewer_Enable = true;
- }
- //
- // 생성자 (기존 타입 과 신규 추가한 가변 레포트용 생성자가 존재한다)
- //
- public Form_ActiveReport_Viewer(
- string RECEIVER_ID,
- ACTIVE_REPORT_DATA DATA_TYPE)
- {
- // 컴포넌트 초기화
- InitializeComponent();
- // 레포트 데이타 처리의 총개수를 알아내는 스레드 종료하는 이벤트 핸들러 등록
- this.ThreadEnd_SendMessage_Event += new ThreadEnd_SendMessage_Handler(Form_ActiveReportViewer_ThreadEnd_SendMessage_Event);
- // 수신기 아이디 저장
- TEMP_RECEIVER_ID = RECEIVER_ID;
- // 레포트 타입 지정
- Create_ActiveReportData(DATA_TYPE);
- // 툴바에 메뉴 추가
- this.viewer_Report.Toolbar.ToolStrip.Items.Add(new ToolStripSeparator());
- this.viewer_Report.Toolbar.ToolStrip.Items.Add("엑셀 내보내기");
- this.viewer_Report.Toolbar.ToolStrip.Items.Add(new ToolStripSeparator());
- this.viewer_Report.Toolbar.ToolStrip.Items.Add("PDF 내보내기");
- // 툴바에 등록
- this.viewer_Report.Toolbar.ToolStrip.Items[25].Click += new EventHandler(Form_ActiveReportViewer_XLS_Export_Click);
- this.viewer_Report.Toolbar.ToolStrip.Items[27].Click += new EventHandler(Form_ActiveReportViewer_PDF_Export_Click);
- }
- public Form_ActiveReport_Viewer(
- ACTIVE_REPORT_DATA DATA_TYPE,
- object ResultData, // 쿼리 결과 데이타. 즉 실제로 레포트에 출력할 데이타를 전달받음
- ArrayList Column_Info, // 컬럼 텍스트명 및 길이 추출정보필드 , _Report_Column_Info 타입의 클래스의 리스트 정보
- string Title, // 제목
- string Summary, // 개요
- float ColumnHeight, // 컬럼 높이
- int FontSize)
- {
- Initialize();
- // 총 개수
- int All_ProcessCount = _ActiveReport.Get_All_ProcessCount(ResultData);
- // 결과가 없다면 실행안함
- if (ResultData == null || All_ProcessCount == 0) return;
- // 기존의 팝업창 종료
- if (Popup_ReportCreate_Progress != null) _Crossthread.Form_Close(Popup_ReportCreate_Progress);
- // 레포트 생성중입니다. 프로그레스 팝업창
- Popup_ReportCreate_Progress = _Popup.Create(Popup_Type.Progress, Popup_Style.Normal, _Text.OK, 250, 200, _Text.ReportCreateProgress, All_ProcessCount);
- // 기존 스레드 종료
- _Thread.Abort("ACTIVE_REPORT_DATA");
- // 레포트 타입에 구분되어 실행
- switch (DATA_TYPE)
- {
- case ACTIVE_REPORT_DATA.VARIABLE_HEIGHT:
- ActiveReport_Variable_Height Report_ActiveReport_Variable_Height =
- new ActiveReport_Variable_Height(Popup_ReportCreate_Progress, ResultData, Column_Info, Title, Summary, ColumnHeight, FontSize);
- this.viewer_Report.Document = Report_ActiveReport_Variable_Height.Document;
- _Thread.Create("ACTIVE_REPORT_DATA", ActiveReport_DataBinding, Report_ActiveReport_Variable_Height);
- break;
- case ACTIVE_REPORT_DATA.VARIABLE_WIDTH:
- ActiveReport_Variable_Width Report_ActiveReport_Variable_Width =
- new ActiveReport_Variable_Width(Popup_ReportCreate_Progress, ResultData, Column_Info, Title, Summary, ColumnHeight, FontSize);
- this.viewer_Report.Document = Report_ActiveReport_Variable_Width.Document;
- _Thread.Create("ACTIVE_REPORT_DATA", ActiveReport_DataBinding, Report_ActiveReport_Variable_Width);
- break;
- }
- }
- // set active report class : 혹시 외부에서 접근가능할 루틴이 필요하다면 사용
- public DataDynamics.ActiveReports.Document.Document Document
- {
- set
- {
- this.viewer_Report.Document = value;
- }
- }
- // 폼닫기 이벤트를 등록 (이벤트 핸들러 해제용)
- public void CreateForm_FormClosing(object sender, FormClosingEventArgs e)
- {
- // 프로그레스바 진행중에는 닫아 버리면 종료
- if (Popup_ReportCreate_Progress != null)
- {
- _Popup.ProcessPopup_Enable = false;
- _Popup.ProcessPopup_Processbar_AllCnt = 0;
- _Popup.ProcessPopup_Processbar_Cnt = 0;
- Popup_ReportCreate_Progress.Close();
- }
- // 툴바 클릭 이벤트 핸들러 해제
- if(this.viewer_Report.Toolbar.ToolStrip.Items["엑셀 내보내기"] != null)
- this.viewer_Report.Toolbar.ToolStrip.Items["엑셀 내보내기"].Click -= new EventHandler(Form_ActiveReportViewer_XLS_Export_Click);
- if (this.viewer_Report.Toolbar.ToolStrip.Items["PDF 내보내기"] != null)
- this.viewer_Report.Toolbar.ToolStrip.Items["PDF 내보내기"].Click -= new EventHandler(Form_ActiveReportViewer_PDF_Export_Click);
-
- // 레포트 데이타 처리의 총개수를 알아내는 스레드 종료하는 이벤트 핸들러 해제
- this.ThreadEnd_SendMessage_Event -= new ThreadEnd_SendMessage_Handler(Form_ActiveReportViewer_ThreadEnd_SendMessage_Event);
- // 프로그램 실행중 한번만 실행하도록 만듬
- _Data.ActiveReportViewer_Enable = false;
- }
-
- // 데이타 타입에 따라 레포트 문서 타입이 결정됩니다.
- public void Create_ActiveReportData(ACTIVE_REPORT_DATA DATA_TYPE)
- {
- // 레포트 준비중이라는 팝업창을 생성
- if (Popup_ReportCreate_Progress != null) _Crossthread.Form_Close(Popup_ReportCreate_Progress);
- Popup_ReportCreate_Progress = _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 350, 150, _Text.ReportReady, 0);
- // 데이타 처리 개수를 알아내기 위해 스레드로 돌린다
- switch (DATA_TYPE)
- {
- // 연동 그룹
- case ACTIVE_REPORT_DATA.OPER_GROUP:
- {
- Thread WorkingThread_Popup = new Thread(new ThreadStart(Ready_For_AllCnt_OPER_GROUP));
- WorkingThread_Popup.Start();
- }
- break;
- // 연동 설정
- case ACTIVE_REPORT_DATA.OPER_SET:
- {
- Thread WorkingThread_Popup = new Thread(new ThreadStart(Ready_For_AllCnt_OPER_SET));
- WorkingThread_Popup.Start();
- }
- break;
- }
- }
- //
- // 전체 작업개수를 알아내기 위한 스레드
- //
- // 연동 그룹
- public void Ready_For_AllCnt_OPER_GROUP()
- {
- // 작업량 예상
- Popup_ReportCreate_Progress_Count_End = 0;
- DataRowCollection DB_TABLE_GROUP_ForPopup = _Db.ExecuteRead_SqlDataAdapter(_Sql.SearchAll_Table_Value("TB_GROUP", "GROUP_ID", TEMP_RECEIVER_ID));
- if (DB_TABLE_GROUP_ForPopup != null && DB_TABLE_GROUP_ForPopup.Count != 0)
- {
- foreach (DataRow GROUP in DB_TABLE_GROUP_ForPopup)
- {
- // 그룹
- DataRowCollection DB_TABLE_DETAIL_ForPopup = _Db.ExecuteRead_SqlDataAdapter(_Sql.Search_Gruop_DeviceTable(GROUP[1].ToString(), TEMP_RECEIVER_ID));
- if (DB_TABLE_DETAIL_ForPopup != null && DB_TABLE_DETAIL_ForPopup.Count != 0)
- Popup_ReportCreate_Progress_Count_End = Popup_ReportCreate_Progress_Count_End + DB_TABLE_DETAIL_ForPopup.Count;
- // 디바이스가 하나도 없다면
- if (DB_TABLE_DETAIL_ForPopup.Count == 0)
- Popup_ReportCreate_Progress_Count_End = Popup_ReportCreate_Progress_Count_End + 1;
- }
- }
- // 이벤트 발생
- ThreadEnd_SendMessage_Write(Popup_ReportCreate_Progress_Count_End, ACTIVE_REPORT_DATA.OPER_GROUP);
- }
- // 연동 설정
- public void Ready_For_AllCnt_OPER_SET()
- {
- // 작업량 예상
- Popup_ReportCreate_Progress_Count_End = 0;
- DataRowCollection DB_TABLE_MAP = _Db.ExecuteRead_SqlDataAdapter(_Sql.SearchAll_Table_Value("TB_MAP", "MAP_ID", TEMP_RECEIVER_ID));
- if (DB_TABLE_MAP != null && DB_TABLE_MAP.Count != 0)
- {
- foreach (DataRow MAP in DB_TABLE_MAP)
- {
- // 입력 (디바이스)
- DataRowCollection DB_TABLE_MAP_IN = _Db.ExecuteRead_SqlDataAdapter(_Sql.Search_Map_ProcessTable(MAP[1].ToString(), "I", TEMP_RECEIVER_ID));
- if (DB_TABLE_MAP_IN != null && DB_TABLE_MAP_IN.Count != 0)
- {
- Popup_ReportCreate_Progress_Count_End = Popup_ReportCreate_Progress_Count_End + DB_TABLE_MAP_IN.Count;
- }
- // 출력 (디바이스)
- DataRowCollection DB_TB_MAP_OUT = _Db.ExecuteRead_SqlDataAdapter(_Sql.Search_Map_ProcessTable(MAP[1].ToString(), "O", "D", TEMP_RECEIVER_ID));
- if (DB_TB_MAP_OUT != null && DB_TB_MAP_OUT.Count != 0)
- {
- Popup_ReportCreate_Progress_Count_End = Popup_ReportCreate_Progress_Count_End + DB_TB_MAP_OUT.Count;
- }
- // 출력 (그룹)
- DataRowCollection DB_MAP_OUT_GROUP = _Db.ExecuteRead_SqlDataAdapter(_Sql.Search_Map_ProcessTable(MAP[1].ToString(), "O", "G", TEMP_RECEIVER_ID));
- if (DB_MAP_OUT_GROUP != null && DB_MAP_OUT_GROUP.Count != 0)
- foreach (DataRow DETAIL in DB_MAP_OUT_GROUP)
- {
- DataRowCollection DB_TABLE_TB_DEVICE_TYPE = _Db.ExecuteRead_SqlDataAdapter(_Sql.SearchAll_Table_Value("TB_GROUP", "GROUP_ID", DETAIL[5].ToString(), TEMP_RECEIVER_ID));
- if (DB_TABLE_TB_DEVICE_TYPE != null && DB_TABLE_TB_DEVICE_TYPE.Count != 0)
- {
- Popup_ReportCreate_Progress_Count_End = Popup_ReportCreate_Progress_Count_End + DB_TABLE_TB_DEVICE_TYPE.Count;
- }
- }
- // 입력 출력이 없는 경우
- if (DB_TABLE_MAP_IN.Count == 0 && DB_TB_MAP_OUT.Count == 0 && DB_MAP_OUT_GROUP.Count == 0)
- Popup_ReportCreate_Progress_Count_End = Popup_ReportCreate_Progress_Count_End + 1;
- }
- }
- // 이벤트 발생
- ThreadEnd_SendMessage_Write(Popup_ReportCreate_Progress_Count_End, ACTIVE_REPORT_DATA.OPER_SET);
- }
- // 스레드가 종료되면 호출되는 함수
- delegate void CallBack_Form_SetObject(int AllWorkCount, ACTIVE_REPORT_DATA DATA_TYPE);
- public void Form_ActiveReportViewer_ThreadEnd_SendMessage_Event(int AllWorkCount, ACTIVE_REPORT_DATA DATA_TYPE)
- {
- if (this.InvokeRequired)
- {
- CallBack_Form_SetObject d = new CallBack_Form_SetObject(Form_ActiveReportViewer_ThreadEnd_SendMessage_Event);
- this.Invoke(d, new object[] { AllWorkCount, DATA_TYPE });
- }
- else
- {
- // 기존의 팝업창을 종료하고 프로그레스바 팝업창으로 재생성
- //
- if (Popup_ReportCreate_Progress != null) _Crossthread.Form_Close(Popup_ReportCreate_Progress);
- // 작업 데이타가 없다면 경고 문구 출력후 종료
- if (AllWorkCount == 0)
- {
- Popup_ReportCreate_Progress = _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 350, 150, _Text.NotReportCreateData, 0);
- }
- else
- {
- Popup_ReportCreate_Progress = _Popup.Create(Popup_Type.Progress, Popup_Style.Normal, _Text.OK, 250, 200, _Text.ReportCreateProgress, AllWorkCount);
- switch (DATA_TYPE)
- {
- case ACTIVE_REPORT_DATA.OPER_GROUP:
- {
- // 레포트 문서 지정
- OperGroup = new ActiveReport_OperGroup(TEMP_RECEIVER_ID, Popup_ReportCreate_Progress);
- this.viewer_Report.Document = OperGroup.Document;
- // 실제 레포트 작업 스레드 생성
- Thread WorkingThread = new Thread(new ThreadStart(ActiveReport_DataBinding_OperGroup));
- WorkingThread.Start();
- }
- break;
- case ACTIVE_REPORT_DATA.OPER_SET:
- {
- // 레포트 문서 지정
- OperSet = new ActiveReport_OperSet(TEMP_RECEIVER_ID, Popup_ReportCreate_Progress);
- this.viewer_Report.Document = OperSet.Document;
- // 실제 레포트 작업스레드 생성
- Thread WorkingThread = new Thread(new ThreadStart(ActiveReport_DataBinding_OperSet));
- WorkingThread.Start();
- }
- break;
- }
- }
- }
- }
- //
- // 레포트 생성 스레드
- //
- public void ActiveReport_DataBinding_OperGroup()
- {
- try
- {
- OperGroup.Run();
- }
- catch (Exception e)
- {
- _Event.DebugView_SendMessage_Write(e.ToString());
- }
- }
- public void ActiveReport_DataBinding_OperSet()
- {
- try
- {
- OperSet.Run();
- }
- catch (Exception e)
- {
- _Event.DebugView_SendMessage_Write(e.ToString());
- }
- }
-
- public void ActiveReport_DataBinding(object ActiveReport_Documnet)
- {
- try
- {
- // Reflection 을 이용해서 타입을 추출
- Type ptype = ActiveReport_Documnet.GetType();
- // 레포트 실행 (타입별 실행되는 레포트 문서가 틀리다)
- if (ptype == typeof(ActiveReport_Variable_Width))
- ((ActiveReport_Variable_Width)ActiveReport_Documnet).Run();
- else if (ptype == typeof(ActiveReport_Variable_Height))
- ((ActiveReport_Variable_Height)ActiveReport_Documnet).Run();
- }
- catch (Exception e)
- {
- _Event.DebugView_SendMessage_Write(e.ToString());
- }
- }
- //
- // 파일 내보내기
- //
- // XLS 파일로 내보내기
- public void Form_ActiveReportViewer_XLS_Export_Click(object sender, EventArgs e)
- {
- // 다이얼로그 생성
- SaveFileDialog SaveFileDialog_XLS = new SaveFileDialog();
- // 확장자 넣기
- SaveFileDialog_XLS.Filter = "(*.xls)|*.xls";
- // 파일 세이브 다이얼로그
- if (SaveFileDialog_XLS.ShowDialog() == DialogResult.OK)
- {
- if (SaveFileDialog_XLS.FileName.Substring(SaveFileDialog_XLS.FileName.Length - 3, 3).ToUpper() == "XLS")
- {
- XlsExport DocumentXlsExport = new DataDynamics.ActiveReports.Export.Xls.XlsExport();
- DocumentXlsExport.Export(this.viewer_Report.Document, SaveFileDialog_XLS.FileName);
- }
- }
- }
- // PDF 파일로 내보내기
- public void Form_ActiveReportViewer_PDF_Export_Click(object sender, EventArgs e)
- {
- // 다이얼로그 생성
- SaveFileDialog SaveFileDialog_PDF = new SaveFileDialog();
- // 확장자 넣기
- SaveFileDialog_PDF.Filter = "(*.pdf)|*.pdf";
- // 파일 세이브 다이얼로그
- if (SaveFileDialog_PDF.ShowDialog() == DialogResult.OK)
- {
- if (SaveFileDialog_PDF.FileName.Substring(SaveFileDialog_PDF.FileName.Length - 3, 3).ToUpper() == "PDF")
- {
- PdfExport DocumentPdfExport = new DataDynamics.ActiveReports.Export.Pdf.PdfExport();
- DocumentPdfExport.Export(this.viewer_Report.Document, SaveFileDialog_PDF.FileName);
- }
- }
- }
- }
- */
- }
|