Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Me da error en la clase pprinterinfo2 (https://www.clubdelphi.com/foros/showthread.php?t=899)

fanon 28-05-2003 15:48:58

Me da error en la clase pprinterinfo2
 
Hola de nuevo, he intentado usarlo, pero me da error en la clase pprinter info2, donde la defines o que unidad tiene que usar, gracias. Sabes algun otro metodo aparte??. salu2

__cadetill 28-05-2003 16:44:10

Hola fanon

Me ha costado entender que esto venia del otro hilo en el que te conteste, intenta poner los mesajes en el mismo hila ;)

Esto lo tienes definido en la unit WinSpool

Espero te sirva

fanon 28-05-2003 16:54:15

Hola de nuevo, muchas gracias por tu ayuda, pero necesito una cosa mas. Como le paso los parametros, porque no me aclaro como debo hacerlo, y otra cosa mas, como puedo imprimir un fichero de texto por ella??, mucha gracias, espero no agobiarte con tanta pregunta. un salu2.

__cadetill 28-05-2003 17:02:13

un ejemplo de llamada

Código:


AddImpresora( 'EPSON_GEN', 'LPT1:', 'Generic / Text Only', 'winprint' );

Para imprimir por ella, tendras que recorrer las impresoras instaladas hasta que des con ella, buscando por el nombre que le has asignado (en el ejemplo EPSON_GEN). Añade Printers en el uses de tu form

Código:

var i : integer;
begin
    i := 0;
    while (Printer.Printers[i] <> 'EPSON_GEN') and
        (i < Printer.Printers.Count - 1) do
        inc(i);
    if i < Printer.Printers.Count - 1 then
        Printer.PrinterIndex := i;
end;

Espero te sirva

fanon 28-05-2003 17:52:00

Lo siento, pero me rayo un puñao con ese codigo que me mandaste, no puedo hacerlo funcionar. Lo que tengo que hacer es mandarle al COM2 un fichero de texto. La movida que ya te explique, que tengo un visor lcd y para inicializarlo necesito crear una impresora generica/texto y seguidamente imprimir por ella, una vez hecho esto, me va de p.m, pero apago el ordenador y me toca hacerlo de nuevo. Tienes algun truco que pueda servirme??. Yo he pensado coger la impresora en tiempo de ejecucion con el GetPrinter y luego mandarle un fichero .txt cualquiera q tenga en el disco, y luego destruirlo, pero no se utilizar estos comandos, sabrias decirme algo??, stoy ya desesperado. gracias.salu2

__cadetill 28-05-2003 18:05:38

jejeje, bueno, tranquilo, busquemos otras alternativas.

Si coges el asistente para impresoras e instalas tu impresora Generic Text Only en el sistema y luego la utilizas para tus propositos te serviria? Asi no tendrias que instalarla cada vez en el sistema

Otra alternativa es la que te comentaba en el otro hilo, la del codigo de escape del visro. Lo has mirado en la documentacion?

Tambien podrias mirar de utilizar algun componente de acceso a los Com como el TCommPortDriver (es el que yo utilizo para hacer precisamente lo que tu quieres hacer, "imprimir" en un visor LCD). Hay muchos y muchos son free, mira en Torry's a ver (creo que este era free, ahora no recuerdo)

Ya nos diras alguna cosa al respecto

fanon 28-05-2003 18:32:48

Hola, eso es lo que quiero hacer, instalarla en windows, y luego solamente tener que mandarle un fichero de texto en tiempo de ejecucion, de todas maneras, me he bajado el tcomport y al instalarlo me da error en esta linea:
WriteFile( FComPortHandle, DataPtr^, nToSend, nSent, nil ); y me pone lo siguiente:
[Error] ComDrv32.pas(845): Types of actual and formal var parameters must be identical,

Sabes porque da ese error, yo trabajo en delphi 6 y el componente creo q ponia hasta el 3, sera por eso??.

Bueno, de todas maneras, dime como puedo enviarle un fichero de texto en tiempo de ejecucion y a ver si asi funciona, pk los codigo de escape que me pone en el manual, al introducirlos me salen simbolos raros, no se pk puede ser, pero pongo el codigo de inicializar le visor y no sale nada. Se los paso asi:
AssignFile(LCD,'COM2');
Rewrite(LCD);
Writeln(LCD,#27+#81+#65+' Bienvenido a...'+#13);
Writeln(LCD,#27+#81+#66+' *** Mark'+#96+'s *** '+#13);
CloseFile(LCD);
y me salen los simbolos raros. salu2.

__cadetill 28-05-2003 19:04:59

Hola

Te he enviado un correo con el componente que yo utilizo (el Delphi 6) y que trae una demo. Miratelo a ver que te parece

Espero que ahora si que si ;)

Por cierto, yo utilizo esta funcion para imprimir el los visores LCD.
Nota : los visores que yo utilizo tienen 2 lineas, por lo que un parametro de la funcion es la linea en la que quiero escribir

Parametros de la funcion:
* Puerto : TCommPortDriver -> componente de acceso a puerto serie
* Text : string --> texto que queremos que salga por el visor
* Linea : integer --> 1 o 2 (linea en la que queremos escribir)
* BorraContenido : boolean --> si true, borra TODO el contenido del visor antes de imprimir en el, sino, SOLO borra la linea en la que queremos escribir

Código:

procedure MissatgeDisplay(Puerto : TCommPortDriver; Text : string; Linea : integer;
                          BorraContenido : boolean);
var tmp : string;
begin
    // Si no está conectado, no hacemos nada
    if Puerto.Connected then
    begin
        if length(Text) > 20 then
          Text := copy(Text, 1, 20);
        if BorraContenido then
        begin
              // Borramos contenido del Visor
              tmp := chr(12);
              Puerto.SendString(tmp);
              tmp := chr(31) + chr(36) + chr(1) + chr(1) + '                    ';
              Puerto.SendString(tmp);
              tmp := chr(31) + chr(36) + chr(1) + chr(2) + '                    ';
              Puerto.SendString(tmp);
        end;
        case Linea of
            1 : begin
                      tmp := chr(31) + chr(36) + chr(1) + chr(1) + '                    ';
                      Puerto.SendString(tmp);
                      tmp := chr(31) + chr(36) + chr(1) + chr(1) + Text;
                end;
            2 : begin
                      tmp := chr(31) + chr(36) + chr(1) + chr(2) + '                    ';
                      Puerto.SendString(tmp);
                      tmp := chr(31) + chr(36) + chr(1) + chr(2) + Text;
                end;
        end;
        // Escribimos texto
        Puerto.SendString(tmp);
    end;
end;

Ejemplo de llamada

Código:

begin
    MissatgeDisplay(CommPortDriver1, 'Hola mundo!!!', 1, true);
end;



La franja horaria es GMT +2. Ahora son las 10:12:03.

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