Foros del Web » Programación para mayores de 30 ;) » .NET »

imprimir c#

Estas en el tema de imprimir c# en el foro de .NET en Foros del Web. hola gente que tal?? resulta que estoy imprimiendo un listado y cuando paso a la hoja 2 me gustaria que saliera en numero de la ...

  #1 (permalink)  
Antiguo 30/06/2008, 14:44
 
Fecha de Ingreso: enero-2008
Mensajes: 233
Antigüedad: 16 años, 3 meses
Puntos: 2
imprimir c#

hola gente que tal??

resulta que estoy imprimiendo un listado y cuando paso a la hoja 2 me gustaria que saliera en numero de la pagina

onda pagina = 1, pagina = 2


y como puedo establecer las lineas por hoja? ya que en la linea 66 necesito que se salte a la hoja 2

alguna idea de como poder hacerlo??



desde ya muchas gracias
  #2 (permalink)  
Antiguo 30/06/2008, 15:59
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: imprimir c#

En tu manejador del evento imprimir de tu printdocument en mi caso

private void MyPrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
int topMargin = printDocument1.DefaultPageSettings.Margins.Top;
int leftMargin = printDocument1.DefaultPageSettings.Margins.Left;
float linesPerPage = 0;
float verticalPosition = 0;
float horizontalPosition = leftMargin;
string textLine = null;
int currentLine = 0;
linesPerPage = 66;

while (currentLine < linesPerPage)
{
textLine = (aqui va tu fuente de lineas de texto de tu documento, una coleccion o un stream o q se yo pero q contenga todas las lineas de texto)
if(textLine == null)
{
break;
}

verticalPosition = topMargin + currentLine * myFont.GetHeight(e.Graphics);

e.Graphics.DrawString(textLine, myFont, myBrush, horizontalPosition, verticalPosition);
currentLine += 1;
}

if (textLine != null)
{
e.HasMorePages = true;
}
else
{
e.HasMorePages = false;
}
}

RECUERDA Q EL EVENTO PRINT SIGUE ACTUANDO HASTA Q E.HASMOREPAGES SEA FALSO
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #3 (permalink)  
Antiguo 01/07/2008, 07:05
 
Fecha de Ingreso: enero-2008
Mensajes: 233
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: imprimir c#

textLine = (aqui va tu fuente de lineas de texto de tu documento, una coleccion o un stream o q se yo pero q contenga todas las lineas de texto)

aki va el Font? o lo que toy imprimiedo como

e.Graphics.DrawString("DE FECHA: " + DateTime.Now.ToShortDateString() + "A FECHA: " + DateTime.Now.ToShortDateString() + "DEL VENDEDOR: 4", fuente, Brushes.Black, 130, 50, new StringFormat());

??
  #4 (permalink)  
Antiguo 01/07/2008, 07:14
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: imprimir c#

en textline lo q quieres imprimir. solo eso
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #5 (permalink)  
Antiguo 01/07/2008, 07:23
 
Fecha de Ingreso: enero-2008
Mensajes: 233
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: imprimir c#

private void Imprimir_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
int topMargin = Imprimir.DefaultPageSettings.Margins.Top;
int leftMargin = Imprimir.DefaultPageSettings.Margins.Left;
float linesPerPage = 0;
float verticalPosition = 0;
float horizontalPosition = leftMargin;
string textLine = null;
int currentLine = 0;
linesPerPage = 66;

while (currentLine < linesPerPage)
{
textLine = "nose q poner dame un ejemplo ;*/";
if (textLine == null)
{
break;
}
fuente = new Font("Courier", 9, FontStyle.Regular);
verticalPosition = topMargin + currentLine * fuente.GetHeight(e.Graphics);
#region formato de la hoja

PaperSize carta = new PaperSize();
carta.RawKind = 1;
Imprimir.DefaultPageSettings.PaperSize = carta;
//MessageBox.Show(Imprimir.DefaultPageSettings.Paper Size.ToString());
Dominio.Cliente client = new Dominio.Cliente();
client.Telefono1 = this.txtTelefono.Text;
ArrayList resultados = registro.buscarClienteTelefonoPrueba();

Pen myPen = new Pen(Color.Black);
myPen.DashStyle = DashStyle.Dash;
// e.Graphics.DrawRectangle(myPen,10, 20, 790, 100);
e.Graphics.DrawString("INFORME CLIENTES POR VENDEDORES " + DateTime.Now.ToShortDateString() + " Pagina: ", fuente, Brushes.Black, 130, 30, new StringFormat());
e.Graphics.DrawString("DE FECHA: " + DateTime.Now.ToShortDateString() + "A FECHA: " + DateTime.Now.ToShortDateString() + "DEL VENDEDOR: 4", fuente, Brushes.Black, 130, 50, new StringFormat());
int contador1Linea = 150;
int contador2Linea = 165;
int contador3Linea = 180;
int contador4Linea = 195;
int contador5Linea = 210;
int contador6Linea = 225;
int contador7Linea = 240;
int contador8Linea = 255;
#endregion
foreach (Dominio.Cliente cliente in resultados)
{

e.Graphics.DrawString("Nº REPORTE: " + Convert.ToString(cliente.NumeroReporte).Trim(), fuente, Brushes.Black, 0, contador1Linea, new StringFormat());
e.Graphics.DrawString("CODIGO CLIENTE: " + Convert.ToString(cliente.NumeroReporte).Trim(), fuente, Brushes.Black, 300, contador1Linea, new StringFormat());
e.Graphics.DrawString("FECHA VISITA: " + DateTime.Now.ToShortDateString(), fuente, Brushes.Black, 550, contador1Linea, new StringFormat());

// SEGUNDA LINEA !!!
e.Graphics.DrawString("NOMBRE CLIENTE: " + cliente.Nombres.Trim() + " " + cliente.Apellidos.Trim(), fuente, Brushes.Black, 0, contador2Linea, new StringFormat());

//TERCERA LINEA !!!
e.Graphics.DrawString("DIRECCIÓN: " + cliente.Direccion.Trim(), fuente, Brushes.Black, 0, contador3Linea, new StringFormat());
e.Graphics.DrawString("F. PROX. VISITA: " + DateTime.Now.ToShortDateString(), fuente, Brushes.Black, 550, contador3Linea, new StringFormat());

// CUARTA LINEA
e.Graphics.DrawString("POB./VILLA: " + cliente.PoblacionOVilla.Trim(), fuente, Brushes.Black, 0, contador4Linea, new StringFormat());

//QUINTA LINEA !!!
e.Graphics.DrawString("COMUNA : " + cliente.Comuna.Trim(), new Font("Courier", 8, FontStyle.Regular), Brushes.Black, 0, contador5Linea, new StringFormat());
e.Graphics.DrawString("TELEFONO : " + cliente.Telefono1.Trim(), new Font("Courier", 8, FontStyle.Regular), Brushes.Black, 300, contador5Linea, new StringFormat());

// SEXTA LINEA !!!
e.Graphics.DrawString("TIPO DE DATO : " + cliente.TipoDeDato, fuente, Brushes.Black, 0, contador6Linea, new StringFormat());
e.Graphics.DrawString("EMAIL : " + cliente.Email, fuente, Brushes.Black, 300, contador6Linea, new StringFormat());

// SEPTIMA LINEA DONDE SE SALTA EL ESPACIO
Pen myPen1 = new Pen(Color.Black);
myPen1.DashStyle = DashStyle.Dash;
e.Graphics.DrawLine(myPen1, 800, contador7Linea, 0, contador7Linea);

contador1Linea += 120;
contador2Linea += 120;
contador3Linea += 120;
contador4Linea += 120;
contador5Linea += 120;
contador6Linea += 120;
contador7Linea += 120;
contador8Linea += 120;
}
currentLine += 1;
}
if (textLine != null)
{
e.HasMorePages = true;
}
else
{
e.HasMorePages = false;
}


}
  #6 (permalink)  
Antiguo 01/07/2008, 07:23
 
Fecha de Ingreso: enero-2008
Mensajes: 233
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: imprimir c#

me sale como 4548445 paginas a mostrar que tendria malo?? x favor :D
  #7 (permalink)  
Antiguo 01/07/2008, 10:44
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: imprimir c#

porq no haces esto

fuera del print

List<string> cosasaimprimir=new List<string>(); // Q sea publica a la altura de tu windows form.


foreach(cliente clienteactual in clientes)
{
cosasaimprimir.Add(string.Format("Linea 1: sadaskdjsadasdsdds {0}",cliente));
cosasaimprimir.Add(string.Format("Linea 1: sadaskdjsadasdsdds {0}",cliente));
cosasaimprimir.Add(string.Format("Linea 1: sadaskdjsadasdsdds {0}",cliente));
}

y tu

TEXTLINE= COSASAiMPRIMIR[CONTADOR]

e.Graphics.DrawString(TEXTLINE,ETC,ETC,ETC,ETC);
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #8 (permalink)  
Antiguo 01/07/2008, 10:45
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: imprimir c#

Digo Elproblema Es Q Estas Haciendo Un Mal Incremento De Lineas O No Llevas Una Condicion De Paro Por Eso Falla
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #9 (permalink)  
Antiguo 01/07/2008, 12:17
 
Fecha de Ingreso: enero-2008
Mensajes: 233
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: imprimir c#

realizare lo planteado y te comento enseguida muchas gracias peterpay =D
  #10 (permalink)  
Antiguo 02/07/2008, 09:14
 
Fecha de Ingreso: enero-2008
Mensajes: 233
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: imprimir c#

peterpay y como podre hacerlo si yo kiero imprimir 3 clientes por hoja?? osea imprimir la informacion del cliente, pero 3 registros po hoja?? se podra :D?



desde ya muchas gracias =D
  #11 (permalink)  
Antiguo 02/07/2008, 09:40
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: imprimir c#

pues mira se puede todo, solo depende como organices tu informacion q vas a imprimir

considera q si vas a imprimir detalles anidasdos y quieres q 3 clientes quepan en tu hoja reducir tal vez el detalle en el tamaño de fuente y con eso.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #12 (permalink)  
Antiguo 02/07/2008, 09:55
 
Fecha de Ingreso: enero-2008
Mensajes: 233
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: imprimir c#

pero por ejemplo que al pasar a la hoja 2 me imprima de nuevo el membrete y empize con los otros 3 registros se puede??


y en el ejemplo que me pusiste como pongo Numero Pagina : variable??
  #13 (permalink)  
Antiguo 02/07/2008, 11:05
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: imprimir c#

pues si , pero es mas logica q programacion eso

ok si es el inico por default siempre imprime el header

si tienes mas clientes por recorrer lo mismo pero necesitarias usar un yield en tu ciclo par ano perder la sequencia y continues en el ultimo.

revisa tu estructura de como quieres q imprima cada pagina y ya q la tengas haz un loop sobre ello
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #14 (permalink)  
Antiguo 09/07/2008, 09:16
 
Fecha de Ingreso: enero-2008
Mensajes: 233
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: imprimir c#

Cita:
Iniciado por Peterpay Ver Mensaje
porq no haces esto

fuera del print

List<string> cosasaimprimir=new List<string>(); // Q sea publica a la altura de tu windows form.


foreach(cliente clienteactual in clientes)
{
cosasaimprimir.Add(string.Format("Linea 1: sadaskdjsadasdsdds {0}",cliente));
cosasaimprimir.Add(string.Format("Linea 1: sadaskdjsadasdsdds {0}",cliente));
cosasaimprimir.Add(string.Format("Linea 1: sadaskdjsadasdsdds {0}",cliente));
}

y tu

TEXTLINE= COSASAiMPRIMIR[CONTADOR]

e.Graphics.DrawString(TEXTLINE,ETC,ETC,ETC,ETC);






disculpa que retome el metodo peterpay pero no me ha resultado lo que yo keria =(

en ese metodo que tu me nombre lo hice publico pero q retorne algo??

ya que eso despues lo pongo

aka

while (currentLine < linesPerPage)
{
textLine = ¿?;
if (textLine == null)
{
break;
}


como lo hago ;P?
  #15 (permalink)  
Antiguo 09/07/2008, 11:17
 
Fecha de Ingreso: enero-2008
Mensajes: 233
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: imprimir c#

ayudame por favor peterpay que este tema me tien bastante acomplejado =*/ nose como pasarle al textline todo lo que quiero imprimir ;(!
  #16 (permalink)  
Antiguo 09/07/2008, 11:29
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: imprimir c#

mira la cuestion es q es un ejemplo para q te bases no es la solucion exacta,

tu puedes decirle a tu evento print cuantas lineas por pagina y si la rebasas decirle q si algun contenedor en este caso una coleccion tenga mas lineas por imprimir e.hasmorepages=true

si no paras la impresion. lo q importa es como lo ajustes a tu problema.

el textline puede ser asi o puedes poenr tus n lineas por cada elemento de tus datos.

pero eso es ya cuestion de logica de como quieres imprimirlo no del problema de linas por pagina ni de paginas pendientes.

pregunta en dodne tienes todos tus datos a imprimir y el formato q quieres seguir ,el real no supuestos ni mas o menos asi.

ponlo y lo revisamos
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #17 (permalink)  
Antiguo 09/07/2008, 11:32
 
Fecha de Ingreso: enero-2008
Mensajes: 233
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: imprimir c#

ok abajo pondre mi codigo y una imagen para que nos valla bien =D
  #18 (permalink)  
Antiguo 09/07/2008, 11:36
 
Fecha de Ingreso: enero-2008
Mensajes: 233
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: imprimir c#

Código:
  private void ImprimirAc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {

            Font myFont = new Font("Courier", 10, FontStyle.Regular);

            //Bitmap encabezadoImagen = new Bitmap(@"\\Proliant\SISTEMAS SQL/encabezado.bmp");
            //e.Graphics.DrawImage(encabezadoImagen, new Point(70, 10));

            //e.Graphics.DrawString("Reactualización de reportes", new Font("Courier", 20, FontStyle.Underline), Brushes.Black, 250, 100, new StringFormat());
            //e.Graphics.DrawString("Fecha: " + DateTime.Now.ToShortDateString(), new Font("Courier", 16, FontStyle.Regular), Brushes.Black, 330, 130, new StringFormat());


            //e.Graphics.DrawString("Visitas realizadas por el vendedor: " + this.lblNombreVendedor.Text, new Font("Courier", 16, FontStyle.Regular), Brushes.Black, 0, 180, new StringFormat());
            Dominio.MoviReportes moviRep = new Dominio.MoviReportes();
            moviRep.CodigoCliente = Convert.ToInt32(this.lblCodigoCliente.Text);
            moviRep.CodigoVendedor = codigoVendedor;
            ArrayList resultados = registro.DatosReactualizacion(moviRep);
            int contador1Linea = 250;
            int contador2Linea = 270;
            int contador3Linea = 290;
            int contador4Linea = 310;
            int contador5Linea = 330;
            int contador6Linea = 350;
            int contador = 0;
            foreach (Dominio.MoviReportes movReportes in resultados)
            {
                #region

                string tipoDeVisita = "";
                if (movReportes.TipoDeVisita == 1)
                {
                    tipoDeVisita = "POR TELEFONO";
                }
                else if (movReportes.TipoDeVisita == 2)
                {
                    tipoDeVisita = "VISITA CASA";
                }
                else if (movReportes.TipoDeVisita == 3)
                {
                    tipoDeVisita = "VISITA AL C.M.";
                }


                string estado = "";
                ArrayList resultadosDatos = registro.buscarTipoDeDato();
                foreach (Dominio.TipoDeDato tipoDato in resultadosDatos)
                {
                    if (movReportes.CodigoEstado == tipoDato.CodigoDato)
                    {
                        estado = tipoDato.TipoDeDato1;
                    }
                }

                #endregion

                // PRIMERA LINEA !!!
                e.Graphics.DrawString("FECHA VISITA: " + movReportes.FechaVisitaRuta.ToShortDateString(), myFont, Brushes.Black, 0, contador1Linea, new StringFormat());
                e.Graphics.DrawString("FECHA PROX. VISITA: " + movReportes.FechaProximaRuta.ToShortDateString(), myFont, Brushes.Black, 400, contador1Linea, new StringFormat());

                // SEGUNDA LINEA !!!
                e.Graphics.DrawString("Nº RUTA: " + movReportes.NumeroRuta, myFont, Brushes.Black, 0, contador2Linea, new StringFormat());
                e.Graphics.DrawString("DIRECCIÓN: " + movReportes.Direccion, myFont, Brushes.Black, 400, contador2Linea, new StringFormat());

                // TERCERA LINEA !!!
                e.Graphics.DrawString("TIPO DE VISITA: " + tipoDeVisita, myFont, Brushes.Black, 0, contador3Linea, new StringFormat());
                e.Graphics.DrawString("ESTADO: " + estado, myFont, Brushes.Black, 400, contador3Linea, new StringFormat());

                //CUARTA LINEA !!!
                e.Graphics.DrawString("Nº TELEFONO: " + movReportes.NumeroTelefono, myFont, Brushes.Black, 0, contador4Linea, new StringFormat());
                e.Graphics.DrawString("PERSONA CONTACTO: " + movReportes.PersonaDeContacto, myFont, Brushes.Black, 400, contador4Linea, new StringFormat());

                //QUINTA LINEA !!!
                e.Graphics.DrawString("OBSERVACIONES: " + movReportes.Observaciones, myFont, Brushes.Black, 0, contador5Linea, new StringFormat());

                // SEPARADOR DE REGISTROS
                Pen myPen1 = new Pen(Color.Black);
                myPen1.DashStyle = DashStyle.Dash;
                e.Graphics.DrawLine(myPen1, 800, contador6Linea, 0, contador6Linea);

                contador1Linea += 130;
                contador2Linea += 130;
                contador3Linea += 130;
                contador4Linea += 130;
                contador5Linea += 130;
                contador6Linea += 130;

               


            }
         

        }
es mi codigo que imprime asi




cabe destacar que los drawString que tengo comentados es el membrete que quiero que salga en todas las paginas

tan solo quiero poner el numero de la pagina que es..
y que me vallan saliendo los registros por hojas :*/
  #19 (permalink)  
Antiguo 09/07/2008, 11:44
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: imprimir c#

cuantos registros por hoja,

Dominio.MoviReportes moviRep = new Dominio.MoviReportes();
moviRep.CodigoCliente = Convert.ToInt32(this.lblCodigoCliente.Text);
moviRep.CodigoVendedor = codigoVendedor;
ArrayList resultados = registro.DatosReactualizacion(moviRep);
esto lo pondria de forma global e inicializandolo cuando le des click al boton imprimir

yo sacaria el foreach y lo q haria es crear un contador global.

y podria en su lugar

for(int i=0;i<5;i++) // el 5 es minumero de regportes por hoja , tu ponle los q quieras simepre y cuando quepan en tu pagina
{
movReportes=resultados[contadorglobal]
if(movReportes!=null)
{
imprimo todo
}
contadorglobal++;
}

try{
if(resultados[contadorglobal+1]!=null)
e.hasmorepages=true;
else
e.hasmorpages=false}
catch(Exception ex)
{
e.hasmorpages=false
}
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5

Última edición por Peterpay; 09/07/2008 a las 11:50
  #20 (permalink)  
Antiguo 09/07/2008, 12:05
 
Fecha de Ingreso: enero-2008
Mensajes: 233
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: imprimir c#

pero como voy sacando los registros del foreach??

donde voy poniendo el foreach on el e.DrawString
  #21 (permalink)  
Antiguo 09/07/2008, 12:07
 
Fecha de Ingreso: enero-2008
Mensajes: 233
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: imprimir c#

yy el resultados[contadorglobal] donde lo inicializo ;(?


disculpa por no ser de mucha ayuda ;(
  #22 (permalink)  
Antiguo 09/07/2008, 12:18
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: imprimir c#

Código:
  Dominio.MoviReportes moviRep;
            ArrayList resultados;
  int contadorglobal=0;
public void eventoclickimprimirodondeincoqueselimprimi()
{
             movirep = new Dominio.MoviReportes();
            moviRep.CodigoCliente = Convert.ToInt32(this.lblCodigoCliente.Text);
            moviRep.CodigoVendedor = codigoVendedor;
            resultados = registro.DatosReactualizacion(moviRep);
          
            ImprmirAc.Print;
}


private void ImprimirAc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {

            Font myFont = new Font("Courier", 10, FontStyle.Regular);

            //Bitmap encabezadoImagen = new Bitmap(@"\\Proliant\SISTEMAS SQL/encabezado.bmp");
            //e.Graphics.DrawImage(encabezadoImagen, new Point(70, 10));

            //e.Graphics.DrawString("Reactualización de reportes", new Font("Courier", 20, FontStyle.Underline), Brushes.Black, 250, 100, new StringFormat());
            //e.Graphics.DrawString("Fecha: " + DateTime.Now.ToShortDateString(), new Font("Courier", 16, FontStyle.Regular), Brushes.Black, 330, 130, new StringFormat());


            //e.Graphics.DrawString("Visitas realizadas por el vendedor: " + this.lblNombreVendedor.Text, new Font("Courier", 16, FontStyle.Regular), Brushes.Black, 0, 180, new StringFormat());
          

  int contador1Linea = 250;
            int contador2Linea = 270;
            int contador3Linea = 290;
            int contador4Linea = 310;
            int contador5Linea = 330;
            int contador6Linea = 350;
            int contador = 0;
            for(int i=0;i<numerodereportesporpagina;i++)
            {
                Dominio.MoviReportes movReportes=(Dominio.MoviReportes) resultados[contadorglobal];
                #region

                string tipoDeVisita = "";
                if (movReportes.TipoDeVisita == 1)
                {
                    tipoDeVisita = "POR TELEFONO";
                }
                else if (movReportes.TipoDeVisita == 2)
                {
                    tipoDeVisita = "VISITA CASA";
                }
                else if (movReportes.TipoDeVisita == 3)
                {
                    tipoDeVisita = "VISITA AL C.M.";
                }


                string estado = "";
                ArrayList resultadosDatos = registro.buscarTipoDeDato();
                foreach (Dominio.TipoDeDato tipoDato in resultadosDatos)
                {
                    if (movReportes.CodigoEstado == tipoDato.CodigoDato)
                    {
                        estado = tipoDato.TipoDeDato1;
                    }
                }

                #endregion

                // PRIMERA LINEA !!!
                e.Graphics.DrawString("FECHA VISITA: " + movReportes.FechaVisitaRuta.ToShortDateString(), myFont, Brushes.Black, 0, contador1Linea, new StringFormat());
                e.Graphics.DrawString("FECHA PROX. VISITA: " + movReportes.FechaProximaRuta.ToShortDateString(), myFont, Brushes.Black, 400, contador1Linea, new StringFormat());

                // SEGUNDA LINEA !!!
                e.Graphics.DrawString("Nº RUTA: " + movReportes.NumeroRuta, myFont, Brushes.Black, 0, contador2Linea, new StringFormat());
                e.Graphics.DrawString("DIRECCIÓN: " + movReportes.Direccion, myFont, Brushes.Black, 400, contador2Linea, new StringFormat());

                // TERCERA LINEA !!!
                e.Graphics.DrawString("TIPO DE VISITA: " + tipoDeVisita, myFont, Brushes.Black, 0, contador3Linea, new StringFormat());
                e.Graphics.DrawString("ESTADO: " + estado, myFont, Brushes.Black, 400, contador3Linea, new StringFormat());

                //CUARTA LINEA !!!
                e.Graphics.DrawString("Nº TELEFONO: " + movReportes.NumeroTelefono, myFont, Brushes.Black, 0, contador4Linea, new StringFormat());
                e.Graphics.DrawString("PERSONA CONTACTO: " + movReportes.PersonaDeContacto, myFont, Brushes.Black, 400, contador4Linea, new StringFormat());

                //QUINTA LINEA !!!
                e.Graphics.DrawString("OBSERVACIONES: " + movReportes.Observaciones, myFont, Brushes.Black, 0, contador5Linea, new StringFormat());

                // SEPARADOR DE REGISTROS
                Pen myPen1 = new Pen(Color.Black);
                myPen1.DashStyle = DashStyle.Dash;
                e.Graphics.DrawLine(myPen1, 800, contador6Linea, 0, contador6Linea);

                contador1Linea += 130;
                contador2Linea += 130;
                contador3Linea += 130;
                contador4Linea += 130;
                contador5Linea += 130;
                contador6Linea += 130;
              
            }        
            try{
            if(resultados[contadorglobal]!=null)
            {
                 e.HasMorepageS=true;
             } 
             else{   e.HasMorepageS=false;
}}catch(Exception ex){   e.HasMorepageS=false;
 }
        }
no esta cmpleto usa lo q te dije del contador faltna las condiciones para poder hacder el paro cundo tienes mas de una pagian cuando todavia existen registros por imprimir y esas cosas q explique en el post pasado
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #23 (permalink)  
Antiguo 09/07/2008, 12:31
 
Fecha de Ingreso: enero-2008
Mensajes: 233
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: imprimir c#

Código:
 private void ImprimirAc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {

            {

                Font myFont = new Font("Courier", 10, FontStyle.Regular);

                //Bitmap encabezadoImagen = new Bitmap(@"\\Proliant\SISTEMAS SQL/encabezado.bmp");
                //e.Graphics.DrawImage(encabezadoImagen, new Point(70, 10));

                //e.Graphics.DrawString("Reactualización de reportes", new Font("Courier", 20, FontStyle.Underline), Brushes.Black, 250, 100, new StringFormat());
                //e.Graphics.DrawString("Fecha: " + DateTime.Now.ToShortDateString(), new Font("Courier", 16, FontStyle.Regular), Brushes.Black, 330, 130, new StringFormat());


                //e.Graphics.DrawString("Visitas realizadas por el vendedor: " + this.lblNombreVendedor.Text, new Font("Courier", 16, FontStyle.Regular), Brushes.Black, 0, 180, new StringFormat());


                int contador1Linea = 250;
                int contador2Linea = 270;
                int contador3Linea = 290;
                int contador4Linea = 310;
                int contador5Linea = 330;
                int contador6Linea = 350;
                int contador = 0;
                for (int i = 0; i < 5; i++)
                {
                    Dominio.MoviReportes movReportes = (Dominio.MoviReportes)resultados[i];


                    if (movReportes != null)
                    {


                        #region

                        string tipoDeVisita = "";
                        if (movReportes.TipoDeVisita == 1)
                        {
                            tipoDeVisita = "POR TELEFONO";
                        }
                        else if (movReportes.TipoDeVisita == 2)
                        {
                            tipoDeVisita = "VISITA CASA";
                        }
                        else if (movReportes.TipoDeVisita == 3)
                        {
                            tipoDeVisita = "VISITA AL C.M.";
                        }


                        string estado = "";
                        ArrayList resultadosDatos = registro.buscarTipoDeDato();
                        foreach (Dominio.TipoDeDato tipoDato in resultadosDatos)
                        {
                            if (movReportes.CodigoEstado == tipoDato.CodigoDato)
                            {
                                estado = tipoDato.TipoDeDato1;
                            }
                        }

                        #endregion


                        // PRIMERA LINEA !!!
                        e.Graphics.DrawString("FECHA VISITA: " + movReportes.FechaVisitaRuta.ToShortDateString(), myFont, Brushes.Black, 0, contador1Linea, new StringFormat());
                        e.Graphics.DrawString("FECHA PROX. VISITA: " + movReportes.FechaProximaRuta.ToShortDateString(), myFont, Brushes.Black, 400, contador1Linea, new StringFormat());

                        // SEGUNDA LINEA !!!
                        e.Graphics.DrawString("Nº RUTA: " + movReportes.NumeroRuta, myFont, Brushes.Black, 0, contador2Linea, new StringFormat());
                        e.Graphics.DrawString("DIRECCIÓN: " + movReportes.Direccion, myFont, Brushes.Black, 400, contador2Linea, new StringFormat());

                        // TERCERA LINEA !!!
                        e.Graphics.DrawString("TIPO DE VISITA: " + tipoDeVisita, myFont, Brushes.Black, 0, contador3Linea, new StringFormat());
                        e.Graphics.DrawString("ESTADO: " + estado, myFont, Brushes.Black, 400, contador3Linea, new StringFormat());

                        //CUARTA LINEA !!!
                        e.Graphics.DrawString("Nº TELEFONO: " + movReportes.NumeroTelefono, myFont, Brushes.Black, 0, contador4Linea, new StringFormat());
                        e.Graphics.DrawString("PERSONA CONTACTO: " + movReportes.PersonaDeContacto, myFont, Brushes.Black, 400, contador4Linea, new StringFormat());

                        //QUINTA LINEA !!!
                        e.Graphics.DrawString("OBSERVACIONES: " + movReportes.Observaciones, myFont, Brushes.Black, 0, contador5Linea, new StringFormat());

                        // SEPARADOR DE REGISTROS
                        Pen myPen1 = new Pen(Color.Black);
                        myPen1.DashStyle = DashStyle.Dash;
                        e.Graphics.DrawLine(myPen1, 800, contador6Linea, 0, contador6Linea);

                        contador1Linea += 130;
                        contador2Linea += 130;
                        contador3Linea += 130;
                        contador4Linea += 130;
                        contador5Linea += 130;
                        contador6Linea += 130;
                    }
                    contadorglobal++;
                    try
                    {
                        if (resultados[contadorglobal + 1] != null)
                        {
                            e.HasMorePages = true;
                        }
                        else
                        {
                            e.HasMorePages = false;
                        }
                    }
                    catch (Exception ex)
                    {
                        e.HasMorePages = false;
                    }
                
                }
            }
        }
puse ese codigo y ha impreso 2 hojas !!! pero las 2 hojas con los mismos resultados que puede estar pasando??
  #24 (permalink)  
Antiguo 09/07/2008, 12:36
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: imprimir c#

Dominio.MoviReportes movReportes=(Dominio.MoviReportes) resultados[i];

por

Dominio.MoviReportes movReportes=(Dominio.MoviReportes) resultados[contadorglobal];
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #25 (permalink)  
Antiguo 09/07/2008, 12:44
 
Fecha de Ingreso: enero-2008
Mensajes: 233
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: imprimir c#

al pasar a la hoja 2 me dice el indice estaba fuera del intervalo.


cabe destacar que en la ultima hoja no hayan 5 registros si no 3 o 2

que pueder ser ahora??
  #26 (permalink)  
Antiguo 09/07/2008, 12:48
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: imprimir c#

ahora si solo agrega un try a tu ciclo

for (int i = 0; i < 5; i++)
{
Dominio.MoviReportes movReportes = (Dominio.MoviReportes)resultados[contadorglobal];

por

for (int i = 0; i < 5; i++)
{
try{
Dominio.MoviReportes movReportes = (Dominio.MoviReportes)resultados[contadorgloblal];
}
catch(exception exs){e.hasmorepages=false; return;}
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #27 (permalink)  
Antiguo 09/07/2008, 12:50
 
Fecha de Ingreso: enero-2008
Mensajes: 233
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: imprimir c#

y el que tengo al final del codigo lo dejo = o no?
  #28 (permalink)  
Antiguo 09/07/2008, 12:51
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: imprimir c#

puede contar pero con ese puedes saber q tal vez el ultimo no tenga ninguno. es igual si lo quitas o no
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #29 (permalink)  
Antiguo 09/07/2008, 12:59
 
Fecha de Ingreso: enero-2008
Mensajes: 233
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: imprimir c#

MUCHAAAAAAAAAAAAAAAS GRACIAS PETERPAY AHI ME RESULTO TOY DEMASIADO FELIZ :DDDDD


me faltaria imprimir en el membrete poner el numero de pagina seria

private int numeroPagina = 1;

y al final de for poner

numeroPagina += 1??

Última edición por pablokes; 09/07/2008 a las 13:10
  #30 (permalink)  
Antiguo 09/07/2008, 13:13
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Respuesta: imprimir c#

asi es pero seria global tambien
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:10.