PDA

Ver la Versión Completa : Abrir la impresora y seleccionar lo que quiero imprimir


ingabraham
04-06-2012, 02:45:24
hola
tengo un form k y en el tengo un groupbox que
tiene como especie de una tarjeta puntos(como las de exito) configurado:
el group contiene

1. imagen (imagen fondo carnet)
2. dos label con ced y nombre usuario
3. otra imagen con el logo que puede variar

ya. quiero imprimirla , como hago?

ecfisa
04-06-2012, 04:40:19
Hola ingabraham.

Proba de este modo:

uses Printers;

procedure PrintControl(aPrn: TPrinter; aWinControl: TWinControl; const aPosX, aPosY: Integer);
var
Bmp: TBitmap;
hdcSrc: HDC;
begin
Bmp:= TBitmap.Create;
try
Bmp.Width:= aWinControl.Width;
Bmp.Height:= aWinControl.Height;
hdcSrc:= GetWindowDC(aWinControl.Handle);
try
BitBlt(Bmp.Canvas.handle, 0, 0, Bmp.Width, Bmp.Height, hdcSrc, 0, 0, SRCCOPY)
finally
ReleaseDC(aWinControl.Handle, hdcSrc)
end;
aPrn.Canvas.Draw(aPosX, aPosY, Bmp);
finally
Bmp.Free
end
end;


Llamada ejemplo:

procedure TForm1.Button1Click(Sender: TObject);
var
Printer: TPrinter;
begin
Printer:= TPrinter.Create;
try
Printer.BeginDoc;
//...
PrintControl(Printer, GroupBox1, 100, 50);
//...
Printer.EndDoc;
finally
Printer.Free;
end;
end;


Saludos.

ecfisa
16-06-2012, 22:53:03
Hola ingabraham.

A una semana de planteada tu duda, sería interesante que nos comentaras si la propuesta te fué útil y de no ser así, que compartas la solución que pudiste encontrar.

Esta sugerencia, basada en el punto 13 (http://www.clubdelphi.com/foros/guiaestilo.php#concluye) de la guía de estilos (http://www.clubdelphi.com/foros/guiaestilo.php), es a fín de facilitar soluciónes a quién pudiera tener un problema similar.

Saludos y gracias por tu colaboracion :)

ingabraham
03-09-2012, 19:32:43
utilizo delphi 7


quiero que me imprima mi tamaño normal de una imagen, el cual contiene unos label y otras imagenes que pueden ser variables.

quiero que me lo imprima tal y cual como me lo visualiza, porque me lo esta imprimiendo pequeñito.

mi siguiente codigo es:



uses Printers;

procedure PrintControl(aPrn: TPrinter; aWinControl: TWinControl; const aPosX, aPosY: Integer);
var
Bmp: TBitmap;
hdcSrc: HDC;
begin
Bmp:= TBitmap.Create;
try
Bmp.Width:= aWinControl.Width;
Bmp.Height:= aWinControl.Height;
hdcSrc:= GetWindowDC(aWinControl.Handle);
try
BitBlt(Bmp.Canvas.handle, 0, 0, Bmp.Width, Bmp.Height, hdcSrc, 0, 0, SRCCOPY)
finally
ReleaseDC(aWinControl.Handle, hdcSrc)
end;
aPrn.Canvas.Draw(aPosX, aPosY, Bmp);
finally
Bmp.Free
end
end;


procedure TTarjetaPuntos.SpeedButton11Click(Sender: TObject);
var
Printer: TPrinter;
begin

SpeedButton11.Visible := false;


Printer:= TPrinter.Create;
try
Printer.BeginDoc;
//...
PrintControl(Printer, GroupBoxTarjeta1, 100, 50);
//...
Printer.EndDoc;
finally
Printer.Free;
end;

SpeedButton11.Visible := true;

end;

ingabraham
03-09-2012, 19:40:57
bueno te comento en la impresion me sale bien, pero es muy pequeñito, como dos veces el tamaño de una simcard.

quiero que me lo imprima tal y cual como me lo visualiza, porque me lo esta imprimiendo pequeñito.

ingabraham
03-09-2012, 20:58:29
hellp ayuda, k estoy necesitando esta solucion urgente, no se si configurando el ancho y alto de esta imagen
para que me la imprima normal y no en miniatura.,!!!:confused:

ingabraham
03-09-2012, 21:43:31
ok. me toca ampliar el .GroupBoxTarjeta1 manualmente y todos sus componentes. de lo cual me despixelaria la imagen
alguien me puede dar alguna idea es que me parece que esta forma no seria la correcta:cool:

ingabraham
03-09-2012, 23:45:23
ok. me toca ampliar el .GroupBoxTarjeta1 manualmente y todos sus componentes. de lo cual me despixelaria la imagen
alguien me puede dar alguna idea es que me parece que esta forma no seria la correcta:cool:


:mad::confused::( nada en una impresora hp me sale bien asi pero en epson stylus me sale pequeña nuevamente!!!

ayudenme me ha fregado la vida todo el dia y nada.!!
v:-)v

ingabraham
04-09-2012, 00:21:13
delhi 7.

tengo un form que contiene 2 groupbox que contienen imagenes y label.


deseo que al darle clic a un boton
me abra la impresora para configurarla, y luego imprimir el groupbox que desee.

como lo hago???^\||/

Casimiro Notevi
04-09-2012, 00:31:44
Por favor, no abras distintos hilos para preguntar realmente lo mismo en todos. Gracias.
Sigue con este.

ingabraham
04-09-2012, 03:06:18
ese hilo es diferente!!!
Necesito como abrir la configuración de la impresora, para imprimir uno de 2 groupbox, agradesco que lea determinadamente la pregunta para poderla eliminar. gracias y no lo haga por ver mi desespero en este hilo.!!:eek:

Casimiro Notevi
04-09-2012, 03:22:20
Es que en la configuración de una impresora no puedes elegir imprimir un groupbox u otro.
En la configuración puedes cambiar el tamaño de página, la resolución, número de copias, etc.
Pero lo que quieres hacer tendrás que conseguirlo antes mediante código.
Y si no es así, entonces es que no he entendido nada de lo que estás haciendo :confused:

ecfisa
04-09-2012, 05:24:39
deseo que al darle clic a un boton me abra la impresora para configurarla, y luego imprimir el groupbox que desee.

como lo hago???

Hola.


procedure TForm1.Button1Click(Sender: TObject);
var
prn: TPrinter;
begin
if PrinterSetupDialog1.Execute then
begin
prn:= TPrinter.Create;
try
prn.BeginDoc;
PrintControl(prn, GroupBox1, 100, 50);
prn.EndDoc;
finally
prn.Free;
end;
end;
end;


Saludos.

AzidRain
05-09-2012, 00:01:46
De entrada la resolución de la impresora nada tiene que ver con la de la pantalla por lo que en pantalla se ve "grande" en una impresora puede verse "pequeñito" y viceversa. Y variará de impresora a impresora y de pantalla a pantalla. Solución: Hay que hacer muchos cálculos para cambiar la resolución de la impresora para que se adapte lo mejor posible a la de pantalla de manera que puedas ver la imagen en grande. Esto te funcionará para cualquier impresora, otra opción es jugar con las opciones de la impresora (vía código) para que te ajuste el tamaño (zoom) de lo que mandes a imprimir, pero dependerás de cada impresora ya que no todas lo hacen de la misma forma.

¿No sería más fácil plantear el problema y necesidad para que se te puedan dar otras opciones que te sean más sencillas de implementar? A muchos no se nos hace muy lógico el querer imprimir un form o un control tal cual, por algo lo estas tratando de hacer.

ingabraham
05-09-2012, 01:10:00
De entrada la resolución de la impresora nada tiene que ver con la de la pantalla por lo que en pantalla se ve "grande" en una impresora puede verse "pequeñito" y viceversa. Y variará de impresora a impresora y de pantalla a pantalla. Solución: Hay que hacer muchos cálculos para cambiar la resolución de la impresora para que se adapte lo mejor posible a la de pantalla de manera que puedas ver la imagen en grande. Esto te funcionará para cualquier impresora, otra opción es jugar con las opciones de la impresora (vía código) para que te ajuste el tamaño (zoom) de lo que mandes a imprimir, pero dependerás de cada impresora ya que no todas lo hacen de la misma forma.

¿No sería más fácil plantear el problema y necesidad para que se te puedan dar otras opciones que te sean más sencillas de implementar? A muchos no se nos hace muy lógico el querer imprimir un form o un control tal cual, por algo lo estas tratando de hacer.

ESTE es mi problema.

tengo una impresora hp deskjet 100(normal) imprimo un carnet q tengo en delphi 7 con una imagen de fondo y label. me sale bien
pero al momento de imprimirla en una epson stilus foto t50.(carnetizadora)

quien me puede ayudar con la configuracion de esta, lo que trato de imprimir son unos carnet pero en esta ultima me sale la impresion muy pequeña y con otro codigo que tengo x alli que utilizo el Self.Print; me sale muy grande

ayudenme!!

Casimiro Notevi
05-09-2012, 07:10:51
Cierro este hilo, puesto que has abierto otro para lo mismo.