Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Abrir la impresora y seleccionar lo que quiero imprimir (https://www.clubdelphi.com/foros/showthread.php?t=80090)

ingabraham 04-06-2012 02:45:24

Abrir la impresora y seleccionar lo que quiero imprimir
 
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:
Código Delphi [-]
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:
Código Delphi [-]
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 de la guía de estilos, 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

PrintControl no me imprime el tamaño normal
 
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:

Código Delphi [-]

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

Cita:

Empezado por ingabraham (Mensaje 441616)
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

abir la impresora y seleccionar lo que quiero imprimir
 
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 Noteví 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 Noteví 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

Cita:

Empezado por ingabraham (Mensaje 441634)
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.

Código Delphi [-]
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

Cita:

Empezado por AzidRain (Mensaje 441848)
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 Noteví 05-09-2012 07:10:51

Cierro este hilo, puesto que has abierto otro para lo mismo.


La franja horaria es GMT +2. Ahora son las 17:56:14.

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