PDA

Ver la Versión Completa : Desde un campo hacia un TRichEdit...


TiammatMX
10-07-2012, 22:13:01
Pues nada, chicos Delphineros..., que debo recuperar el contenido de un campo (el texto ya contiene formato para RTF) y mostrarlo al usuario conservando el formateo (son sobre todo colores y efectos de letra).

El caso es:
Tengo en una tabla MS-SQL Server y en alguna columna de una tabla un texto formateado para RTF, el cual debo recuperar de acuerdo a una condición hacia un TRichEdit para ser mostrado. ¿Algún codiguito, una pista, algo que me ayude a resolver el caso? Sé que deben usarse Streams para leer y guardar, pero la lectura es lo que me atora un poco...

Gracias de antemano por su comprensión y ayuda...

Casimiro Notevi
10-07-2012, 22:30:30
Si tienes guardado el documento en formato rtf entonces no tienes que hacer nada, lo muestras en un tdbrichedit.

TiammatMX
10-07-2012, 22:34:17
Pues aparentemente el problema es nulo, Casimiro..., pero como sólo puedo recuperar éste dato mediante FieldByName('campo').AsString, no me respeta el formato.

Ése es el problemilla principal... :D

TiammatMX
10-07-2012, 22:37:40
....y se me olvidó comentar (y seguro se preguntarán) que no puedo "levantarlo" mediante un TDbRichEdit, por que el campo está encriptado... :o:o:o y es necesario desencriptarlo antes de mostrarlo...

Casimiro Notevi
10-07-2012, 23:15:27
¿Has comprobado que una vez descifrado sea correcto?, en lugar de intentar presentarlo, guárdalo en disco y échale un vistazo.

TiammatMX
10-07-2012, 23:27:22
Ciertamente, fue lo primero que revisé que hiciera correctamente..., lo copié al editor de textos de Windows y se conservan perfectamente los códigos RTF.

El problema es que cuando deseo leerlo directamente del campo (previa desencriptación) no lo muestra como RTF, sino como un texto sin formato, y los códigos "puros", sin ejecutarse...

Casimiro Notevi
10-07-2012, 23:59:16
El componente tdbrichedit tiene una propiedad que se llama (creo recordar) PlainText, debes ponerlo a false.

Neftali [Germán.Estévez]
11-07-2012, 10:26:45
Ciertamente, fue lo primero que revisé que hiciera correctamente..., lo copié al editor de textos de Windows y se conservan perfectamente los códigos RTF.

El problema es que cuando deseo leerlo directamente del campo (previa desencriptación) no lo muestra como RTF, sino como un texto sin formato, y los códigos "puros", sin ejecutarse...

Si lo tienes en una cadena (una vez que ya lo has desencriptado) una forma fácil es usando Streams.


var
ss: TStringStream;
StrRichEdit:string
begin

// desencriptarlo y guardarlo en StrRichEdit
...

// Pasarlo al richedit
ss := TStringStream.Create(StrRichEdit);
Richedit1.PlainText := False;
// Cargarlo
RichEdit1.Lines.LoadFromStream(ss);
// liberar el stream (utiliza try..finally)
ss.Free;

TiammatMX
11-07-2012, 17:28:07
¡¡¡Listooooo!!! Resuelto con la mayor sencillez del mundo. Tan bloqueado estaba que no recordé cómo se levantan los datos...

// 20120710 FEOL Se "levantan" los datos de las observaciones de 8, 16 y 24 horas.
sFiltro := '(E_EVAD_MASTER_DATE = '+IntToStr(aRegistroAdverso[ADVERSO_MASTER_FECHA_MAESTRA])+') '+
'AND (E_EVAD_MASTER_TIME = '+IntToStr(aRegistroAdverso[ADVERSO_MASTER_HORA_MAESTRA])+') '+
'AND (E2_CTRL_PAC = '+QuotedStr(Trim(aRegistroAdverso[ADVERSO_MASTER_CTRL_PAC]))+')';
with TADOTable.Create(Self) do
begin
Connection := DataSys.ADOConnHipo;
TableName := 'E_EVAD_OBSERVACIONES';
TableDirect := False;
Filter := sFiltro;
Filtered := True;
Open;
if RecordCount = 1 then
begin
redtObservaciones8H.Text := Desencriptar(FieldByName('EEVAD_OBSERVACIONES_8H').AsString);
redtObservaciones16H.Text := Desencriptar(FieldByName('EEVAD_OBSERVACIONES_16H').AsString);
redtObservaciones24H.Text := Desencriptar(FieldByName('EEVAD_OBSERVACIONES_24H').AsString);
end;
Free;
end;

¡Gracias, Casimiro! Necesitaba alguien que me bombardeara con ideas para generar más ideas...