Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

configurar hoja de impresion

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: configurar hoja de impresion Responder citando

hoa.
requiero hacer la impresion y para ello utilizo la opcion de impresion
Código:

TPrinter *impresion = Printer();
impresion->BeginDoc();
impresion->Canvas->TextOut(30,0,"cualquier cosa “);
impresion->EndDoc();


pero el mismo utiliza el tamaño de hoja establecido por la impresoera ya prederminada, se puede configurar el tamaño de impresion con codigo para que me imprima lo que deseo (que sobrepasa los limites de la hoja predeterminada), o sino por lo menos cambiar la posicion de la hoja de vertical a horizontal , se puede por fa y solo para la impresion de mi hoja luego logicamente volver a la impresora a su configuracion original
adios gracias
Volver arriba
Mensaje    Asunto: Cambia de metodo!! Responder citando

te recomiendo utilices el Quick Report o sino, aca te pongo el codigo de una funcion que me paso cesar alguna vez que necesitaba ayuda!


Código:

//-----------------------------------------------------------------------------
////////////Impresion EN MODO TEXTO PARA EVITAR EL SPOOLER DE WINDOW
//          PARA IMPRESORAS DE MATRIZ TAMBIEN SIRVE PARA IMPRESORA FISCAL
//          O MINIPRINTER
// LINEAS    ->lo que se desea imprimir, ARREGLO DE LINEAS.
// INICIO    -> HABILITAR TIPO LETRAS EN MATRIZ, "\xF"-CONDENSADO "\xE"-EXPAND
// FIN       -> DESHABILITAR TIPO LETRAS "\X12" IMPRESION NORMAL
// EJECT     -> EXPULSAR HOJA O PONER MAS LINEAS "\xC"-EXPL "\N\N\N"-MAS LINEAS
// IMPRESORA -> A DONDE? LOCAL "EPSON" O RED "\\EPSON" // BAJO WINDOS.
// TITULO    -> TITULO DE IMPRESION.
//
// POR EJEMPLO
//    TStringList* MyList = new TStringList();
//    MyList->AddStrings(this->Memo1->Lines);
//    ImprimirLineas(MyList,"\xF","\x12","\xC","HP DeskJet 420","PRUEBA");
//----------
// ANEXO ("\x0d\x0a" Fin y nueva linea)
////////////////////////////////////////////////////////////////////////////
void __fastcall ImprimirLineas( TStringList *LINEAS,char *INICIO,char *FIN,
                                char *EJECT,AnsiString IMPRESORA,
                                AnsiString TITULO){
    struct {
        char *DocName;
        char *OutputFile;
        char *DataType;
    } DocInfo;
    DocInfo.DocName     = TITULO.c_str();
    DocInfo.OutputFile  = 0;
    DocInfo.DataType    = "RAW";
    // Obtener un handle de impresora
    HANDLE hPrinter;
    if (! OpenPrinter(IMPRESORA.c_str(), &hPrinter, 0))
        throw Exception("Operación inválida con la impresora");
    try {
        // Informar al spooler del comienzo de impresión
        if (StartDocPrinter(hPrinter, 1, LPBYTE(&DocInfo)) == 0)
            throw Exception("Operación inválida con la impresora");
        try {
            // Iniciar una página
            if (! StartPagePrinter(hPrinter))
                throw Exception("Operación inválida con la impresora");
            try {
                // Enviar los datos directamente
///////////////////////
                  // PREPARAR LA ULTIMA LINEA
                   for(int i=0;i < LINEAS->Count;i++){
                                        // INICIO CADENA           \R\N      FIN
                       AnsiString vLinea=INICIO+LINEAS->Strings[i]+FIN+"\x0d\x0a";
                       char* lineToPrint;
                       DWORD numBytesWritten;
                       lineToPrint=vLinea.c_str(); // convertir linea a cadena
                       WritePrinter(hPrinter,(LPVOID)lineToPrint,(DWORD) strlen(lineToPrint), &numBytesWritten);
                 }
                 char* lineToPrint;
                 DWORD numBytesWritten;
                 lineToPrint=EJECT; // si lleva se expulas "\xC"
                 WritePrinter(hPrinter,(LPVOID)lineToPrint,(DWORD) strlen(lineToPrint), &numBytesWritten);

////////////////////
            }
            __finally {
                // Terminar la página
                if (! EndPagePrinter(hPrinter))
                    throw Exception("Operación inválida con la impresora");
            }
        }
        __finally {
            // Informar al spooler del fin de impresión
            if (! EndDocPrinter(hPrinter))
            throw Exception("Operación inválida con la impresora");
        }
    }
    __finally {
        // Devolver el handle de impresora
        ClosePrinter(hPrinter);
    }
}


saludos.
_________________
Alberto Lavariega Arista
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.