Ver Mensaje Individual
  #1  
Antiguo 15-12-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Reputación: 14
aguml Va por buen camino
Problema al imprimir (se queda en la cola)

Ahora estoy liado con otra cosa, Hago esto para imprimir los trozos de imagen y funciona a medias. Si Elijo la impresora de NitroPDF sale la ventanita chica que dice Printing y que trae el ProgressBar y se rellena rapidamente y aparece el icono de impresora en la barra de tareas pero no veo que pase nada. Si lo hago con la impresora fisica si funciona.
Este es el codigo:

Código PHP:
void __fastcall TForm1::ButtonPrintImagesClick(TObject *Sender)
{
   
TInfoPapel info;

   if(
PrintDialog1->Execute())
   {
      
info = ObtenerTamPapel();
      if(
info.orientacion == 1) //Si la orientacion es vertical seguimos adelante
      
{
         switch (
info.tamPapel)
         {
            case 
DMPAPER_A5:
               
Form2->VividReport1->PaperSize = A5;
               
Form2->ShowModal();
               break;

            case 
DMPAPER_A4:
               
Form2->VividReport1->PaperSize = A4;
               
Form2->ShowModal();
               break;

            case 
DMPAPER_A3:
               
Form2->VividReport1->PaperSize = A3;
               
Form2->ShowModal();
               break;

            default:
               
MessageBox(Application->Handle, "El tamaño del papel seleccionado no es válido. Usa A5, A4, o A3", "Error", MB_OK |MB_ICONERROR | MB_APPLMODAL);
         }
      }else
      { 
//Si la orientacion del papel no es vertical no seguimos y avisamos de que no se puede usar otra
         
MessageBox(Handle, "No se puede elegir la orientación de papel horizontal.\nEsta aplicación solo funciona con orientación vertical." , "Error", MB_OK |MB_ICONERROR | MB_APPLMODAL);
      }
   }
}
//---------------------------------------------------------------------------

TInfoPapel ObtenerTamPapel(void)
{
   
char MyPrinter[100];
   
char MyDriver[100];
   
char MyPort[100];
   
THandle hDevMode;
   
PDEVMODE pDevMode;
   
TInfoPapel infoPapel;

   
Printer()->GetPrinter(MyPrinter, MyDriver, MyPort, hDevMode);

   if(
hDevMode){
      
pDevMode = (PDEVMODE)GlobalLock((void*)hDevMode);
      if(
pDevMode){
         
//El tamaño del papel debe ser para A4 DMPAPER_A4 o para A3 DMPAPER_A3
         //La orientacion vertical es 1 y la horizontal 2
         
infoPapel.tamPapel = pDevMode->dmPaperSize;
         
infoPapel.orientacion = pDevMode->dmOrientation;
         
GlobalUnlock((void*)hDevMode);
      }
      
//GlobalFree((void*)hDevMode);
   
}
   return 
infoPapel;
}
//---------------------------------------------------------------------------

void __fastcall TForm2::BitBtnImprimirClick(TObject *Sender)
{
        
VividReport1->Print();
} 
¿alguna idea de que puede estar pasando?
Responder Con Cita