Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-08-2010
Avatar de wenupix
wenupix wenupix is offline
Registrado
 
Registrado: ago 2007
Posts: 7
Poder: 0
wenupix Va por buen camino
Question Lazarus y Texto enriquecido (o formateado)

Hola a todos:

Estoy trabajando en un proyecto personal. En la aplicación quiero usar texto enriquecido.

El problema es que al momento de empezar, me encontré con la sorpresa que Lazarus no posee un RichText como en Delphi.

Pero buscando encontré un LCL llamado RichMemo.

Ya he logrado cargar un archivo RTF al control a través de un Stream y funciona (muestra el texto con formato, incluso caracteres japoneses).
Lo que no puedo hacer es agregar o aplicar un texto con formato.

La función para agregar o aplicar un formato a un texto es la siguiente:

Código Delphi [-]
procedure SetRangeParams(TextStart, TextLength: Integer;  ModifyMask: TTextModifyMask; const FontName: String; FontSize: Integer;  FontColor: TColor; AddFontStyle, RemoveFontStyle: TFontStyles );

Más info en: wiki.lazarus.freepascal.org/RichMemo

Existe muy poca documentación del control e info en la red, así que necesito que alguien más experimentado en Lazarus/FreePascal me ayude con este control.

Pero también estaba pensando en una alternativa, como HTML.
El problema es que no conozco un control que me permita "renderizar" código HTML. El único que me llama la atención es el control "IpHtmlPanel", pero no sé cómo usarlo.

Disculpen por la extensión del hilo, pero estoy un poco frustrado ya que tenía tantas esperanzas en desarrollar una aplicación estable y 100% funcional en Lazarus/FreePascal.

Espero su comprensión y ayuda.

Saludos.
Responder Con Cita
  #2  
Antiguo 26-08-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Has visto la pestaña SynEdit?, creo que ahí encontrarás lo que buscas.

Aquí tienes un ejemplo, usando un SynMemo y un SynHtmlSyn:


Última edición por Casimiro Notevi fecha: 26-08-2010 a las 01:16:21.
Responder Con Cita
  #3  
Antiguo 26-08-2010
Avatar de wenupix
wenupix wenupix is offline
Registrado
 
Registrado: ago 2007
Posts: 7
Poder: 0
wenupix Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Has visto la pestaña SynEdit?, creo que ahí encontrarás lo que buscas.

Aquí tienes un ejemplo, usando un SynMemo y un SynHtmlSyn:

Gracias por tu respuesta, pero no es lo que quiero.
Esos controles crean o muestran códigos fuentes.

Lo que yo quiero es un control que visualize un documento HTML.
Que actúe de igual forma como al cargar un documento RTF, pasando el contenido a través de un Stream.
La imagen está en: flic.kr/p/8vtme5
(el editor de mensajes no me deja adjuntar imagen al mensaje. No estoy permitido, dice).

O que me ayuden con esta función del control RichMemo:

Código Delphi [-]
procedure SetRangeParams(TextStart, TextLength: Integer;
   ModifyMask: TTextModifyMask; const FontName: String; 
   FontSize: Integer; FontColor: TColor; 
   AddFontStyle, RemoveFontStyle: TFontStyles);
Porque al usar esta función, lo que hace es aplicar sólo Negrita en el texto. (funciona sólo el parámetro AddFontStyle).

Saludos.
Responder Con Cita
  #4  
Antiguo 26-08-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Creo que lo que necesitas es el TSynEdit
Responder Con Cita
  #5  
Antiguo 26-08-2010
Robert01 Robert01 is offline
Miembro
 
Registrado: feb 2006
Ubicación: Córdoba, Argentina
Posts: 895
Poder: 19
Robert01 Va por buen camino
Hola

Hay un control llamado RichMemo, tal vez sea lo que necesitas.

Saludos

Discúilpame, no vi que ya habías probado con el RichMemo
Responder Con Cita
  #6  
Antiguo 26-08-2010
Avatar de rretamar
[rretamar] rretamar is offline
Miembro Premium
 
Registrado: ago 2006
Ubicación: San Francisco, Córdoba, Argentina
Posts: 1.168
Poder: 20
rretamar Va camino a la famarretamar Va camino a la fama
¿ Que es lo que hace la aplicación ? (además de mostrar texto enriquecido)
__________________
Lazarus Codetyphon : Desarrollo de aplicaciones Object Pascal, libre y multiplataforma.
Responder Con Cita
  #7  
Antiguo 27-08-2010
Avatar de wenupix
wenupix wenupix is offline
Registrado
 
Registrado: ago 2007
Posts: 7
Poder: 0
wenupix Va por buen camino
Cita:
Empezado por rretamar Ver Mensaje
¿ Que es lo que hace la aplicación ? (además de mostrar texto enriquecido)
Hola:
Bueno, la aplicación es un diccionario.
La entrada (palabra y definición) será mostrada en un RichMemo (u otro control RTF) o un visor HTML porque es la única forma de mostrar un texto con formato, como el siguiente ejemplo:

Palabra
1. sust Definición de la palabra. Véase Otra Palabra.

La entrada se encuentra en una Base de datos SQLite como "{\rtf1\ansi\ansicpg1252\deff0\..." si es RTF o "<html><body><h1>..." si es HTML.
La idea es pasar el texto en un Stream para que sea "renderizado" en el control.

Ahora estoy probando RichMemo pero no hay mucha documentación disponible y no sé cómo usar las funciones correctamente. También estoy pensando usar otro control RTF o HTML (como GeckoPort, pero necesita las librerias XULRunner, haciendo que la aplicación sea más grande y pesada).

Me explico bien?

Saludos.
Responder Con Cita
  #8  
Antiguo 27-08-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Mira si te sirve este, es freeware e incluye el código fuente.

Cita:
  • text with various fonts and colors (font styles are concentrated in TRVStyle component and can be edited at run time or at design time by special property editor),
  • hypertext,
  • pictures (bitmaps, icons, metafiles),
  • pictures from Image Lists (they also can be hypertext links),
  • any Delphi components (and they will work as usual).
  • background bitmap (it can be tiled or stretched, scrolled or not). You can hide or show vertical scrollbar, and you have full control over vertical scrolling.
  • printing (with new TRVPrint component) (limitation: inserted components are not printed in this version)
  • saving to text file or html file (limitation: images are saved as windows bitmaps so this html file can be viewed only in browsers wich support this format (MS IE, for example); but you can override virtual method for picture saving)
  • ability to get word right- or double-clicked
  • ability to remove some lines
  • ability to add new lines without reformatting of whole document (IRC-style autoscroll).
Responder Con Cita
  #9  
Antiguo 29-08-2010
Avatar de wenupix
wenupix wenupix is offline
Registrado
 
Registrado: ago 2007
Posts: 7
Poder: 0
wenupix Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Mira si te sirve este, es freeware e incluye el código fuente.
Gracias, Casimiro. Es una buena alternativa.

Pero... bueno, no me di por vencido: buscando y buscando, encontré la forma de aplicar formato a un texto en un control RichMemo.

Primero, tengo que crear una variable de tipo FontParams.
El resto es sólo aplicar.

Código Delphi [-]
var
  f: TFontParams;
...
  tam := length(utf8toAnsi(memo2.Text)); // prueba: obtener logitud (caracteres utf-8)
  richmemo1.Lines.Text:=memo2.Lines.Text;
  f.Size:=16; // tamaño fuente
  f.Color:=clGreen; // color fuente
  f.Style:=[fsBold]; // estilo de fuente
  f.Name:='Arial'; // tipografía fuente
  { SetTextAttributes(
    inicio de texto seleccionado,
    longitud de texto seleccionado,
    variable de tipo FontParams); }
    richmemo1.SetTextAttributes(richmemo1.SelStart, tam, f );
  
  contenido := TStringStream.Create('');
  try
    richmemo1.SaveRichText(contenido);
    memo1.Lines.Text:=contenido.DataString;
  finally
    contenido.Free;
  end;

Uff!, No ha sido fácil.
Sólo espero terminar mi proyecto personal y compartirlo. Estoy ansioso.

Saludos.
Responder Con Cita
  #10  
Antiguo 29-08-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Supongo que habrás visto esto y esto, por si te sirve de más ayuda.
Responder Con Cita
  #11  
Antiguo 29-08-2010
Avatar de wenupix
wenupix wenupix is offline
Registrado
 
Registrado: ago 2007
Posts: 7
Poder: 0
wenupix Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Supongo que habrás visto esto y esto, por si te sirve de más ayuda.
Si, pero hay propiedades que no son aplicables a RichMemo en Lazarus.
Bueno, igual sirve como para tener una idea.

Ahora estoy avanzando con el control RichMemo.

Gracias por su ayuda y atención.

Saludos!.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Como grabar un rtf con el texto enriquecido con DBRichEdit Martin Varios 0 30-07-2010 15:15:08
richedit formateado johurgi Varios 6 02-04-2008 19:09:27
Edit Formateado !!! vpepen Varios 2 02-11-2005 12:58:07
Indy Telnet - Texto formateado SMTZ Varios 0 01-12-2004 17:57:49
Grabar como texto enriquecido!! Salomon Varios 0 04-09-2003 11:55:07


La franja horaria es GMT +2. Ahora son las 07:57:35.


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