Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-02-2006
CARSOFT_AR CARSOFT_AR is offline
Miembro
 
Registrado: abr 2004
Posts: 103
Poder: 21
CARSOFT_AR Va por buen camino
Salto de pagina RichEdit

Hola a todos.
Mi progrunta es referente a un RichEdit. Queria saber la forma de hacer un salto de pagina por codgio.

Muchas gracias.

Carsoft
Responder Con Cita
  #2  
Antiguo 06-02-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Buscando en Google topé con varios sitios en los que se dice que no es posible insertar, de una manera sencilla, "page breaks" en los componentes "TRichEdit". En los resultados de la búsqueda en Google pueden verse otras páginas Web que tratan sobre el tema. Yo me quedo con esta página Web, en donde además se tratan no pocas cuestiones relativas al componente "TRichEdit". Ahí mismo se propone (en inglés) alguna que otra solución para lo que te ocupa, pero, ninguna es sencilla y se trata más o menos de chapucear un poco. Échale un vistazo a ver qué te parece a ti.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 08-02-2006
CARSOFT_AR CARSOFT_AR is offline
Miembro
 
Registrado: abr 2004
Posts: 103
Poder: 21
CARSOFT_AR Va por buen camino
No pense que era tan complicado, pensaba que era algun metodo o alguna propiedad que no conocia. voy a fijarme en la web a ver que puedo encontrar. Muchas gracias.

CARsoft (Quilmes - Bs. As. - Argentina)
Responder Con Cita
  #4  
Antiguo 08-02-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
El RxRichEdit de la biblioteca RX imprime correctamente el salto de página.

// Saludos
Responder Con Cita
  #5  
Antiguo 09-03-2010
Avatar de erickahr
erickahr erickahr is offline
Miembro
 
Registrado: feb 2010
Posts: 94
Poder: 15
erickahr Va por buen camino
como usarlos saltos de pagina RxRichEdit

Cita:
Empezado por roman Ver Mensaje
El RxRichEdit de la biblioteca RX imprime correctamente el salto de página.

// Saludos
Hola!...yo estoy tratando de usar saltos de pagina desde codigo, me podrias explicdar como usarlos en RxRichEdit?... ya los he descargado e instalado. pero no se como indicar sonde quiero un salto de linea desde el codigo.

de antemano muchas gracias!
__________________
Nadie puede separar su fe de sus actos, o sus creencias de sus afanes
Responder Con Cita
  #6  
Antiguo 12-03-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
He estado estos dos días tratando de encontrar una repuesta y resultó ser más difícil de lo que pensaba

Hace tres años respondí lo que respondí porque, en efecto, el RxRichEdit es capaz de imprimir los saltos de página -que corresponden a la instrucción \page de RTF. Comprobar esto es muy sencillo. Basta, por ejemplo, abrir MS Word, insertar ahí un salto de página, copiarlo y pegarlo en un RxRichEdit. Si esto mismo lo hacen en un RichEdit normal, el salto de página no se imprime.

Pero una cosa es saber que el RxRichEdit es capaz de imprimir saltos de página y otra muy distinta es insertar dichos saltos.

En principio, la solución es fácil:

Código Delphi [-]
var
  Paragraph: TParaFormat2;

begin
  FillChar(Paragraph, SizeOf(Paragraph), 0);
  Paragraph.cbSize := SizeOf(Paragraph);
  Paragraph.dwMask := PFM_PAGEBREAKBEFORE;
  Paragraph.dwReserved := PFE_PAGEBREAKBEFORE;
  RichEdit1.Perform(EM_SETPARAFORMAT, 0, LParam(@Paragraph));
end;

Al menos así lo indica la documentación.

Pero, al parecer no tiene ningún efecto. Al menos a mi no me funciona y en varios lugares he visto mencionado que el control RichEdit nativo hace caso omiso de esta modalidad del PARAFORMAT2.

Sin embargo, el RichEdit admite una forma de insertar texto o código RTF mediante el mensaje EM_STREAMIN. Este mensaje proporciona una función callback que es la encargada de proveer de datos al control. Ya hay por aquí en el club un código que usa este mensaje, pero cuando lo probé algo no me funcionó o posiblemente no lo utilicé correctamente. El caso es que finalmente me hice de un par de funciones para solucionar esto, que traté de simplificar lo más posible.

Código Delphi [-]
// Función de retrollamada (Al González dixit)
function ReadFromStream(
  dwCookie: Longint; pbBuff: PByte;
  cb: Longint; var pcb: Longint): Longint; stdcall;
begin
  Result := 0;
  pcb := TStream(dwCookie).Read(pbBuff^, cb);
end;

procedure InsertRtf(RichEdit: TRxRichEdit; Text: String);
var
  EditStream: TEditStream;
  Stream: TStringStream;

begin
  Stream := TStringStream.Create(Text);

  try
    EditStream.dwCookie := Integer(Stream);
    EditStream.dwError := 0;
    EditStream.pfnCallback := ReadFromStream;

    RichEdit.Perform(EM_STREAMIN, SF_RTF or SFF_SELECTION, LParam(@EditStream));
  finally
    Stream.Free;
  end;
end;

Deben incluirse las unidades RichEdit y RxRichEd. La función a usar es InsertRtf, que, en principio, serviría para insertar cualquier código RTF. Para el caso de un salto de página, sería así:

Código Delphi [-]
InsertRtf(RxRichEdit1, '{\rtf1 \page}');

Con esto se tendrá el buscado salto de página en el punto donde se localice el cursor.

// Saludos
Responder Con Cita
  #7  
Antiguo 12-03-2010
Avatar de erickahr
erickahr erickahr is offline
Miembro
 
Registrado: feb 2010
Posts: 94
Poder: 15
erickahr Va por buen camino
Thumbs up Eres Grande!

Tenia mas de dos semanas "peleando" con esa situacion, y no pude resolverla... INFINITAS GRACIAS ROMAN .

Por si cabe la duda de para que quiero hacer eso:

Utilizo el RxRichEdit para imprimir un recibo de ventas en una impresora termica (como lo ha sugerido Neftalí en Este Hilo). Pero necesito imprimir dos tickets por cada venta (uno para el cliente y un comprobante que conserva la tienda), para tal efecto relleno los dos RxRichEdit con la informacion necesaria, y mando a imprimir ambos tickets. hasta ahi funciona bien, el problema surgia cuando mandaba a impresion simultaneamente desde dos equipos en red, en vez de salir P.Ej.
  • Ticket Maquina1, Comprobante Maquina 1 ---> Ticket Maquina2, Comprobante Maquina 2.
Se mezclaban las impresiones:
  • Ticket Maquina1, Ticket Maquina2 ---> Comprobante Maquina 2, Comprobante Maquina 1.
Una posible solucion era poner todos los datos en un solo RxRichEdit y enviar una sola impresion, para los dos tickets, pero no podia enviar la cuchilla para cortar entre los dos tickets.

Con tu respuesta ha quedado solucionado mi problema y espero que sirva a laguin mas con un problema similar....

OTRA VEZ GRACIAS!!!
__________________
Nadie puede separar su fe de sus actos, o sus creencias de sus afanes
Responder Con Cita
  #8  
Antiguo 12-03-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
A toro pasado

Ahora veo que es más fácil (y quizá lo sea más, no lo sé). Basta con esto para insertar el salto de página:

Código Delphi [-]
var
    Stream: TStream;

begin
    Stream := TStringStream.Create('{\rtf1\page}');
    try
        RxRichEdit1.StreamMode := RxRichEdit1.StreamMode + [smSelection];
        RxRichEdit1.Lines.LoadFromStream(Stream);
    finally
        Stream.Free;
    end;
end;

// Saludos
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
Problemas con salto de Página her27 Impresión 8 21-06-2005 15:51:33
Salto de Página en fastreport o freereport cahosoft Impresión 0 13-07-2004 19:05:26
Salto de Página con Report Builder Nuria Impresión 0 01-07-2004 10:48:02
Salto de página con QReport Will Impresión 1 22-04-2004 23:53:46
Salto de pagina con Qreport DanielAlexander Impresión 0 24-06-2003 17:05:01


La franja horaria es GMT +2. Ahora son las 15:52:02.


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