SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: nisisantoto en Sábado 19 de Enero de 2008, 22:18

Título: Quickrep Impresion C++ Builder 6.0
Publicado por: nisisantoto en Sábado 19 de Enero de 2008, 22:18
Necesito imprimir un QuickRep con el Borland... utilizo la función Print() y aparece la ventana "Printing in Progress" pero nada sucede!....
La impresora predeterminada concuerda con la que se envia a imprimir, pero ya reptio, no imprime!...
Luego utilize la funcion Preview() para verificar, pero la vista previa aparece vacia (pantalla en gris), mientrass que en realidad el QRep esta cargado de datos.
Si alguine me ayuda con esta inquitud les voy a agradecer, porq soy novato en esto de imprimir jaja.
Gracias!
Título: Re: Quickrep Impresion C++ Builder 6.0
Publicado por: el_shanky en Lunes 25 de Febrero de 2008, 09:34
Buenas no estoy muy familiarizado con el QuickRep pero yo necesité imprimir un Memo y utilizé este código:

Código: Text
  1.  
  2. void __fastcall TForm1::Imprimir1Click(TObject *Sender)
  3. {
  4. man.cargar(); // esta función carga los datos al memo
  5.  
  6. if (PrintDialog1->Execute()) { // Este código imprime el memo (Mostrar->Memo1)
  7.  
  8. Printer()->Canvas->Font = Mostrar->Memo1->Font; //Asignamos la fuente de impresion
  9. int lineHeight = abs(MulDiv(Printer()->Canvas->Font->Size,GetDeviceCaps(Printer()->Handle, LOGPIXELSY), 72)); // determinamos altura de la linea
  10. lineHeight *= 1.4;
  11. int linesPerPage = (Printer()->PageHeight/lineHeight) - 2;
  12. int lineCount = 2; // iniciamos la impresion en la linea 2 para dejar margen (en vez de la 0)
  13.  
  14. Printer()->BeginDoc();
  15. for (int i=0;i < Mostrar->Memo1->Lines->Count;i++) {
  16. if (lineCount++ == linesPerPage) {
  17. lineCount = 2;
  18. Printer()->NewPage();
  19. }
  20. String s = Mostrar->Memo1->Lines->Strings[i];
  21. Printer()->Canvas->TextOut(0, lineCount * lineHeight, s);
  22. }
  23. Printer()->EndDoc();
  24. }
  25. }
  26.  
  27.  
  28.  

Ojo! Mostrar-> es l nobre de mi formulario (Mostrar-> = Form1->


Espero que te sirva! exitos

 :comp:
Título: Re: Quickrep Impresion C++ Builder 6.0
Publicado por: Elforious en Jueves 13 de Marzo de 2008, 21:30
Buen algoritmo, es de mucha ayuda, pero tengo una pregunta:

La variable "s" es la que guarda toda una línea del Memo1, y esa es la va imprimiendo antes de saltar a la próxima línea, ¿no es así?

Y la variable i es el número de la línea, no?

Lo que pasa es que esta es la primera vez que veo un algoritmo para imprimir un Memo, y estube desifrandolo :comp:  je.

Gracias por tu atención.

Nota:
Te aconsejo ponerle nombres significativos a las variables que usas, por que si lo haces tu código va a ser más fácil de entender para los demás, incluso para ti si es que no lo ves después de un buen tiempo ;)
Título: Re: Quickrep Impresion C++ Builder 6.0
Publicado por: el_shanky en Martes 25 de Marzo de 2008, 07:42
Analizando el codigo un poco puedo decirte que tus intuiciones son acertadas.

"i" es la variable que uso apra mover el for y con ella extraigo la linea del Memo y la asigno a String s, entonces en "s" está el texto a imprimir.

Citar
Nota:
Te aconsejo ponerle nombres significativos a las variables que usas, por que si lo haces tu código va a ser más fácil de entender para los demás, incluso para ti si es que no lo ves después de un buen tiempo
jajaj toda la razón tenes x que leyendo así rápido ni idea tengo ya de que eran las variables!! jaajaja
Igual todos me lo dicen pero como lo documento tanto al codigo x ahí no le doy nombres mas significativos! igual lo voy a tener en cuenta.

Salu2 y disuclpa la tardanza recien lo leo al post! :S
Título: Re: Quickrep Impresion C++ Builder 6.0
Publicado por: Elforious en Martes 25 de Marzo de 2008, 16:30
jejeje, lo que me olvide decir es que los nombres significativos en las variables te fomentan la flojera para no documentar tanto el código... :D je! son de mucha ayuda.