root/Baza Reklam 2 - Faktury/FactureViewer.cs @ 77

Wersja 73, 24.2 KB (wprowadzona przez dorota, 17 years temu)
Line 
1using System;
2using System.Collections.Generic;
3using System.ComponentModel;
4using System.Data;
5using System.Data.SqlClient;
6using System.Drawing;
7using System.Text;
8using System.Windows.Forms;
9using Microsoft.Reporting.WinForms;
10using System.Drawing.Printing;
11using System.Drawing.Imaging;
12using System.Reflection;
13using System.IO;
14
15
16namespace Baza_Reklam
17{
18    public partial class FactureViewer : Form
19    {
20        private int idFaktury;
21        private int idKorekty;
22
23        /// <summary>
24        /// true - faktura, false - proforma
25        /// </summary>
26        bool rodzaj;
27        DataSet ds;
28
29        public FactureViewer(int idFakt,bool rodzaj)
30        {
31            InitializeComponent();
32           
33            idFaktury = idFakt;
34
35            this.rodzaj = rodzaj;
36
37            this.zapiszButton.Click += new EventHandler(zapiszButton_Click);
38
39            fakturaTableAdapter1.Connection.ConnectionString = ConnString.getConnString().Value;
40            fakturA_DETAILSTableAdapter1.Connection.ConnectionString = ConnString.getConnString().Value;
41            fAKTURYTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
42            proformaTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
43
44            ds = new DataSet();
45
46            //zczytuje dane z pliku z tlumaczeniami
47            Stream s = Assembly.GetExecutingAssembly().GetManifestResourceStream("Baza_Reklam.Raporty.faktura.xml");
48            ds.ReadXml(s);
49
50            fAKTURYTableAdapter.FillByIdFaktury(this.rEKLAMADataSet.FAKTURY, idFakt);
51
52            //ustawienie parametrów, nowych datasoure dla raportu
53           
54            //ustawianie danych dla raportu
55            if (this.rodzaj)
56            {
57                typComboBox.Enabled = false;               
58                reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Faktura", fakturaTableAdapter1.GetDataByIdFaktury(idFakt)));
59           
60            }
61            else {
62                jezykComboBox.Enabled = false;
63                reportViewer1.LocalReport.ReportEmbeddedResource = "Baza_Reklam.Raporty.proformaReversed.rdlc";
64                reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Faktura", proformaTableAdapter.GetDataByIdFaktury(idFakt)));
65            }           
66           
67            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("FakturaDetails", fakturA_DETAILSTableAdapter1.GetDataByIdFaktury(idFakt)));
68            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("tlumaczenia", ds.Tables[0]));
69
70            List<ReportParameter> paramList = new List<ReportParameter>();
71
72            //Produkcja ma domyœlnie bez podpisu
73
74            if (User.getUser().St_produkcja)
75            {
76                podpisCheckBox.CheckState = CheckState.Unchecked;
77                paramList.Add(new ReportParameter("podpis", podpisCheckBox.Checked.ToString(), true));
78                this.reportViewer1.LocalReport.SetParameters(paramList);
79            }
80
81            //nadpisanie drukowania
82            //this.reportViewer1.Print += new CancelEventHandler(HandlePrint);
83            /*
84            if (rodzaj)
85            {
86                this.reportViewer1.Print += new CancelEventHandler(HandlePrint);
87            }
88            */
89
90            jezykComboBox.SelectedIndex = 0;
91            typComboBox.SelectedIndex = 1;
92
93        }
94
95        public FactureViewer(int idFakt)
96        {
97            InitializeComponent();
98
99            reportViewer1.LocalReport.ReportEmbeddedResource = "Baza_Reklam.Raporty.fakturaReversed2.rdlc";
100            idFaktury = idFakt;
101
102            this.zapiszButton.Click += zapiszButton2_Click;
103
104            fakturaTableAdapter1.Connection.ConnectionString = ConnString.getConnString().Value;
105            fAKTURA_DETAILS2TableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
106            fAKTURYTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
107            proformaTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
108
109            ds = new DataSet();
110
111            //zczytuje dane z pliku z tlumaczeniami
112            Stream s = Assembly.GetExecutingAssembly().GetManifestResourceStream("Baza_Reklam.Raporty.faktura.xml");
113            ds.ReadXml(s);
114
115            fAKTURYTableAdapter.FillByIdFaktury(this.rEKLAMADataSet.FAKTURY, idFakt);
116
117            //ustawienie parametrów, nowych datasoure dla raportu
118
119            //ustawianie danych dla raportu
120            typComboBox.Enabled = false;
121           
122            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Faktura", fakturaTableAdapter1.GetDataByIdFaktury(idFakt)));
123            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("FakturaDetails2", fAKTURA_DETAILS2TableAdapter.GetDataIdFaktury(idFakt)));
124            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("tlumaczenia", ds.Tables[0]));
125
126            List<ReportParameter> paramList = new List<ReportParameter>();
127
128            //Produkcja ma domyœlnie bez podpisu
129            if (User.getUser().St_produkcja)
130            {
131                podpisCheckBox.CheckState = CheckState.Unchecked;
132                paramList.Add(new ReportParameter("podpis", podpisCheckBox.Checked.ToString(), true));
133                this.reportViewer1.LocalReport.SetParameters(paramList);
134            }
135
136            jezykComboBox.SelectedIndex = 0;
137            typComboBox.SelectedIndex = 1;
138        }
139
140        public FactureViewer(int idFakt, int idKorekty)
141        {
142            InitializeComponent();
143
144            reportViewer1.LocalReport.ReportEmbeddedResource = "Baza_Reklam.Raporty.fakturaKorekta.rdlc";
145
146            this.idFaktury = idFakt;
147            this.idKorekty = idKorekty;
148
149            this.zapiszButton.Click += zapiszKorektaButton_Click;
150                       
151            fakturaTableAdapter1.Connection.ConnectionString = ConnString.getConnString().Value;
152            fAKTURA_DETAILS2TableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
153            fAKTURYTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
154            proformaTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
155
156            ds = new DataSet();
157
158            //zczytuje dane z pliku z tlumaczeniami
159            Stream s = Assembly.GetExecutingAssembly().GetManifestResourceStream("Baza_Reklam.Raporty.faktura.xml");
160            ds.ReadXml(s);
161
162            fAKTURYTableAdapter.FillByIdFaktury(this.rEKLAMADataSet.FAKTURY, idKorekty);
163
164            //ustawienie parametrów, nowych datasoure dla raportu
165
166            typComboBox.Enabled = false;
167            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Faktura", fakturaTableAdapter1.GetDataByIdFaktury(idFakt)));
168            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Korekta", fakturaTableAdapter1.GetDataByIdFaktury(idKorekty)));
169            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("FakturaDetails2", fAKTURA_DETAILS2TableAdapter.GetDataIdFaktury(idFakt)));
170            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("FakturaDetailsKorekty", fAKTURA_DETAILS2TableAdapter.GetDataIdFaktury(idKorekty)));
171            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("tlumaczenia", ds.Tables[0]));
172
173            List<ReportParameter> paramList = new List<ReportParameter>();
174
175            //Produkcja ma domyœlnie bez podpisu
176
177            if (User.getUser().St_produkcja)
178            {
179                podpisCheckBox.CheckState = CheckState.Unchecked;
180                paramList.Add(new ReportParameter("podpis", podpisCheckBox.Checked.ToString(), true));
181                this.reportViewer1.LocalReport.SetParameters(paramList);
182            }
183
184            //nadpisanie drukowania
185            //this.reportViewer1.Print += new CancelEventHandler(HandlePrint);
186            /*
187            if (rodzaj)
188            {
189                this.reportViewer1.Print += new CancelEventHandler(HandlePrint);
190            }
191            */
192
193            jezykComboBox.SelectedIndex = 0;
194            typComboBox.SelectedIndex = 1;
195
196        }
197
198        /*
199        /// <summary>
200        ///  FAKTURA DLA POZNANIA
201        /// </summary>
202        /// <param name="idFakt"></param>
203        public FactureViewer(int idFakt)
204        {
205            InitializeComponent();
206
207            idFaktury = idFakt;
208
209            this.zapiszButton.Click += new EventHandler(zapiszPoznanButton_Click);
210
211            fakturaTableAdapter1.Connection.ConnectionString = ConnString.getConnString().Value;
212            fakturA_DETAILSTableAdapter1.Connection.ConnectionString = ConnString.getConnString().Value;
213            fAKTURYTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
214            proformaTableAdapter.Connection.ConnectionString = ConnString.getConnString().Value;
215
216            ds = new DataSet();
217
218            //zczytuje dane z pliku z tlumaczeniami
219            Stream s = Assembly.GetExecutingAssembly().GetManifestResourceStream("Baza_Reklam.Raporty.faktura.xml");
220            ds.ReadXml(s);
221
222            fAKTURYTableAdapter.FillByIdFaktury(this.rEKLAMADataSet.FAKTURY, idFakt);
223
224            typComboBox.Enabled = false;
225          //  wersjaComboBox.Enabled = false;
226         // jezykComboBox.Enabled = false;
227
228            reportViewer1.LocalReport.ReportEmbeddedResource = "Baza_Reklam.Raporty.fakturaPoznan.rdlc";
229            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Faktura", fakturaTableAdapter1.GetDataByIdFaktury(idFakt)));
230            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("FakturaDetails", fakturA_DETAILSTableAdapter1.GetDataByIdFaktury(idFakt)));
231            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("tlumaczenia", ds.Tables[0]));
232
233            jezykComboBox.SelectedIndex = 0;
234            typComboBox.SelectedIndex = 1;
235        //    wersjaComboBox.SelectedIndex = 0;
236        }
237        */
238
239
240        private void FactureViewer_Load(object sender, EventArgs e)
241        {
242            this.reportViewer1.RefreshReport();
243            this.reportViewer1.RefreshReport();
244
245            nUMERTextBox.Enabled = User.getUser().St_kierownik;
246        }
247
248        private void zapiszButton_Click(object sender, EventArgs e)
249        {
250            this.Cursor = Cursors.WaitCursor;
251
252            //zapisanie zmian w polu "opis" faktury
253            fAKTURYBindingSource.EndEdit();
254            fAKTURYTableAdapter.Update(this.rEKLAMADataSet.FAKTURY);
255            fAKTURYTableAdapter.FillByIdFaktury(this.rEKLAMADataSet.FAKTURY, idFaktury);
256
257            reportViewer1.Reset();
258            reportViewer1.LocalReport.ReportEmbeddedResource = this.rodzaj ? "Baza_Reklam.Raporty.fakturaReversed.rdlc" : "Baza_Reklam.Raporty.proformaReversed.rdlc";
259           
260            //ustawienie parametrów, nowych datasoure dla raportu
261            List<ReportParameter> paramList = new List<ReportParameter>();
262
263            if (this.rodzaj)
264            {               
265                paramList.Add(new ReportParameter("jezyk", jezykComboBox.SelectedItem.ToString(), true));
266                paramList.Add(new ReportParameter("podpis", podpisCheckBox.Checked.ToString(), true));
267                this.reportViewer1.LocalReport.SetParameters(paramList);
268                reportViewer1.LocalReport.DataSources.Clear();
269                reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Faktura", fakturaTableAdapter1.GetDataByIdFaktury(idFaktury)));
270           
271            }
272            else
273            {
274                paramList.Add(new ReportParameter("typ", typComboBox.SelectedItem.ToString(), true));
275                paramList.Add(new ReportParameter("podpis", podpisCheckBox.Checked.ToString(), true));
276                this.reportViewer1.LocalReport.SetParameters(paramList);
277                reportViewer1.LocalReport.DataSources.Clear();
278                reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Faktura", proformaTableAdapter.GetDataByIdFaktury(idFaktury)));
279            }     
280
281            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("FakturaDetails", fakturA_DETAILSTableAdapter1.GetDataByIdFaktury(idFaktury)));
282            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("tlumaczenia", ds.Tables[0]));
283
284            reportViewer1.RefreshReport();
285            //MessageBox.Show(reportViewer1.LocalReport.ReportEmbeddedResource);
286            this.Cursor = Cursors.Default;
287
288        }
289
290        /// <summary>
291        /// WERSJA DLA POZNANIA
292        /// </summary>
293        private void zapiszPoznanButton_Click(object sender, EventArgs e)
294        {
295            this.Cursor = Cursors.WaitCursor;
296
297            //zapisanie zmian w polu "opis" faktury
298            fAKTURYBindingSource.EndEdit();
299            fAKTURYTableAdapter.Update(this.rEKLAMADataSet.FAKTURY);
300            fAKTURYTableAdapter.FillByIdFaktury(this.rEKLAMADataSet.FAKTURY,idKorekty);
301
302            //ustawienie parametrów, nowych datasoure dla raportu
303            List<ReportParameter> paramList = new List<ReportParameter>();
304
305            paramList.Add(new ReportParameter("jezyk", jezykComboBox.SelectedItem.ToString(), true));
306            paramList.Add(new ReportParameter("podpis", podpisCheckBox.Checked.ToString(), true));
307            this.reportViewer1.LocalReport.SetParameters(paramList);
308            reportViewer1.LocalReport.DataSources.Clear();
309            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Faktura", fakturaTableAdapter1.GetDataByIdFaktury(idFaktury)));
310            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Korekta", fakturaTableAdapter1.GetDataByIdFaktury(idKorekty)));
311            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("FakturaDetails", fakturA_DETAILSTableAdapter1.GetDataByIdFaktury(idFaktury)));
312            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("tlumaczenia", ds.Tables[0]));
313
314            reportViewer1.RefreshReport();
315            //MessageBox.Show(reportViewer1.LocalReport.ReportEmbeddedResource);
316            this.Cursor = Cursors.Default;
317
318        }
319
320        private void zapiszKorektaButton_Click(object sender, EventArgs e)
321        {
322            this.Cursor = Cursors.WaitCursor;
323
324            //zapisanie zmian w polu "opis" faktury
325            fAKTURYBindingSource.EndEdit();
326            fAKTURYTableAdapter.Update(this.rEKLAMADataSet.FAKTURY);
327            fAKTURYTableAdapter.FillByIdFaktury(this.rEKLAMADataSet.FAKTURY, idFaktury);
328
329            //ustawienie parametrów, nowych datasoure dla raportu
330            List<ReportParameter> paramList = new List<ReportParameter>();
331
332            paramList.Add(new ReportParameter("jezyk", jezykComboBox.SelectedItem.ToString(), true));
333            paramList.Add(new ReportParameter("podpis", podpisCheckBox.Checked.ToString(), true));
334            this.reportViewer1.LocalReport.SetParameters(paramList);
335            reportViewer1.LocalReport.DataSources.Clear();
336            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Faktura", fakturaTableAdapter1.GetDataByIdFaktury(idFaktury)));
337
338            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("FakturaDetails2", fAKTURA_DETAILS2TableAdapter.GetDataIdFaktury(idFaktury)));
339            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("FakturaDetailsKorekty", fAKTURA_DETAILS2TableAdapter.GetDataIdFaktury(idKorekty)));
340            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("tlumaczenia", ds.Tables[0]));
341
342            reportViewer1.RefreshReport();
343            //MessageBox.Show(reportViewer1.LocalReport.ReportEmbeddedResource);
344            this.Cursor = Cursors.Default;
345
346        }
347
348        private void zapiszButton2_Click(object sender, EventArgs e)
349        {
350            this.Cursor = Cursors.WaitCursor;
351
352            //zapisanie zmian w polu "opis" faktury
353            fAKTURYBindingSource.EndEdit();
354            fAKTURYTableAdapter.Update(this.rEKLAMADataSet.FAKTURY);
355            fAKTURYTableAdapter.FillByIdFaktury(this.rEKLAMADataSet.FAKTURY, idFaktury);
356
357            //ustawienie parametrów, nowych datasoure dla raportu
358            List<ReportParameter> paramList = new List<ReportParameter>();
359
360            paramList.Add(new ReportParameter("jezyk", jezykComboBox.SelectedItem.ToString(), true));
361            paramList.Add(new ReportParameter("podpis", podpisCheckBox.Checked.ToString(), true));
362            paramList.Add(new ReportParameter("proforma", proformaCheckBox.Checked.ToString(), true));
363           
364            this.reportViewer1.LocalReport.SetParameters(paramList);
365            reportViewer1.LocalReport.DataSources.Clear();
366            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Faktura", fakturaTableAdapter1.GetDataByIdFaktury(idFaktury)));
367            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("FakturaDetails2", fAKTURA_DETAILS2TableAdapter.GetDataIdFaktury(idFaktury)));
368            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("tlumaczenia", ds.Tables[0]));
369
370            reportViewer1.RefreshReport();
371            //MessageBox.Show(reportViewer1.LocalReport.ReportEmbeddedResource);
372            this.Cursor = Cursors.Default;
373
374        }
375
376       //drukowanie raportu serwerowego
377        /*
378        private int m_currentPageIndex;
379        private IList<Stream> m_streams;
380
381
382        public void HandlePrint(object sender, CancelEventArgs e)
383        {
384            Run();
385            //MessageBox.Show("Drukowanie");
386            e.Cancel = true;
387        }
388
389        private void Print(PrinterSettings printerSettings)
390        {
391            MessageBox.Show("PrintBegin");
392            if (m_streams == null || m_streams.Count == 0)
393                return;
394
395            PrintDocument printDoc = new PrintDocument();
396            printDoc.PrinterSettings = printerSettings;
397            printDoc.PrintPage += new PrintPageEventHandler(PrintPage);
398            MessageBox.Show("Print");
399            printDoc.Print();
400        }
401
402        private void Run()
403        {
404            PrintDialog printDialog = new PrintDialog();
405            if (printDialog.ShowDialog() == DialogResult.OK)
406            {
407                MessageBox.Show("Export");
408                Export(reportViewer1.ServerReport);
409                m_currentPageIndex = 0;
410                MessageBox.Show("Print");
411                Print(printDialog.PrinterSettings);
412            }
413        }
414
415        private void PrintPage(object sender, PrintPageEventArgs ev)
416        {
417            MessageBox.Show("PrintPage1");
418            Metafile pageImage = new Metafile(m_streams[m_currentPageIndex]);
419            pageImage.Save("C:\\testestPRO.emf");
420
421            // Note: Coordinate (0,0) does not coincide with the top left corner of
422            // the page; it coincides with the top left corner of the printable area
423            // of the page. To account for this we have to subtract the hard margin.
424
425            MessageBox.Show("PrintPage2nnn");
426            RectangleF adjustedRect = new RectangleF(
427                ev.PageBounds.Left - ev.PageSettings.HardMarginX,
428                ev.PageBounds.Top - ev.PageSettings.HardMarginY,
429                ev.PageBounds.Width, ev.PageBounds.Height);
430            MessageBox.Show(adjustedRect.Top.ToString() + "*" + adjustedRect.Height.ToString() + "*" + adjustedRect.Width.ToString());
431            ev.Graphics.DrawImage(pageImage, adjustedRect);
432            MessageBox.Show("PrintPage4");
433            m_currentPageIndex++;
434            ev.HasMorePages = (m_currentPageIndex < m_streams.Count);
435            MessageBox.Show("PrintPage5");
436        }
437
438        private void Export(ServerReport report)
439        {
440            MessageBox.Show("ExportBegin");
441
442            string deviceInfo =
443
444              "<DeviceInfo>" +
445
446              "  <OutputFormat>EMF</OutputFormat>" +
447
448              "  <PageWidth>21cm</PageWidth>" +
449
450              "  <PageHeight>29cm</PageHeight>" +
451
452              "  <MarginTop>1cm</MarginTop>" +
453
454              "  <MarginLeft>1cm</MarginLeft>" +
455
456              "  <MarginRight>1cm</MarginRight>" +
457
458              "  <MarginBottom>1cm</MarginBottom>" +
459
460              "</DeviceInfo>";
461
462            m_streams = new List<Stream>();
463            string mimeType;
464            string extension;
465            System.Collections.Specialized.NameValueCollection urlAccessParameters = new System.Collections.Specialized.NameValueCollection();
466            urlAccessParameters.Add("rs:PersistStreams", "True");
467            Stream reportStream = report.Render("Image", deviceInfo, urlAccessParameters, out mimeType, out extension);
468            m_streams.Add(reportStream);
469            urlAccessParameters.Remove("rs:PersistStreams");
470            urlAccessParameters.Add("rs:GetNextStream", "True");
471            while (reportStream.Length != 0)
472            {
473                reportStream =
474                    report.Render("Image", deviceInfo, urlAccessParameters, out mimeType, out extension);
475                m_streams.Add(reportStream);
476            }
477
478            m_streams.RemoveAt(m_streams.Count - 1);
479
480            foreach (Stream stream in m_streams)
481                stream.Position = 0;
482
483            MessageBox.Show("ExportEnd");
484        }
485        */
486
487        // drukowanie raportu lokalnego
488        private int m_currentPageIndex;
489        private IList<Stream> m_streams;
490
491        private Stream CreateStream(string name,
492          string fileNameExtension, Encoding encoding,
493          string mimeType, bool willSeek)
494        {
495            Stream stream = new FileStream(name +
496               "." + fileNameExtension, FileMode.Create);
497            m_streams.Add(stream);
498            return stream;
499        }
500
501        private void Export(LocalReport report)
502        {
503            string deviceInfo =
504              "<DeviceInfo>" +
505              "  <OutputFormat>EMF</OutputFormat>" +
506              "  <PageWidth>19cm</PageWidth>" +
507              "  <PageHeight>25cm</PageHeight>" +
508              "  <MarginTop>1cm</MarginTop>" +
509              "  <MarginLeft>1cm</MarginLeft>" +
510              "  <MarginRight>1cm</MarginRight>" +
511              "  <MarginBottom>0cm</MarginBottom>" +
512              "</DeviceInfo>";
513            Warning[] warnings;
514            m_streams = new List<Stream>();
515            report.Render("Image", deviceInfo, CreateStream,
516               out warnings);
517            foreach (Stream stream in m_streams)
518                stream.Position = 0;
519        }
520
521        private void PrintPage(object sender, PrintPageEventArgs ev)
522        {
523            Metafile pageImage = new
524               Metafile(m_streams[m_currentPageIndex]);
525            ev.Graphics.DrawImage(pageImage, ev.PageBounds);
526            m_currentPageIndex++;
527            ev.HasMorePages = (m_currentPageIndex < m_streams.Count);
528        }
529
530        private void Print(PrinterSettings printerSettings)
531        {
532            if (m_streams == null || m_streams.Count == 0)
533                return;
534
535            PrintDocument printDoc = new PrintDocument();
536            printDoc.PrinterSettings = printerSettings;
537            printDoc.PrinterSettings.Duplex = Duplex.Vertical;
538            printDoc.PrintPage += new PrintPageEventHandler(PrintPage);
539            printDoc.Print();
540        }
541
542        private void Run()
543        {
544            PrintDialog printDialog = new PrintDialog();
545            if (printDialog.ShowDialog() == DialogResult.OK)
546            {
547                Export(reportViewer1.LocalReport);
548                m_currentPageIndex = 0;
549                Print(printDialog.PrinterSettings);
550                Dispose();
551            }
552
553        }
554
555        public void Dispose()
556        {
557            if (m_streams != null)
558            {
559                foreach (Stream stream in m_streams)
560                    stream.Close();
561                m_streams = null;
562            }
563        }
564
565        public void HandlePrint(object sender, CancelEventArgs e)
566        {
567            Run();
568            e.Cancel = true;
569        }
570
571   }
572}
Notatka: Zobacz TracBrowser aby uzyskać więcej informacji.