Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Desde un campo hacia un TRichEdit... (https://www.clubdelphi.com/foros/showthread.php?t=79484)

TiammatMX 10-07-2012 22:13:01

Desde un campo hacia un TRichEdit...
 
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 Noteví 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 Noteví 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 Noteví 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

Cita:

Empezado por tiammat (Mensaje 437094)
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.

Código Delphi [-]
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...

Código Delphi [-]
// 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...


La franja horaria es GMT +2. Ahora son las 15:54:40.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi