SoloCodigo
Programación General => C/C++ => C++ Builder => Mensaje iniciado por: Ithilien en Jueves 5 de Julio de 2007, 22:53
-
Hola, he estado buscando en la ayuda de c++ builder y no veo la manera clara de imprimir un fichero bmp. Mi idea es cargarlo en un TGraphic::Bitmap *bm y luego en un Tprinter *p dibujarlo en su Canvas p->Canvas->Draw(x,y,bm). El caso es que pensé que si quería que se imprimiera en la parte superior izquierda del folio, x e y debían ser 0, pero me da error ( access violation ).
Alguna solución? Muchas gracias!
-
echale un vistazo al siguiente codigo
considera de que existe en la forma un objeto de los que mandan a mostrar el cuadro de dialogo para mandar a imprimir de la pestaña dialogs
int Y = 10;
int pag;
bool enc;
enc = true;
Graphics::TBitmap *mapa = new Graphics::TBitmap();
try
{
mapa->LoadFromFile("Imagenes\\logop.bmp");
mapa->Transparent = false;
mapa->TransparentColor = mapa->Canvas->Pixels[50][50];
mapa->TransparentMode = tmAuto;
}catch(...)
{
enc = false;
}
if (impri->Execute())
{
Printer()->Title = "Listado";
Printer()->Canvas->Font = fuente->Font;
Printer()->BeginDoc();
for (int n=0; n<impri->Copies; ++n)
{ //encabezado
pag = 1;
if (enc)
{
Printer()->Canvas->Draw(10,Y,mapa);
}
Y += Printer()->Canvas->TextHeight("XXX");
Printer()->Canvas->TextOutA(Printer()->PageWidth-150,Y,
"Pagina "+AnsiString(pag));
Y += mapa->Height+
Printer()->Canvas->TextHeight("XXX"));
Printer()->Canvas->TextOutA(10,Y,"Wepssoft Software");
Y += Printer()->Canvas->TextHeight("XXX");
Printer()->Canvas->TextOutA(10,Y,"Cyber Ventas");
Y += Printer()->Canvas->TextHeight("XXX");
Printer()->Canvas->TextOutA(10,Y,"Compañia: FC Ciber");
Y += Printer()->Canvas->TextHeight("XXX");
Y += Printer()->Canvas->TextHeight("XXX");
Y += Printer()->Canvas->TextHeight("XXX");
//texto que quieras imprimir
Y += Printer()->Canvas->TextHeight("XXX");
Printer()->Canvas->MoveTo(0,Y);
Printer()->Canvas->LineTo(Printer()->PageWidth,Y);
Y += Printer()->Canvas->TextHeight("XXX");
Y += Printer()->Canvas->TextHeight("XXX");
if (Y >Printer()->PageHeight)
{
Printer()->NewPage();
Y = 10;
++pag;
if (enc)
{
Printer()->Canvas->Draw(10,Y,mapa);
}
Y += Printer()->Canvas->TextHeight("XXX");
Printer()->Canvas->TextOutA(Printer()->
PageWidth-150,Y,"Pagina"
+AnsiString(pag));
Y += (mapa->Height+Printer()->
Canvas->TextHeight("XXX"));
Printer()->Canvas->TextOutA(10,Y,
"Wepssoft Software");
Y += Printer()->Canvas->TextHeight("XXX");
Printer()->Canvas->TextOutA(10,Y,
"Ventas");
Y += Printer()->Canvas->TextHeight("XXX");
Printer()->Canvas->TextOutA(10,Y,
"Compañia: Ciber");
Y += Printer()->Canvas->TextHeight("XXX");
Y += Printer()->Canvas->TextHeight("XXX");
Y += Printer()->Canvas->TextHeight("XXX");
Printer()->Canvas->TextOutA(10,Y,"Codigo");
Printer()->Canvas->TextOutA(600,Y,"Producto");
Printer()->Canvas->TextOutA(1200,Y,"Grupo");
Printer()->Canvas->TextOutA(1800,Y,"Cant");
Printer()->Canvas->TextOutA(2100,Y,"Precio");
Y += Printer()->Canvas->TextHeight("XXX");
Printer()->Canvas->MoveTo(0,Y);
Printer()->Canvas->LineTo(Printer()->PageWidth,
Y);
Y += Printer()->Canvas->TextHeight("XXX");
}
}
Printer()->EndDoc();
}
delete mapa;