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

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