Ver Mensaje Individual
  #8  
Antiguo 10-11-2010
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Reputación: 20
rolandoj Va por buen camino
Unhappy Nuevo intento. Preguntas y retroalimentación

Hola a todos,

En este tema ya nos habíamos resignado a que no se puede; pero, en la empresa me pidieron que hiciera un nuevo intento.

He estado investigando y desarrollando código propio. Algo avanzamos; pero, seguimos estancados. Por si le sirve a alguién, o puedo aportar algo, comento mis intentos con Delphi 4:

Hay 4 versiones principales de RTF : La 1.0, la 2.0, la 3.0 y la 4.1

La implementación de TRichEdit en Delphi 4 y Delphi 2007 directamente usa solo la versión 1.0 de RTF, la cual no soporta la alineación justificada. Ahora bien, al parecer, a nivel del propio Windows, cuando están instaladas las versiones 2 o 3, una llamada a la 1, es redirigida para usar la versión 2 o 3. Alguién podría confirmarlo ?. Es una deducción mía basada en ciertos indicios; no una certeza.

Uno de ellos es el hecho de que si se envía al control TRichEdit el mensaje de alineación justificada (propio de las versiones más nuevas), Windows lo procesa aparentemente bien. Se visualiza inmediatamente la alineación y cuando se guarda, el archivo lo guarda correctamente. El mismo comportamiento correcto ocurre si se pega al control un texto que se ha justificado en Word u otro producto similar.

Sin embargo, hasta ahí llegan las buenas noticias. Si se trata de visualizar de nuevo el archivo, cargandolo al control RichEdit, se pierde la alineación justificada.

Alguién puede preguntar aquí como sé entonces que el archivo se guardó bien. La respuesta es porque si se abre desde Word o desde Open Office, ahí sí se visualiza correctamente.

Sin embargo, si se abre con WordPad, presenta el mismo problema que en Delphi : Adios a la alineación justificada.

Lo anterior indica que lo más probable es que exista un error, a nivel del propio control RichEdit de Windows, cuando se esté cargando información al control. Si es así, creo que ya no hay más nada que podamos hacer para arreglar el problema por ese lado. Alguién puede confirmar esto ?.

La solución que quedaría sería usar la versión 4.1. Hay dos diferencias importantes con las anteriores : El nombre de la librería y el nombre de la clase. Probé redefinir CreateParams para que usara la librería y la clase de la versión 4.1; pero, en algún momento posterior empiezan a aparecer errores. Supongo que hay algunas otras cosas que deben ajustarse; pero, no he encontrado nada al respecto. Alguién puede aportar algo ?
Responder Con Cita