Ir al contenido


Foto

[RESUELTO] Justificar RxRichEdit


  • Por favor identifícate para responder
2 respuestas en este tema

#1 Ayla

Ayla

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 98 mensajes

Escrito 17 agosto 2010 - 04:03

Hola!

Uso un RxRichEdit para un mini-editor de texto.

Mi problema me surge a la hora de que se quiera justificar un texto. Encontré un procedimiento que me justifica perfectamente. Es el siguiente:



delphi
  1. procedure TMainForm.Justificado(Editor: TRxRichEdit; AllText: Boolean);
  2. const
  3.   TO_ADVANCEDTYPOGRAPHY = $1;
  4.   EM_SETTYPOGRAPHYOPTIONS = (WM_USER + 202);
  5.   EM_GETTYPOGRAPHYOPTIONS = (WM_USER + 203);
  6. var
  7.   ParaFormat : TParaFormat;
  8.   SelStart, SelLength : Integer;
  9. begin
  10.   ParaFormat.cbSize := SizeOf(ParaFormat);
  11.   if SendMessage(Editor.Handle, EM_SETTYPOGRAPHYOPTIONS, TO_ADVANCEDTYPOGRAPHY,
  12.                 TO_ADVANCEDTYPOGRAPHY) = 1 then begin
  13.     SelStart := Editor.SelStart;
  14.     SelLength:= Editor.SelLength;
  15.     if AllText then
  16.       Editor.SelectAll;
  17.     ParaFormat.dwMask := PFM_ALIGNMENT;
  18.     ParaFormat.wAlignment := PFA_JUSTIFY;
  19.     SendMessage(Editor.handle, EM_SETPARAFORMAT, 0, LongInt(@ParaFormat));
  20.     Editor.SelStart := SelStart;
  21.     Editor.SelLength := SelLength;
  22.   end;
  23. end;



Guardo los textos porque después necesito utilizarlos. Hasta ahí perfecto. Mi problema viene cuando abro un texto en el RxRichEdit ya guardado y justificado, no me aparece justificado. Aunque realmente si lo está porque lo abro con otro editor de textos (word) y  lo muestra bien.

Tengo claro que el componente tiene por defecto la propiedad Alignment que contiene estos tres valores: taLeftJustify, taRightJustify, taCenter. Pero no el justificado. Con lo cual habrá que cambiar la unidad 'RxRichEd' para que acepte también el justificado.



delphi
  1. TParaAlignment = (paLeftJustify, paRightJustify, paCenter, paJustify);
  2. .
  3. .
  4. .
  5. PFA_JUSTIFY  = 4;



Con esto sólo evidentemente no me funciona. He intentado encontrar donde exactamente alinea los párrafos para llamar a la función de justificado pero no lo he conseguido. He probado mil cosas sin resultado. Se les ocurre donde puedo hacerlo.

Alguna idea al respecto. Gracias.




  • 0

#2 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 18 agosto 2010 - 05:27

No uso esos componentes, pwro he cotilleado el código y he encontrado que el la versión 2.75 Original RxLibrary code ver 2.75 si tienes la opción de justificación


delphi
  1. TParaAlignment = (paLeftJustify, paRightJustify, paCenter, paJustify);


Pero no lo he instalado ni probado...


Saludos.
  • 0

#3 Ayla

Ayla

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 98 mensajes

Escrito 18 agosto 2010 - 05:32

Ya lo he solucionado. (y)

Al abrir los ficheros en el RxRichEdit, ajustaba perfectamente los párrafos a la izquierda, derecha y centrado. El justificado pasaba de él. He pensado pues antes de abrir mi fichero justifico todo el RxRichEdit y asunto solucionado. Me estaba complicando demasiado la vida igual la solución es un poco cutre pero me funciona como yo quiero ;)

Gracias escafandra, esas son las que estoy utilizando. He retomado el tema después de mucho tiempo, lo mismo viene así ya y no lo modifiqué yo como pensaba  *-), necesito una memoria nueva ya.

Un saludo.
  • 0




IP.Board spam blocked by CleanTalk.