PDA

Ver la Versión Completa : Variables en RichEdit


chona
02-09-2005, 21:57:45
Hola Amigos, tengo que hacer una aplicación con delphi 5 que me permita hacer modelos de cartas predefinidas y guardarlas. A la vez estos modelos seran usados y llenados automáticamente con datos de personas guardados en una Base de Datos (que se definirá un rango de personas al imprimir). Mi inquietud es como traer esos datos (personas) variables dentro de un RichEdit.-

Ej:

Nombre: @Nomble
Telefono: @telef

Donde todo el texto sería el modelo de la carta (archivo.rtf) definido por el usuario y @Nombre y @telef son las variables que traerían los datos de la DB

Desde ya muchísimas gracias

roman
02-09-2005, 22:27:20
Podrías usar la función StringReplace sobre el texto del RichEdit para reemplazar @nombre, @telefono, etc. por los valores reales.

// Saludos

chona
03-09-2005, 02:02:03
Gracias Roman, ahora como puedo imprimir en un rango de personas.

dec
03-09-2005, 09:23:38
Hola,


(...) ahora como puedo imprimir en un rango de personas.

A preguntas distintas Hilos distintos: será lo propio (http://www.clubdelphi.com/foros/guiaestilo.php#preguntas).

chona
06-09-2005, 13:51:11
Como puedo asignar valores al richedit sin que me cambie el formato (negrita, subrayado, tamaño de letra, etc) del .rtf
ejemplo:


richedit1.text := stringreplace(richedit1.text,'%nombre%','pepe',flag);


Esto me pasa todo el texto a un solo formato de texto, por ej. todo el texto con el mismo tramaño, tipo de letra, justificado, etc.

roman
06-09-2005, 15:10:44
Hola,

Veo que StringReplace al parecer no da el ancho. Buscando por ahí he visto esta solución:


var
Start: Integer;

begin
Start := RichEdit1.FindText(FindText, 0, Length(RichEdit1.Text), []);
if Start <> -1 then
begin
RichEdit1.SelStart := Start;
RichEdit1.SelLength := Length(FindText);
RichEdit1.SelText := ReplaceText;
end;
end;


donde FindText es el texto a buscar y ReplaceText el texto para reemplazar.

Lo que esto hace es usar el método FindText del RichEdit para encontrar el texto, lo selecciona y lo reemplaza usando SelText.

// Saludos

n3mohack
27-10-2005, 00:21:51
Amigo... si quieres asegurarte que te selecciona.. agrega la siguiente linea


begin
RichEdit1.SetFocus;
RichEdit1.SelStart := Start;

... sólo como comentario. ;)