Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2012-06

Impresion (matricial) en red con win7

12 messages · 4 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Jorge Martinez Saez

Hola a todos:

Mi problema es el siguiente:

- Imprimo (assign file ......rewrite.....writeln.....etc) sin problemas sobre una impresora matriz de puntos USB (okidata 320) conectada a mi portatil (jorge-martinez) usando : assignFile
(archivo,'\\jorge-martinez\okidata'); (tambien est� compartida en la red, todos tenemos win7).

- Los dem�s equipo imprimen sobre la impresora sin problemas desde otros programas, por ejemplo word o excel, pero el problema se me presenta al tratar de imprimir desde mi aplicaci�n, lazarus me da el siguiente errror ""ACCESS DENIED" ( lo que habla por si solo) pero no se de que forma dar permisos para que los demas usuarios puedan imprimir sobre esta impresora.

- Mi aplicaci�n se encuentra en una carpeta compartida sobre la cual TODOS pueden escribir y borrar archivos.

- He buscado en la red y la mayoria dice NO tener problemas siempre y cuando la impresora se encuentre compartida, y otros dicen que para acceder a una impresora de este tipo (USB) deber�a usar TPrinter........

Quisiera si alguien me puede tirar un cable, quizas ya estoy un tanto mareado con tantas pruebas....

Gracias de antemano.

Jorge Martinez Saez 9-8817012 Linux User #446007 *Por favor, evite enviarme documentos adjuntos en formato Word o PowerPoint. Lea **www.gnu.org/philosophy/no-word-attachments.es.html*<http://www.gnu.org/philosophy/no-word-attachments.es.html> ------------ pr�xima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20120618/d9481f27/attachment.html>

Reply by email

Claudio Romero
to Jorge Martinez Saez

Hola yo para las matriciales, uso TPrinter.
Sigue el ejemplo de Lazarus\components\printers\samples\rawmode

Imprimiendo asi en las matriciales me funcion� (La matricial debe estar instalada en Windows)
Windows 32 bits
Linux GTK2 32 bits (cups)
Linux GTK2 64 bits (cups)

En linux QT4 RawMode no est� soportado por las librer�as de QT (sale Postscript) asi que tuve que grabar a un archivo de texto y luego usar lpr (cups) para imprimir.

El 18/06/12, Jorge Martinez Saez <jorge.martinez.saez en gmail.com> escribi�:

Show quoted text 39 lines
Hola a todos: Mi problema es el siguiente: - Imprimo (assign file ......rewrite.....writeln.....etc) sin problemas sobre una impresora matriz de puntos USB (okidata 320) conectada a mi portatil (jorge-martinez) usando : assignFile (archivo,'\\jorge-martinez\okidata'); (tambien est� compartida en la red, todos tenemos win7). - Los dem�s equipo imprimen sobre la impresora sin problemas desde otros programas, por ejemplo word o excel, pero el problema se me presenta al tratar de imprimir desde mi aplicaci�n, lazarus me da el siguiente errror ""ACCESS DENIED" ( lo que habla por si solo) pero no se de que forma dar permisos para que los demas usuarios puedan imprimir sobre esta impresora. - Mi aplicaci�n se encuentra en una carpeta compartida sobre la cual TODOS pueden escribir y borrar archivos. - He buscado en la red y la mayoria dice NO tener problemas siempre y cuando la impresora se encuentre compartida, y otros dicen que para acceder a una impresora de este tipo (USB) deber�a usar TPrinter........ Quisiera si alguien me puede tirar un cable, quizas ya estoy un tanto mareado con tantas pruebas.... Gracias de antemano. -- Jorge Martinez Saez 9-8817012 Linux User #446007 *Por favor, evite enviarme documentos adjuntos en formato Word o PowerPoint. Lea **www.gnu.org/philosophy/no-word-attachments.es.html*<http://www.gnu.org/philosophy/no-word-attachments.es.html>

Reply by email

Jorge M. Martinez Saez
to Claudio Romero

El 19-06-2012 10:57, Claudio Romero escribi�:

Show quoted text 61 lines
Hola yo para las matriciales, uso TPrinter. Sigue el ejemplo de Lazarus\components\printers\samples\rawmode Imprimiendo asi en las matriciales me funcion� (La matricial debe estar instalada en Windows) Windows 32 bits Linux GTK2 32 bits (cups) Linux GTK2 64 bits (cups) En linux QT4 RawMode no est� soportado por las librer�as de QT (sale Postscript) asi que tuve que grabar a un archivo de texto y luego usar lpr (cups) para imprimir. El 18/06/12, Jorge Martinez Saez<jorge.martinez.saez en gmail.com> escribi�: > Hola a todos: > > Mi problema es el siguiente: > > - Imprimo (assign file ......rewrite.....writeln.....etc) sin problemas > sobre una impresora matriz de puntos USB (okidata 320) conectada a mi > portatil (jorge-martinez) usando : assignFile > (archivo,'\\jorge-martinez\okidata'); (tambien est� compartida en la > red, todos tenemos win7). > > - Los dem�s equipo imprimen sobre la impresora sin problemas desde otros > programas, por ejemplo word o excel, pero el problema se me presenta al > tratar de imprimir desde mi aplicaci�n, lazarus me da el siguiente > errror ""ACCESS DENIED" ( lo que habla por si solo) pero no se de que > forma dar permisos para que los demas usuarios puedan imprimir sobre > esta impresora. > > - Mi aplicaci�n se encuentra en una carpeta compartida sobre la cual > TODOS pueden escribir y borrar archivos. > > - He buscado en la red y la mayoria dice NO tener problemas siempre y > cuando la impresora se encuentre compartida, y otros dicen que para > acceder a una impresora de este tipo (USB) deber�a usar TPrinter........ > > Quisiera si alguien me puede tirar un cable, quizas ya estoy un tanto > mareado con tantas pruebas.... > > Gracias de antemano. > > -- > Jorge Martinez Saez > 9-8817012 > Linux User #446007 > > *Por favor, evite enviarme documentos adjuntos en formato Word o > PowerPoint. > Lea > **www.gnu.org/philosophy/no-word-attachments.es.html*<http://www.gnu.org/philosophy/no-word-attachments.es.html> > _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

Ok. prob� el ejemplo y funciona sin problemas....

Ahora quiero evitar que el usuario seleccione la impresora, pero creo haber visto algo de eso por ahi........

Gracias Claudio.

Jorge Martinez Saez 9-8817012

Reply by email

Claudio Romero
to Jorge M. Martinez Saez

Para evitar que elija impresora, sacas el di�logo de selecci�n de impresoras (PrintDialog1.Execute)

Y antes le agregas
Printer.PrinterIndex:=0;

Siendo cero la impresora predeterminada de Windows, y n�meros mayores las otras impresoras. Pero hay un problema con esto, si cambias la impresora predeterminada, la n�mero cero, pasa a ser otra impresora. Lo cual a veces trae confusi�n.

Saludos

El 19/06/12, Jorge M. Martinez Saez <jorge.martinez.saez en gmail.com> escribi�:

Show quoted text 81 lines
El 19-06-2012 10:57, Claudio Romero escribi�: > Hola yo para las matriciales, uso TPrinter. > Sigue el ejemplo de Lazarus\components\printers\samples\rawmode > > > Imprimiendo asi en las matriciales me funcion� (La matricial debe > estar instalada en Windows) > Windows 32 bits > Linux GTK2 32 bits (cups) > Linux GTK2 64 bits (cups) > > En linux QT4 RawMode no est� soportado por las librer�as de QT (sale > Postscript) > asi que tuve que grabar a un archivo de texto y luego usar lpr (cups) > para imprimir. > > > > El 18/06/12, Jorge Martinez Saez<jorge.martinez.saez en gmail.com> > escribi�: >> Hola a todos: >> >> Mi problema es el siguiente: >> >> - Imprimo (assign file ......rewrite.....writeln.....etc) sin problemas >> sobre una impresora matriz de puntos USB (okidata 320) conectada a mi >> portatil (jorge-martinez) usando : assignFile >> (archivo,'\\jorge-martinez\okidata'); (tambien est� compartida en la >> red, todos tenemos win7). >> >> - Los dem�s equipo imprimen sobre la impresora sin problemas desde otros >> programas, por ejemplo word o excel, pero el problema se me presenta al >> tratar de imprimir desde mi aplicaci�n, lazarus me da el siguiente >> errror ""ACCESS DENIED" ( lo que habla por si solo) pero no se de que >> forma dar permisos para que los demas usuarios puedan imprimir sobre >> esta impresora. >> >> - Mi aplicaci�n se encuentra en una carpeta compartida sobre la cual >> TODOS pueden escribir y borrar archivos. >> >> - He buscado en la red y la mayoria dice NO tener problemas siempre y >> cuando la impresora se encuentre compartida, y otros dicen que para >> acceder a una impresora de este tipo (USB) deber�a usar TPrinter........ >> >> Quisiera si alguien me puede tirar un cable, quizas ya estoy un tanto >> mareado con tantas pruebas.... >> >> Gracias de antemano. >> >> -- >> Jorge Martinez Saez >> 9-8817012 >> Linux User #446007 >> >> *Por favor, evite enviarme documentos adjuntos en formato Word o >> PowerPoint. >> Lea >> **www.gnu.org/philosophy/no-word-attachments.es.html*<http://www.gnu.org/philosophy/no-word-attachments.es.html> >> > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es > Ok. prob� el ejemplo y funciona sin problemas.... Ahora quiero evitar que el usuario seleccione la impresora, pero creo haber visto algo de eso por ahi........ Gracias Claudio. -- Jorge Martinez Saez 9-8817012 _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

Reply by email

Jorge M. Martinez Saez
to Claudio Romero

El 19-06-2012 16:29, Claudio Romero escribi�:

Show quoted text 100 lines
Para evitar que elija impresora, sacas el di�logo de selecci�n de impresoras (PrintDialog1.Execute) Y antes le agregas Printer.PrinterIndex:=0; Siendo cero la impresora predeterminada de Windows, y n�meros mayores las otras impresoras. Pero hay un problema con esto, si cambias la impresora predeterminada, la n�mero cero, pasa a ser otra impresora. Lo cual a veces trae confusi�n. Saludos El 19/06/12, Jorge M. Martinez Saez<jorge.martinez.saez en gmail.com> escribi�: > El 19-06-2012 10:57, Claudio Romero escribi�: >> Hola yo para las matriciales, uso TPrinter. >> Sigue el ejemplo de Lazarus\components\printers\samples\rawmode >> >> >> Imprimiendo asi en las matriciales me funcion� (La matricial debe >> estar instalada en Windows) >> Windows 32 bits >> Linux GTK2 32 bits (cups) >> Linux GTK2 64 bits (cups) >> >> En linux QT4 RawMode no est� soportado por las librer�as de QT (sale >> Postscript) >> asi que tuve que grabar a un archivo de texto y luego usar lpr (cups) >> para imprimir. >> >> >> >> El 18/06/12, Jorge Martinez Saez<jorge.martinez.saez en gmail.com> >> escribi�: >>> Hola a todos: >>> >>> Mi problema es el siguiente: >>> >>> - Imprimo (assign file ......rewrite.....writeln.....etc) sin problemas >>> sobre una impresora matriz de puntos USB (okidata 320) conectada a mi >>> portatil (jorge-martinez) usando : assignFile >>> (archivo,'\\jorge-martinez\okidata'); (tambien est� compartida en la >>> red, todos tenemos win7). >>> >>> - Los dem�s equipo imprimen sobre la impresora sin problemas desde otros >>> programas, por ejemplo word o excel, pero el problema se me presenta al >>> tratar de imprimir desde mi aplicaci�n, lazarus me da el siguiente >>> errror ""ACCESS DENIED" ( lo que habla por si solo) pero no se de que >>> forma dar permisos para que los demas usuarios puedan imprimir sobre >>> esta impresora. >>> >>> - Mi aplicaci�n se encuentra en una carpeta compartida sobre la cual >>> TODOS pueden escribir y borrar archivos. >>> >>> - He buscado en la red y la mayoria dice NO tener problemas siempre y >>> cuando la impresora se encuentre compartida, y otros dicen que para >>> acceder a una impresora de este tipo (USB) deber�a usar TPrinter........ >>> >>> Quisiera si alguien me puede tirar un cable, quizas ya estoy un tanto >>> mareado con tantas pruebas.... >>> >>> Gracias de antemano. >>> >>> -- >>> Jorge Martinez Saez >>> 9-8817012 >>> Linux User #446007 >>> >>> *Por favor, evite enviarme documentos adjuntos en formato Word o >>> PowerPoint. >>> Lea >>> **www.gnu.org/philosophy/no-word-attachments.es.html*<http://www.gnu.org/philosophy/no-word-attachments.es.html> >>> >> _______________________________________________ >> Lazarus-es mailing list >> Lazarus-es en lists.lazarus.freepascal.org >> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es >> > Ok. prob� el ejemplo y funciona sin problemas.... > > Ahora quiero evitar que el usuario seleccione la impresora, pero creo > haber visto algo de eso por ahi........ > > Gracias Claudio. > > -- > Jorge Martinez Saez > 9-8817012 > > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es > _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

Ok. estoy revisando las respuestas que habias dado a *Paola Bruccoleri* en la lista.

Como en mi caso hay varios usuarios que usaran la impresora, me gustaria recorrer los nombres de las impresoras instaladas y comparar con 'okidata' y entonces asignarla. Estoy buscando como hacerlo....

Claudio, agradezco enormemente tu ayuda. ;-)

Saludos

Jorge Martinez Saez 9-8817012

Reply by email

Claudio Romero
to Jorge M. Martinez Saez

Para buscar el n�mero de impresora por el nombre de la misma. No he probado mucho esto, pero parece funcionar.

Agregar Button1, Edit1 y Memo1.
En Edit1 pones el nombre de la impresora a buscar

/---
unit busca_impre_;
{$mode objfpc}{$H+}
interface

uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,

  StdCtrls, printers;
type
  { TForm1 }
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
	function BuscarImpresora(nombre:string):integer;
  private
    { private declarations }
  public
    { public declarations }
  end;
var
  Form1: TForm1;
implementation
{ TForm1 }
//Para buscar el n�mero de impresora por el nombre de la misma.
function TForm1.BuscarImpresora(nombre:string):integer;
var i:integer;
begin
	Result:=-1;
	for i:=0 to Printer.Printers.Count-1 do
    	if UpperCase(nombre)=UpperCase(Printer.Printers.Strings[i]) then begin
			Result:=i; exit;
		end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
	memo1.Lines.Clear;
	for i:=0 to Printer.Printers.Count-1 do
		memo1.Lines.add(IntToStr(i)+' - '+ Printer.Printers.Strings[i]);
	Printer.PrinterIndex:=BuscarImpresora(Edit1.Text);
	ShowMessage(IntToStr(Printer.PrinterIndex));
end;
initialization
  {$I busca_impre_.lrs}
end.
// saludos

Reply by email

Claudio Romero
to Claudio Romero

Reenvio con una correcci�n Button1Click.

procedure TForm1.Button1Click(Sender: TObject);
var i,NroImpresora:integer;
begin
	memo1.Lines.Clear;
	for i:=0 to Printer.Printers.Count-1 do
		memo1.Lines.add(IntToStr(i)+' - '+ Printer.Printers.Strings[i]);
	NroImpresora:=BuscarImpresora(Edit1.Text);
	if NroImpresora=-1 then ShowMessage('Impresora no encontrada')
	else ShowMessage('Nro de impresora '+IntToStr(NroImpresora));
end;

Reply by email

Jorge M. Martinez Saez
to Claudio Romero

El 19-06-2012 19:27, Claudio Romero escribi�:

Show quoted text 18 lines
Reenvio con una correcci�n Button1Click. procedure TForm1.Button1Click(Sender: TObject); var i,NroImpresora:integer; begin memo1.Lines.Clear; for i:=0 to Printer.Printers.Count-1 do memo1.Lines.add(IntToStr(i)+' - '+ Printer.Printers.Strings[i]); NroImpresora:=BuscarImpresora(Edit1.Text); if NroImpresora=-1 then ShowMessage('Impresora no encontrada') else ShowMessage('Nro de impresora '+IntToStr(NroImpresora)); end; _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

Ok. modificar� la rutina de impresion basandome en tus ejemplos.... creo que usar:

for numero:= 0 to Printer.Printers.count -1 do
if leftstr((Printer.Printers.Strings[numero]),17)= '\\jorge-martinez\' then .....

para usar la impresora que quiero basta, ya que solo comparto la oki. (pero eso me obligar� a instalar mi propia impresora como para yo usarla a traves de la red no es asi? mmmm bueno en este caso ser�a el mal menor -:) ) .

Nuevamente agradezco tu gran ayuda Claudio.

Atte.

Jorge Martinez Saez 9-8817012

Reply by email

Claudio Romero
to Jorge M. Martinez Saez

Printer.Printers.Strings[numero] usa el nombre de la impresora que se ve en el panel de control de Windows. Para usarla la impresora debe estar instalada en windows (en Raw Mode o con cualquier driver de epson.) De todas maneras imprime en RawMode, sin usar drivers, solo caracteres de control.

Saludos

Reply by email

Claudio Romero
to Claudio Romero

Otra opci�n para analizar ser�a

si \\jorge-martinez\okidata es una impresora de red matricial, que no esta instalada en el windows local, puedes usar writeln para grabar lo que vas a imprimir en un archivo de texto. Y luego ejecutar un bat externo a lazarus o el mismo CMD.

copy /b archivo_a_imprimir.txt \\jorge-martinez\okidata

Aunque es una opci�n mas. Esto no usar�a TPrinter, ni los nombres de impresoras. Pero solo funciona en matriciales (ya que envio texto puro a imprimir)

En linux con QT4 yo hago algo parecido ya que Qt no soporta raw mode printing.

Depende de como te sea mas c�modo para ti.

Saludos.

El d�a 20 de junio de 2012 13:58, Claudio Romero <clauslack en gmail.com> escribi�:

Show quoted text 7 lines
Printer.Printers.Strings[numero] usa el nombre de la impresora que se ve en el panel de control de Windows. Para usarla la impresora debe estar instalada en windows (en Raw Mode o con cualquier driver de epson.) De todas maneras imprime en RawMode, sin usar drivers, solo caracteres de control. Saludos

Reply by email

Jorge M. Martinez Saez
to Claudio Romero

El 20-06-2012 13:11, Claudio Romero escribi�:

Show quoted text 32 lines
Otra opci�n para analizar ser�a si \\jorge-martinez\okidata es una impresora de red matricial, que no esta instalada en el windows local, puedes usar writeln para grabar lo que vas a imprimir en un archivo de texto. Y luego ejecutar un bat externo a lazarus o el mismo CMD. copy /b archivo_a_imprimir.txt \\jorge-martinez\okidata Aunque es una opci�n mas. Esto no usar�a TPrinter, ni los nombres de impresoras. Pero solo funciona en matriciales (ya que envio texto puro a imprimir) En linux con QT4 yo hago algo parecido ya que Qt no soporta raw mode printing. Depende de como te sea mas c�modo para ti. Saludos. El d�a 20 de junio de 2012 13:58, Claudio Romero<clauslack en gmail.com> escribi�: > Printer.Printers.Strings[numero] usa el nombre de la impresora que se > ve en el panel de control de Windows. Para usarla la impresora debe > estar instalada en windows (en Raw Mode o con cualquier driver de > epson.) De todas maneras imprime en RawMode, sin usar drivers, solo > caracteres de control. > > Saludos _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

Muy buenas tus ideas.... al final he probado de varias formas y me quedo momentaneamente con lo siguiente:

for numero:= 0 to Printer.Printers.count -1 do
        begin
             if rightstr(Printer.Printers.Strings[numero],21)= 'OKIDATA
ML320_1 TURBO' then // aqui ya no importa si es local o en red ya que
solo hay una con ese nombre en toda la red...;)
                Begin
                  Printer.PrinterIndex:=numero;
                  Printer.Rawmode:= True;
                  Printer.BeginDoc;
                end;
        end;

Claudio: Te pasastes, gracias, gracias.

Saludos

Jorge Martinez Saez 9-8817012

Reply by email

Paola Bruccoleri
to Jorge M. Martinez Saez

El 20/06/2012 05:26 p.m., Jorge M. Martinez Saez escribi�:

Show quoted text 55 lines
El 20-06-2012 13:11, Claudio Romero escribi�: > Otra opci�n para analizar ser�a > > si \\jorge-martinez\okidata es una impresora de red matricial, que no > esta instalada en el windows local, puedes usar writeln para grabar lo > que vas a imprimir en un archivo de texto. Y luego ejecutar un bat > externo a lazarus o el mismo CMD. > > copy /b archivo_a_imprimir.txt \\jorge-martinez\okidata > > Aunque es una opci�n mas. Esto no usar�a TPrinter, ni los nombres de > impresoras. Pero solo funciona en matriciales (ya que envio texto puro > a imprimir) > > En linux con QT4 yo hago algo parecido ya que Qt no soporta raw mode > printing. > > Depende de como te sea mas c�modo para ti. > > Saludos. > > El d�a 20 de junio de 2012 13:58, Claudio > Romero<clauslack en gmail.com> escribi�: >> Printer.Printers.Strings[numero] usa el nombre de la impresora que se >> ve en el panel de control de Windows. Para usarla la impresora debe >> estar instalada en windows (en Raw Mode o con cualquier driver de >> epson.) De todas maneras imprime en RawMode, sin usar drivers, solo >> caracteres de control. >> >> Saludos > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es > Muy buenas tus ideas.... al final he probado de varias formas y me quedo momentaneamente con lo siguiente: for numero:= 0 to Printer.Printers.count -1 do begin if rightstr(Printer.Printers.Strings[numero],21)= 'OKIDATA ML320_1 TURBO' then // aqui ya no importa si es local o en red ya que solo hay una con ese nombre en toda la red...;) Begin Printer.PrinterIndex:=numero; Printer.Rawmode:= True; Printer.BeginDoc; end; end; Claudio: Te pasastes, gracias, gracias. Saludos

y yo me he guardado todos estos mails! xq justamente lo necesito para el pos...
byeeeeeeeeee

Reply by email