Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-10-2006
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Red face Imprimir texto de un TMemo

Hola a todos,

veréis, me gustaría saber cómo completar un código (puesto más abajo) que tengo que sirve para imprimir el texto de un TMemo. Respeta saltos de línea, cambios de página y fuente (bueno, debería ser así, porque tengo la impresora estropeada y no he podido probarlo). En realidad es una modificación de un código que encontré bastante más sencillo.
El código es un método que le he implementado al un nuevo componente, derivado de TMemo, y lo uso en un programa que muestra un diálogo para elegir impresora.
Me gustaría que tuviera las siguientes características:
- Que tenga ajuste de línea.
- Que se imprima en la impresora que elija (si en el ordenador hay más de una).
- Que se impriman tantas copias como se indiquen.
- Que se imprima en el tamaño de papel que se elija.

No sé si necesito algo más, pero en principio con eso me conformo.

He buscado en los foros, pero no he encontrado nada que me sirva. No me interesa usar QuickReport. Utilizo Delphi 3 Standard.

¿Alguna segerencia?

Este es el código:

Código Delphi [-]
Procedure TNewMemo.Print(Title: string);
var
Impresora: TextFile;
n: Integer;
L: string;
begin
If Lines.Count>0 then
  begin
  AssignPrn(Impresora);
  ReWrite(Impresora);
  Printer.BeginDoc;
  Printer.Title:=Title;
  with Printer.Canvas.Font do
    begin
    Name:=Font.Name;
    Size:=Font.Size;
    Style:=Font.Style;
    Color:=Font.Color;
    end;
  Printer.Canvas.Pen.Color:=Font.Color;
  Printer.Canvas.Brush.Color:=Color; //No se si poner esta línea
  L:='';
  For N:=1 to Length(Text)do
    begin
    If Text[n]=CR then
      begin
      WriteLn(Impresora,L);
      L:='';
      end else
    If Text[n]=PG then
      begin
      WriteLn(Impresora, L);
      L:='';
      Printer.NewPage;
      end else
    If Text[n]<>LF then L:=L+Text[n];
    end;
  Printer.EndDoc;
  CloseFile(Impresora);
  end;
end;

Lo que hace es ir caracter por caracter de la propiedad Text del TNewMemo. Si encuentra un CR (#13) imprime la línea, si encuentra un PG (#12, cambio de página) llama a Printer.NewPage, y si el caracter no es LF (#10) pues se lo añade a la cadena a imprimir cuando encuentre otro CR.

Gracias por vuestro interés.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Búsqueda de texto en TMemo ixMike Varios 0 09-10-2006 19:24:51
Insertar texto de un Tmemo a un TQuery y a una Tabla mrmanuel SQL 3 06-07-2005 22:32:36
Pasar texto a un TMemo CARSOFT_AR Varios 2 21-01-2005 17:58:38
Insertar texto en un TMemo Walterdf Varios 2 20-08-2004 20:04:38
Texto en un TMemo Walterdf Varios 2 26-05-2003 15:59:31


La franja horaria es GMT +2. Ahora son las 12:37:14.


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
Copyright 1996-2007 Club Delphi