//METODO QUE CONSTRÓI O RELATÓRIO A SER GERADO public void Relatorio(string data, string lote2, string produto2) { // Recupera o documento que enviou este evento. ImprimirDocumentoEntrada doc = (ImprimirDocumentoEntrada)sender; //Variaveis de Linhas. float LinhasPorPagina = 0; float PosicaoDaLinha = 0; int LinhaAtual = 0; //Variaveis de Margens. float MargemEsq = e.MarginBounds.Left; float MargemSuper = e.MarginBounds.Top + 100; float MargemDir = e.MarginBounds.Right; float MargemInfer = e.MarginBounds.Bottom; Pen CanetaDaImpressora = new Pen(Color.Black, 1); Pen CanetaDaImpressora2 = new Pen(Color.Black, 1); //Variaveis de Fontes. Font FonteNegrito = default(Font); Font FonteTitulo = default(Font); Font FonteSubTitulo = default(Font); Font FonteRodape = default(Font); Font FonteNormal = default(Font); //Define efeitos das fontes. FonteNegrito = new Font("Arial", 9, FontStyle.Bold); FonteTitulo = new Font("Arial", 18, FontStyle.Bold); FonteSubTitulo = new Font("Arial", 12, FontStyle.Bold); FonteRodape = new Font("Arial", 9, FontStyle.Bold); FonteNormal = new Font("Arial", 9); //Define o valor para linha atual e da impressao LinhaAtual = 0; doc.NumeroPagina += 1; e.Graphics.DrawLine(CanetaDaImpressora, MargemEsq, 60, MargemDir, 60); //nome da empresa e.Graphics.DrawString("Massas Lott", FonteTitulo, Brushes.Black, MargemEsq + 40, 80, new StringFormat()); e.Graphics.DrawString(System.DateTime.Now.ToString(), FonteRodape, Brushes.Black, MargemDir - 120, 70, new StringFormat()); e.Graphics.DrawString("RELATÓRIO DE ENTRADA", FonteSubTitulo, Brushes.Black, MargemEsq + 225, 109, new StringFormat()); Image image = Image.FromFile("FOTO.jpg"); Point pp = new Point(100, 68); //imagem/logo se caso quiser colocar um logo e.Graphics.DrawImage(image, pp); //linha de separação e.Graphics.DrawLine(CanetaDaImpressora, MargemEsq, 130, MargemDir, 130); e.Graphics.DrawString("Data de produção: ", FonteNegrito, Brushes.Black, MargemEsq, 140, new StringFormat()); e.Graphics.DrawString(data, FonteNormal, Brushes.Black, MargemEsq + 120, 140, new StringFormat()); e.Graphics.DrawString("Lote: ", FonteNegrito, Brushes.Black, MargemEsq + 250, 140, new StringFormat()); e.Graphics.DrawString(lote2, FonteNormal, Brushes.Black, MargemEsq + 290, 140, new StringFormat()); e.Graphics.DrawString("Produto: ", FonteNegrito, Brushes.Black, MargemEsq + 400, 140, new StringFormat()); e.Graphics.DrawString(produto2, FonteNormal, Brushes.Black, MargemEsq + 460, 140, new StringFormat()); //linha de separação e.Graphics.DrawLine(CanetaDaImpressora, MargemEsq, 160, MargemDir, 160); //campos a serem impressos: cabeçalho e.Graphics.DrawString("PRODUTO", FonteNegrito, Brushes.Black, MargemEsq, 170, new StringFormat()); e.Graphics.DrawString("LOTE", FonteNegrito, Brushes.Black, MargemEsq + 190, 170, new StringFormat()); e.Graphics.DrawString("QTD", FonteNegrito, Brushes.Black, MargemEsq + 240, 170, new StringFormat()); e.Graphics.DrawString("FABRICAÇÃO", FonteNegrito, Brushes.Black, MargemEsq + 285, 170, new StringFormat()); e.Graphics.DrawString("VENCIMENTO", FonteNegrito, Brushes.Black, MargemEsq + 380, 170, new StringFormat()); e.Graphics.DrawString("PRODUÇÃO", FonteNegrito, Brushes.Black, MargemEsq + 480, 170, new StringFormat()); e.Graphics.DrawString("OBSERVAÇÃO", FonteNegrito, Brushes.Black, MargemEsq + 560, 170, new StringFormat()); //linha de separação e.Graphics.DrawLine(CanetaDaImpressora, MargemEsq, 190, MargemDir, 190); //define quantas linhas por pagina LinhasPorPagina = Convert.ToInt32(e.MarginBounds.Height / FonteNormal.GetHeight(e.Graphics) - 9); StringFormat alinhaDireita = new StringFormat(); alinhaDireita.Alignment = StringAlignment.Far; string loteAux = doc.Texto[doc.Offset].lote; //Aqui sao lidos os dados (deixei pré-feito pra quando estivermos com o banco ja pronto) while (LinhaAtual < LinhasPorPagina && doc.Offset < doc.Texto.Count) { //obtem os valores do datareader var produto = doc.Texto[doc.Offset].Dsc_produto.ToString(); var lote = doc.Texto[doc.Offset].lote.ToString(); var quantidade = doc.Texto[doc.Offset].qtd_produto.ToString(); var fabricacao = doc.Texto[doc.Offset].data_fabricacao.ToString(); var vencimento = doc.Texto[doc.Offset].data_vencimento.ToString(); DateTime producao = Convert.ToDateTime(doc.Texto[doc.Offset].data_operacao.ToString()); var observacao = doc.Texto[doc.Offset].observacao.ToString(); //inicia a impressao PosicaoDaLinha = MargemSuper + (LinhaAtual * FonteNormal.GetHeight(e.Graphics)); //imprime os dados relativo ao codigo , nome do produto e preço do produto e.Graphics.DrawString(produto.ToString(), FonteNormal, Brushes.Black, MargemEsq, PosicaoDaLinha, new StringFormat()); e.Graphics.DrawString(lote.ToString(), FonteNormal, Brushes.Black, MargemEsq + 190, PosicaoDaLinha, new StringFormat()); e.Graphics.DrawString(quantidade.ToString(), FonteNormal, Brushes.Black, MargemEsq + 240, PosicaoDaLinha, new StringFormat()); e.Graphics.DrawString(fabricacao.ToString(), FonteNormal, Brushes.Black, MargemEsq + 285, PosicaoDaLinha, new StringFormat()); e.Graphics.DrawString(vencimento.ToString(), FonteNormal, Brushes.Black, MargemEsq + 380, PosicaoDaLinha, new StringFormat()); e.Graphics.DrawString(producao.ToString("dd/MM/yyyy"), FonteNormal, Brushes.Black, MargemEsq + 480, PosicaoDaLinha, new StringFormat()); e.Graphics.DrawString(observacao.ToString(), FonteNormal, Brushes.Black, MargemEsq + 560, PosicaoDaLinha, new StringFormat()); if (!loteAux.Equals(doc.Texto[doc.Offset].lote)) { //linha de separação e.Graphics.DrawLine(CanetaDaImpressora, MargemEsq, PosicaoDaLinha, MargemDir, PosicaoDaLinha); loteAux = doc.Texto[doc.Offset].lote; } LinhaAtual += 1; doc.Offset += 1; } //verifica se continua imprimindo if (doc.Offset < doc.Texto.Count) { e.HasMorePages = true; } else { doc.Offset = 0; } //Rodape - pega data e hora do sistema e.Graphics.DrawLine(CanetaDaImpressora, MargemEsq, MargemInfer, MargemDir, MargemInfer); e.Graphics.DrawString(System.DateTime.Now.ToString(), FonteRodape, Brushes.Black, MargemEsq, MargemInfer, new StringFormat()); LinhaAtual += Convert.ToInt32(FonteNormal.GetHeight(e.Graphics)); LinhaAtual += 1; e.Graphics.DrawString("ProEstoque", FonteRodape, Brushes.Black, MargemDir - 360, MargemInfer, new StringFormat()); e.Graphics.DrawString("Pagina : " + doc.NumeroPagina, FonteRodape, Brushes.Black, MargemDir - 50, MargemInfer, new StringFormat()); //Incrementa o numero da pagina paginaAtual += 1; //------------------------------------------------------------------------------------------------------------------------- /// <summary> /// finaliza a impressão /// </summary> /// <param name="sender"></param> /// <param name="byvale"></param }
//METODO QUE CONSTRÓI O RELATÓRIO A SER GERADO public void Relatorio(string dsc_produto, string data1, string data2, string tipoOperacao) { // Recupera o documento que enviou este evento. ImprimirDocumentoEntrada doc = (ImprimirDocumentoEntrada)sender; //Variaveis de Linhas. float LinhasPorPagina = 0; float PosicaoDaLinha = 0; int LinhaAtual = 0; //Variaveis de Margens. float MargemEsq = e.MarginBounds.Left; float MargemSuper = e.MarginBounds.Top + 100; float MargemDir = e.MarginBounds.Right; float MargemInfer = e.MarginBounds.Bottom; Pen CanetaDaImpressora = new Pen(Color.Black, 1); Pen CanetaDaImpressora2 = new Pen(Color.Black, 1); //Variaveis de Fontes. Font FonteNegrito = default(Font); Font FonteTitulo = default(Font); Font FonteSubTitulo = default(Font); Font FonteRodape = default(Font); Font FonteNormal = default(Font); //Define efeitos das fontes. FonteNegrito = new Font("Arial", 9, FontStyle.Bold); FonteTitulo = new Font("Arial", 18, FontStyle.Bold); FonteSubTitulo = new Font("Arial", 12, FontStyle.Bold); FonteRodape = new Font("Arial", 9, FontStyle.Bold); FonteNormal = new Font("Arial", 9); // Incrementa o contador de página para refletir // a página que esta sendo impressa doc.NumeroPagina += 1; //Define o valor para linha atual e da impressao LinhaAtual = 0; e.Graphics.DrawLine(CanetaDaImpressora, MargemEsq, 60, MargemDir, 60); //nome da empresa e.Graphics.DrawString("Massas Lott", FonteTitulo, Brushes.Black, MargemEsq + 40, 80, new StringFormat()); e.Graphics.DrawString(System.DateTime.Now.ToString(), FonteRodape, Brushes.Black, MargemDir - 120, 70, new StringFormat()); e.Graphics.DrawString(" RELATÓRIO DE PRODUTOS", FonteSubTitulo, Brushes.Black, MargemEsq + 200, 109, new StringFormat()); Image image = Image.FromFile("FOTO.jpg"); Point pp = new Point(100, 68); //imagem/logo se caso quiser colocar um logo e.Graphics.DrawImage(image, pp); //linha de separação e.Graphics.DrawLine(CanetaDaImpressora, MargemEsq, 130, MargemDir, 130); e.Graphics.DrawString("PERIODO DE : " + data1 + " ATÉ " + data2, FonteNegrito, Brushes.Black, MargemEsq, 140, new StringFormat()); e.Graphics.DrawString("OPERAÇÃO: " + tipoOperacao, FonteNegrito, Brushes.Black, MargemEsq + 480, 140, new StringFormat()); //linha de separação e.Graphics.DrawLine(CanetaDaImpressora, MargemEsq, 160, MargemDir, 160); //campos a serem impressos: cabeçalho e.Graphics.DrawString("CÓDIGO", FonteNegrito, Brushes.Black, MargemEsq, 170, new StringFormat()); e.Graphics.DrawString("PRODUTO", FonteNegrito, Brushes.Black, MargemEsq + 150, 170, new StringFormat()); e.Graphics.DrawString("QUANTIDADE", FonteNegrito, Brushes.Black, MargemEsq + 550, 170, new StringFormat()); //linha de separação e.Graphics.DrawLine(CanetaDaImpressora, MargemEsq, 190, MargemDir, 190); //define quantas linhas por pagina //define quantas linhas por pagina LinhasPorPagina = Convert.ToInt32(e.MarginBounds.Height / FonteNormal.GetHeight(e.Graphics) - 9); StringFormat alinhaDireita = new StringFormat(); alinhaDireita.Alignment = StringAlignment.Far; while (LinhaAtual < LinhasPorPagina && doc.Offset < doc.Texto.Count) { //obtem os valores do datareader int cod = Convert.ToInt32(doc.Texto[doc.Offset].Id_produto.ToString()); var produto = doc.Texto[doc.Offset].Dsc_produto.ToString(); var quantidade = doc.Texto[doc.Offset].qtd_produto.ToString(); //inicia a impressao PosicaoDaLinha = MargemSuper + (LinhaAtual * FonteNormal.GetHeight(e.Graphics)); //imprime os dados relativo ao codigo , nome do produto e preço do produto e.Graphics.DrawString(cod.ToString(), FonteNormal, Brushes.Black, MargemEsq, PosicaoDaLinha, new StringFormat()); e.Graphics.DrawString(produto.ToString(), FonteNormal, Brushes.Black, MargemEsq + 150, PosicaoDaLinha, new StringFormat()); e.Graphics.DrawString(quantidade.ToString(), FonteNormal, Brushes.Black, MargemEsq + 580, PosicaoDaLinha, new StringFormat()); LinhaAtual += 1; // move para a proxima linha doc.Offset += 1; } //verifica se continua imprimindo if (doc.Offset < doc.Texto.Count) { e.HasMorePages = true; } else { doc.Offset = 0; } //Rodape - pega data e hora do sistema e.Graphics.DrawLine(CanetaDaImpressora, MargemEsq, MargemInfer, MargemDir, MargemInfer); e.Graphics.DrawString(System.DateTime.Now.ToString(), FonteRodape, Brushes.Black, MargemEsq, MargemInfer, new StringFormat()); LinhaAtual += Convert.ToInt32(FonteNormal.GetHeight(e.Graphics)); LinhaAtual += 1; e.Graphics.DrawString("ProEstoque", FonteRodape, Brushes.Black, MargemDir - 360, MargemInfer, new StringFormat()); e.Graphics.DrawString("Pagina : " + doc.NumeroPagina, FonteRodape, Brushes.Black, MargemDir - 50, MargemInfer, new StringFormat()); //------------------------------------------------------------------------------------------------------------------------- /// <summary> /// finaliza a impressão /// </summary> /// <param name="sender"></param> /// <param name="byvale"></param }