Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Problema al imprimir (se queda en la cola) (https://www.clubdelphi.com/foros/showthread.php?t=87329)

aguml 15-12-2014 18:57:57

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(MyPrinterMyDriverMyPorthDevMode);

   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?

aguml 15-12-2014 22:00:11

perdon, no sabia que existia un apartado para impresion. Gracias por moverlo.

aguml 19-12-2014 14:08:17

Al final lo he podido solucionar.
Despues de mucho buscar he podido dar con el problema y es que VividReport tiene su propio dialogo de configuracion de impresora y no usa el que trae Builder, o sea, hay que hacer VividReport1->PrinterSetup() y así nos muestra su propio PrintDialog que es identico en aspecto.


La franja horaria es GMT +2. Ahora son las 01:31:20.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi