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 con el boton imprimir del reporte en Report Builder (https://www.clubdelphi.com/foros/showthread.php?t=73043)

Diana Carolina 28-03-2011 21:44:11

Problema con el boton imprimir del reporte en Report Builder
 
Hola....

Lo que pasa es que tengo un reporte el cual debe imprimir un formulario que mustra una informacion dependiendo del tipo de persona, para ello usa subreportes. Esta hecho en delphi 6, tiene los botones de vista preliminar, imprimir, generar.

Generar...abre los qrys y me muestra una consulta en una grilla.
vista preliminar....me muestra el formulario en report builder.
Imprimir....ps imprime jejeje.

El caso es que cuando genero la informacion y le doy imprimir con el boton de el formulario imprime completo, si le doy click en vista preliminar muestra el formulario completo, PERO cuando le doy imprimir desde el boton que sale en el reporte de vista preliminar, osea el que trae predefinido el report builder NO muestra completo!!! Necesito comprender el por que de este asunto...por favor cualquier comentario podria serme de gran utilidad...

oscarac 28-03-2011 22:01:47

podrias colocar algo de codigo?
osea se entiende que cuando das click en el boton del "preliminar", no te muestra completo....

podrias ser un poco mas especifica?

no muestra completo que..... el reporte (Datos incompletos?.. el reporte no tiene mucho espacio para su visualizacion?.. etc

Diana Carolina 28-03-2011 22:40:41

imprimir y vista preliminar
 
ok...bueno anteriormente el reporte funcionaba correctamente...es decir el boton imprimir del formulario y el imprimir que esta en la vista preliminar mostraban el reporte completo, me toco meterle la validacion de qrynuevo por un cambio en el nombre de un campo en una tabla, despues de ese cambio me sucedio el problema con el imprimir de la vista preliminar...los eventos afterprint y beforeprint estan programados.

Código Delphi [-]
procedure TFrmRepFormulario.spbPreliminarClick(Sender: TObject);
begin
  inherited;
  if Qrytipopersona.AsString = 'A' then
    begin
     VarTipoIdCl := Qrytipopersonatipo.AsString;
     ppReportepers1.DeviceType := dtScreen;
     ppReportepers1.Print;
    end
  else
    begin
     VarTipoIdCl := Qrytipopersonatipo.AsString;
     ppReportepers2.DeviceType := dtScreen;
     ppReportepers2.Print;
    end;
  Qrynuevo.Close;
  if FrmPrincipal.QryperteneceFirma.AsString = '001' then
     begin
          Qrynuevo.SQL.Strings[2]:='A.ALGO,';
          Qrynuevo.SQL.Strings[11]:='AND OP.ALGO = A.ALGO';
     end
   else
      begin
          Qrynuevo.SQL.Strings[2]:='A.OTRO,';
          Qrynuevo.SQL.Strings[11]:='AND OP.OTRO = A.ALGO'
      end;

  Qrynuevo.open;
end;

procedure TFrmRepFormulario.spbImprimirClick(Sender: TObject);
var
  i : Integer;
  Pers1,Pers2 : Boolean;
begin
  inherited;
  Pers1 := False;
  Pers2 := False;
  for i := 0 to Qrypersona.RecordCount -1 do
  begin
    if Qrytipopersona.AsString = 'A' then
      begin
       VarTipoIdCl := Qrytipopersonatipo.AsString;
       ppReportepers1.DeviceType := dtPrinter;
       if Pers1 then
         begin
           ppReportepers1.ShowPrintDialog := False;
           ppReportepers1.ShowCancelDialog := False;
         end;
       ppReportepers1.Print;
       Pers1 := True;
      end
    else
      begin
       VarTipoIdCl := Qrytipopersonatipo.AsString;
       ppReportepers2.DeviceType := dtPrinter;
       if PersNat then
         begin
           ppReportepers2.ShowPrintDialog := False;
           ppReportepers2.ShowCancelDialog := False;
         end;
       ppReportepers2.Print;
       Pers2 := True;
      end;
    Qrytipopersona.FindNext;
   end;
  Qrynuevo.Close;//***Aqui agregue
if FrmPrincipal.QryperteneceFirma.AsString = '001' then
     begin
          Qrynuevo.SQL.Strings[2]:='A.ALGO,';
          Qrynuevo.SQL.Strings[11]:='AND OP.ALGO = A.ALGO'
     end
   else
      begin
          Qrynuevo.SQL.Strings[2]:='A.OTRO,';
          Qrynuevo.SQL.Strings[11]:='AND OP.OTRO = A.ALGO'
      end;

  Qrynuevo.open;  
end;

Cuando le doy click en vista preliminar muestra el fromulario con toda la informacion(Completo),,,pero al darle click en el boton de imprimir que sale en esa misma ventana, es decir la ventana con el reporte que saca el report builder...no imprime el formulario completo

oscarac 28-03-2011 23:09:03

Sigo sin entender a que le llamas "reporte completo"

si la unica variacion que has echo es esta
Código Delphi [-]
Qrynuevo.Close;//***Aqui agregue
if FrmPrincipal.QryperteneceFirma.AsString = '001' then
  begin
    Qrynuevo.SQL.Strings[2]:='A.ALGO,';
    Qrynuevo.SQL.Strings[11]:='AND OP.ALGO = A.ALGO'
  end
else
  begin
    Qrynuevo.SQL.Strings[2]:='A.OTRO,';
    Qrynuevo.SQL.Strings[11]:='AND OP.OTRO = A.ALGO'
end;

puede ser que el reporte tenga "grupos" y que por la condicion agregada no te este saliendo la informacion que tu deseas....

Diana Carolina 28-03-2011 23:18:45

Print Preview :D
 
El reporte se compone de subreportes,,,lo que me mata la cabeza es que al darle en el boton imprimir de la ventana del delphi los muestra todos (Formulario completo con toda la informacion) y cuando entro a vista preliminar y me despliega el "print preview"(Vista preliminar muestra formulario completo con toda la informacion) al mandar a imprimir por el boton que trae por defecto la ventana "Print preview" en la hoja que imprimo solo muestra el pie de pagina...(osea formulario incompleto)....

Casimiro Notevi 29-03-2011 01:12:50

Tampoco lo entiendo, ¿puedes poner un ejemplo, algún dibujo del esquema del mismo, etc.?

Diana Carolina 29-03-2011 20:03:41

Jejjej si creo que me cuesta hacerme entender :D

Esta la ventanita del delphi donde tengo las opciones de:
Generar: Al dar click aqui me muestra en una grilla informacion basica.
Vista Preliminar : me muestra un formulario con la informacion de la grilla organizada. (Este reporte lo conforman varios subreportes).
Imprimir : imprime el mismo formulario que me muestra la vista preliminar.

Cuando le doy en el boton vista preliminar y me muestra el formulario en la parte de arriba tambien hay un boton imprimir.

El imprimir que esta en la ventana imprime el formulario completo.
El imprimir que esta dentro de la vista preliminar solo imprime el pie de pagina del formulario.

oscarac 29-03-2011 20:52:16

mmm
coloca aqui el codigo que esta en el boton de imprimir (del formulario) y el codigo del boton imprimr (q esta en el previo)

OJO has uso de la Sintaxis delphi para entenderlo mejor

.... puedes hacer uso haciendo click en esta ventanita... en el icono que parece una ruina romana o griega

Al González 29-03-2011 21:35:35

Off topic
 
Cita:

Empezado por oscarac (Mensaje 394989)
[...] el icono que parece una ruina [...]

¿Tan mal se ve el icono? :eek: :D http://es.wikipedia.org/wiki/Parten%C3%B3n

Casimiro Notevi 29-03-2011 21:47:44

¿Ruina?, :D, hay que ser políticamente correctos :D, son restos arqueológicos de gran valor histórico :D

Diana Carolina 29-03-2011 21:52:13

El codigo de imprimir(de la pantalla en delphi) y de vista preliminar ya los publique.
El codigo de imprimir de el formulario que sale al darle vista preliminar no lo tengo por que este boton es el que trae por defecto el "preview" del report builder, es decir en el codigo fuente tengo el componente TppReport el cual al darle doble click me muestra la ventana de diseño del report builder, esa ventana tiene 3 pestañas (Data, Desing, Preview). Cuando le doy click en preview sale lo que debe salir cuando le doy vista preliminar en tiempo de ejecucion, en la parte superior izquierda hay un boton con el icono de imprimir llamado "Print".
En tiempo de ejecucion primero genero los datos, se muestran en la grilla, tengo la opcion de imprimirlos dede alli o primero entrar a vista preliminar para ver como queda el reporte, si lo imprimo sin entrar a vista preliminar imprime toda la informacion pero si entro a vista preliminar y desde alli le doy al boton "Print" que esta en la parte superior izquierda solo imprime el pie de pagina.

Yo se que es complicado entenderme pero ya no se que hacer para exponer mi problema!!! :(

Diana Carolina 30-03-2011 00:00:11

Codigo!!!
 
Ok...aqui esta el codigo de los eventos implicados, espero con esto me puedan ayudar...es urgente!!!!


procedure TFrmRepFormulario.spbGenerarClick(Sender: TObject);
begin
inherited;

QryTipoPersona.ParamByName('tipo').AsString := QryTipoTipo.AsString;
QryTipoPersona.ParamByName('nit1').AsString := QryNit1Nit.AsString;
QryTipoPersona.ParamByName('nit2').AsString := QryNit2Nit.AsString;
if (gGeMotor = ORACLE ) then
QryTipoPersona.SQL.Strings[6]:=' '
else ///si es SQL_SERVER u otro
QryTipoPersona.SQL.Strings[6]:=' ';

QryTipoPersona.Close;
QryTipoPersona.Open;
///aqui agregue validacion//
Qrynuevo.close;
if FrmPrincipal.QryperteneceFirma.AsString = '001' then
begin
Qrynuevo.SQL.Strings[2]:='A.ALGO,';
Qrynuevo.SQL.Strings[11]:='AND OP.ALGO = A.ALGO';
end
else
begin
Qrynuevo.SQL.Strings[2]:='A.OTRO,';
Qrynuevo.SQL.Strings[11]:='AND OP.OTRO = A.ALGO'
end;

Qrynuevo.open;
end;

procedure TFrmRepFormulario.spbPreliminarClick(Sender: TObject);
begin
inherited;
if Qrytipopersona.AsString = 'A' then
begin
VarTipoIdCl := Qrytipopersonatipo.AsString;
ppReportepers1.DeviceType := dtScreen;
ppReportepers1.Print;
end
else
begin
VarTipoIdCl := Qrytipopersonatipo.AsString;
ppReportepers2.DeviceType := dtScreen;
ppReportepers2.Print;
end;
///Aqui agregue validacion///
Qrynuevo.Close;
if FrmPrincipal.QryperteneceFirma.AsString = '001' then
begin
Qrynuevo.SQL.Strings[2]:='A.ALGO,';
Qrynuevo.SQL.Strings[11]:='AND OP.ALGO = A.ALGO';
end
else
begin
Qrynuevo.SQL.Strings[2]:='A.OTRO,';
Qrynuevo.SQL.Strings[11]:='AND OP.OTRO = A.ALGO'
end;

Qrynuevo.open;
end;

procedure TFrmRepFormulario.spbImprimirClick(Sender: TObject);
var
i : Integer;
Pers1,Pers2 : Boolean;
begin
inherited;
Pers1 := False;
Pers2 := False;
for i := 0 to Qrypersona.RecordCount -1 do
begin
if Qrytipopersona.AsString = 'A' then
begin
VarTipoIdCl := Qrytipopersonatipo.AsString;
ppReportepers1.DeviceType := dtPrinter;
if Pers1 then
begin
ppReportepers1.ShowPrintDialog := False;
ppReportepers1.ShowCancelDialog := False;
end;
ppReportepers1.Print;
Pers1 := True;
end
else
begin
VarTipoIdCl := Qrytipopersonatipo.AsString;
ppReportepers2.DeviceType := dtPrinter;
if PersNat then
begin
ppReportepers2.ShowPrintDialog := False;
ppReportepers2.ShowCancelDialog := False;
end;
ppReportepers2.Print;
Pers2 := True;
end;
Qrytipopersona.FindNext;
end;
///Agregue validacion///
Qrynuevo.Close;
if FrmPrincipal.QryperteneceFirma.AsString = '001' then
begin
Qrynuevo.SQL.Strings[2]:='A.ALGO,';
Qrynuevo.SQL.Strings[11]:='AND OP.ALGO = A.ALGO'
end
else
begin
Qrynuevo.SQL.Strings[2]:='A.OTRO,';
Qrynuevo.SQL.Strings[11]:='AND OP.OTRO = A.ALGO'
end;

Qrynuevo.open;
end;

procedure TFrmRepFormulario.ppReportepers1PreviewFormCreate(
Sender: TObject);
begin
inherited;
ppReportepers1.PreviewForm.WindowState := wsMaximized;
end;

procedure TFrmRepFormulario.ppReportepers1BeforePrint(
Sender: TObject);
begin
inherited;

if QryTipoPersona1.RecordCount = 0 then
exit;

Qry1.ParamByName('Tipo').AsString := QryTipoPersona1Tipo.AsString;
Qry1.ParamByName('Nit').AsString := QryTipoPersona1Nit.AsString;
Qry1.Open;

Qry2.ParamByName('Tipo').AsString := QryTipoPersona1Tipo.AsString;
Qry2.ParamByName('Nit').AsString := QryTipoPersona1Nit.AsString;
Qry2.Open;

Qrynuevo.ParamByName('TipId').AsString := QryTipoPersona1Tipo.AsString;
Qrynuevo.ParamByName('NitCliente').AsString := QryTipoPersona1Nit.AsString;
Qrynuevo.Open;

Qry4.ParamByName('Tipo').AsString := QryTipoPersona1Tipo.AsString;
Qry4.ParamByName('Nit').AsString := QryTipoPersona1Nit.AsString;
Qry4.Open;

end;

procedure TFrmRepFormulario.ppReportepers2PreviewFormCreate(
Sender: TObject);
begin
inherited;
ppReportepers2.PreviewForm.WindowState := wsMaximized;
end;

procedure TFrmRepFormulario.ppReportepers2BeforePrint(
Sender: TObject);
begin
inherited;

if QryTipoPersona2.RecordCount = 0 then
exit;

Qry1.ParamByName('Tipo').AsString := QryTipoPersona2Tipo.AsString;
Qry1.ParamByName('Nit').AsString := QryTipoPersona2Nit.AsString;
Qry1.Open;

Qry2.ParamByName('Tipo').AsString := QryTipoPersona2Tipo.AsString;
Qry2.ParamByName('Nit').AsString := QryTipoPersona2Nit.AsString;
Qry2.Open;

Qrynuevo.ParamByName('TipId').AsString := QryTipoPersona2Tipo.AsString;
Qrynuevo.ParamByName('NitCliente').AsString := QryTipoPersona2Nit.AsString;
Qrynuevo.Open;

Qry4.ParamByName('Tipo').AsString := QryTipoPersona2Tipo.AsString;
Qry4.ParamByName('Nit').AsString := QryTipoPersona2Nit.AsString;
Qry4.Open;

end;

procedure TFrmRepFormulario.ppReportepers2AfterPrint(
Sender: TObject);
begin
inherited;

ppReportepers2.ShowPrintDialog := true;
ppReportepers2.ShowCancelDialog := True;

Qry1.Close;
Qry2.Close;
Qrynuevo.Close;
Qry4.close;

end;

procedure TFrmRepFormulario.ppReportepers1AfterPrint(
Sender: TObject);
begin
inherited;
ppReportepers1.ShowPrintDialog := true;
ppReportepers1.ShowCancelDialog := True;

Qry1.Close;
Qry2.Close;
Qrynuevo.Close;
Qry4.close;

end;

Casimiro Notevi 30-03-2011 00:09:02

Amiga, ya leíste nuestra guía de estilo, gracias por tu colaboración.
Y cómo poner etiquetas al código:

Diana Carolina 30-03-2011 00:20:17

Lo intentare!

Diana Carolina 30-03-2011 00:23:44

Código Delphi [-]
procedure TFrmRepFormulario.spbGenerarClick(Sender: TObject);
begin
  inherited;

   QryTipoPersona.ParamByName('tipo').AsString := QryTipoTipo.AsString;
   QryTipoPersona.ParamByName('nit1').AsString := QryNit1Nit.AsString;
   QryTipoPersona.ParamByName('nit2').AsString := QryNit2Nit.AsString;
   if (gGeMotor = ORACLE ) then
      QryTipoPersona.SQL.Strings[6]:=' '
   else ///si es SQL_SERVER u otro
     QryTipoPersona.SQL.Strings[6]:=' ';

   QryTipoPersona.Close;
   QryTipoPersona.Open;
///aqui agregue validacion//   
   Qrynuevo.close;
  if FrmPrincipal.QryperteneceFirma.AsString = '001' then
     begin
          Qrynuevo.SQL.Strings[2]:='A.ALGO,';
          Qrynuevo.SQL.Strings[11]:='AND OP.ALGO = A.ALGO';
     end
   else
      begin
          Qrynuevo.SQL.Strings[2]:='A.OTRO,';
          Qrynuevo.SQL.Strings[11]:='AND OP.OTRO = A.ALGO'
      end;

  Qrynuevo.open;
end;

procedure TFrmRepFormulario.spbPreliminarClick(Sender: TObject);
begin
  inherited;
  if Qrytipopersona.AsString = 'A' then
    begin
     VarTipoIdCl := Qrytipopersonatipo.AsString;
     ppReportepers1.DeviceType := dtScreen;
     ppReportepers1.Print;
    end
  else
    begin
     VarTipoIdCl := Qrytipopersonatipo.AsString;
     ppReportepers2.DeviceType := dtScreen;
     ppReportepers2.Print;
    end;
///Aqui agregue validacion///
    Qrynuevo.Close;
  if FrmPrincipal.QryperteneceFirma.AsString = '001' then
     begin
          Qrynuevo.SQL.Strings[2]:='A.ALGO,';
          Qrynuevo.SQL.Strings[11]:='AND OP.ALGO = A.ALGO';
     end
   else
      begin
          Qrynuevo.SQL.Strings[2]:='A.OTRO,';
          Qrynuevo.SQL.Strings[11]:='AND OP.OTRO = A.ALGO'
      end;

  Qrynuevo.open;
end;

procedure TFrmRepFormulario.spbImprimirClick(Sender: TObject);
var
  i : Integer;
  Pers1,Pers2 : Boolean;
begin
  inherited;
  Pers1 := False;
  Pers2 := False;
  for i := 0 to Qrypersona.RecordCount -1 do
  begin
    if Qrytipopersona.AsString = 'A' then
      begin
       VarTipoIdCl := Qrytipopersonatipo.AsString;
       ppReportepers1.DeviceType := dtPrinter;
       if Pers1 then
         begin
           ppReportepers1.ShowPrintDialog := False;
           ppReportepers1.ShowCancelDialog := False;
         end;
       ppReportepers1.Print;
       Pers1 := True;
      end
    else
      begin
       VarTipoIdCl := Qrytipopersonatipo.AsString;
       ppReportepers2.DeviceType := dtPrinter;
       if PersNat then
         begin
           ppReportepers2.ShowPrintDialog := False;
           ppReportepers2.ShowCancelDialog := False;
         end;
       ppReportepers2.Print;
       Pers2 := True;
      end;
    Qrytipopersona.FindNext;
   end;
///Agregue validacion/// 
 Qrynuevo.Close;
if FrmPrincipal.QryperteneceFirma.AsString = '001' then
     begin
          Qrynuevo.SQL.Strings[2]:='A.ALGO,';
          Qrynuevo.SQL.Strings[11]:='AND OP.ALGO = A.ALGO'
     end
   else
      begin
          Qrynuevo.SQL.Strings[2]:='A.OTRO,';
          Qrynuevo.SQL.Strings[11]:='AND OP.OTRO = A.ALGO'
      end;

  Qrynuevo.open;  
end;

procedure TFrmRepFormulario.ppReportepers1PreviewFormCreate(
  Sender: TObject);
begin
  inherited;
  ppReportepers1.PreviewForm.WindowState := wsMaximized;
end;

procedure TFrmRepFormulario.ppReportepers1BeforePrint(
  Sender: TObject);
begin
  inherited;

  if QryTipoPersona1.RecordCount = 0 then
     exit;

  Qry1.ParamByName('Tipo').AsString := QryTipoPersona1Tipo.AsString;
  Qry1.ParamByName('Nit').AsString := QryTipoPersona1Nit.AsString;
  Qry1.Open;

  Qry2.ParamByName('Tipo').AsString := QryTipoPersona1Tipo.AsString;
  Qry2.ParamByName('Nit').AsString := QryTipoPersona1Nit.AsString;
  Qry2.Open;

  Qrynuevo.ParamByName('TipId').AsString := QryTipoPersona1Tipo.AsString;
  Qrynuevo.ParamByName('NitCliente').AsString := QryTipoPersona1Nit.AsString;
  Qrynuevo.Open;

  Qry4.ParamByName('Tipo').AsString := QryTipoPersona1Tipo.AsString;
  Qry4.ParamByName('Nit').AsString := QryTipoPersona1Nit.AsString;
  Qry4.Open;

end;

procedure TFrmRepFormulario.ppReportepers2PreviewFormCreate(
  Sender: TObject);
begin
  inherited;
  ppReportepers2.PreviewForm.WindowState := wsMaximized;
end;

procedure TFrmRepFormulario.ppReportepers2BeforePrint(
  Sender: TObject);
begin
  inherited;

  if QryTipoPersona2.RecordCount = 0 then
     exit;

  Qry1.ParamByName('Tipo').AsString := QryTipoPersona2Tipo.AsString;
  Qry1.ParamByName('Nit').AsString := QryTipoPersona2Nit.AsString;
  Qry1.Open;

  Qry2.ParamByName('Tipo').AsString := QryTipoPersona2Tipo.AsString;
  Qry2.ParamByName('Nit').AsString := QryTipoPersona2Nit.AsString;
  Qry2.Open;

  Qrynuevo.ParamByName('TipId').AsString := QryTipoPersona2Tipo.AsString;
  Qrynuevo.ParamByName('NitCliente').AsString := QryTipoPersona2Nit.AsString;
  Qrynuevo.Open;

  Qry4.ParamByName('Tipo').AsString := QryTipoPersona2Tipo.AsString;
  Qry4.ParamByName('Nit').AsString := QryTipoPersona2Nit.AsString;
  Qry4.Open;

end;

procedure TFrmRepFormulario.ppReportepers2AfterPrint(
  Sender: TObject);
begin
  inherited;

   ppReportepers2.ShowPrintDialog := true;
   ppReportepers2.ShowCancelDialog := True;

  Qry1.Close;
  Qry2.Close;
  Qrynuevo.Close;
  Qry4.close;
 
end;

procedure TFrmRepFormulario.ppReportepers1AfterPrint(
  Sender: TObject);
begin
  inherited;
   ppReportepers1.ShowPrintDialog := true;
   ppReportepers1.ShowCancelDialog := True;

  Qry1.Close;
  Qry2.Close;
  Qrynuevo.Close;
  Qry4.close;

end;

Diana Carolina 31-03-2011 00:15:21

Caso Extraño!
 
Ok...les cuento que el problema de imprimir parece ser solo en mi computador, un compañero compilo el mismo fuente en su equipo y no existe ningun problema al imprimir por cualquier lado,,,lo curioso es que me paso el ejecutable que funciona en su equipo y al abrirlo en el mio no funciona,,,es el mismo codigo fuente y cuando lo compilo en mi equipo queda con el problema,,,si lo paso a otro equipo no funciona, el de mi compañero si....Quiza alguno de ustedes pueda explicarme el por que de esto...Gracias :p

Casimiro Notevi 31-03-2011 01:07:41

¿Puede ser configuración de la impresora?, ¿los drivers?, también hay un pequeño truco cuando ocurren "cosas raras", borra el fichero reportbuilder.ini que está en c:\windows

oscarac 31-03-2011 03:13:42

Cita:

Empezado por Diana Carolina (Mensaje 395168)
Ok...les cuento que el problema de imprimir parece ser solo en mi computador, un compañero compilo el mismo fuente en su equipo y no existe ningun problema al imprimir por cualquier lado,,,lo curioso es que me paso el ejecutable que funciona en su equipo y al abrirlo en el mio no funciona,,,es el mismo codigo fuente y cuando lo compilo en mi equipo queda con el problema,,,si lo paso a otro equipo no funciona, el de mi compañero si....Quiza alguno de ustedes pueda explicarme el por que de esto...Gracias :p


Ghost in the Machine.....:cool::cool:

Diana Carolina 31-03-2011 19:22:17

Resuelto!
 
Muchas Gracias efectivamente parece ser problema de la configuracion de la impresora....:p


La franja horaria es GMT +2. Ahora son las 06:52:26.

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