txBrowse SaveState RestoreState

txBrowse SaveState RestoreState

Postby Biel EA6DD » Thu Aug 28, 2008 12:45 pm

La clase txBrowse en los ultimos tiempos se ha visto mejorada y ampliada en muchisimos aspectos.

Entre los cambios veo que en el metodo SaveState, se ha añadido el nombre de columna(oCol:cHeader). Supongo que esto nos puede permitir cambiar el titulo de la columna dinamicamente (aunque desconozco el metodo, si es que esta implementado).

Esto, me genera dos problemas:
Primero incompatibilidad con las cadenas que se tenian guardadas en versiones previas, ya que ese dato no se grababa y al recuperar con RestoreState me coloca en el cHeader el valor 'H','S' dependiendo de oCol:lHide.

Segundo, hasta la fecha lo guardaba en una entrada de un fichero INI, al guardarse los titulos, cuando hay uno que es multinilena, salta de linea, luego al hacer el Get del ini solo me recupera hasta el primer CRLF.

Como puedo solucionar ambos dos problemas con el menor impacto posible, tanto de programación como para el usuario final.
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
User avatar
Biel EA6DD
 
Posts: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca

Postby Biel EA6DD » Sat Aug 30, 2008 7:03 pm

Bueno ante la falta de sugerencias, he obatado por crear una clase nueva heredada de txBrowse, adaptando los metodos SaveState y RestoresState.

De esta manera, soluciono el problema, y ademas no tengo que modificar la clase txBrowse.

No se si será la mejor, pero funciona.No puedo usar comandos del tipo @ <nRow>, <nCol> XBROWSE ..., pero la verdad es que no suelo usarlos.
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
User avatar
Biel EA6DD
 
Posts: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca

Postby Antonio Linares » Sun Aug 31, 2008 6:33 pm

Biel,

Que cambios has hecho en SaveState() y RestoresState() ? gracias! :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42071
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Biel EA6DD » Mon Sep 01, 2008 8:43 am

Antonio,
el objetivo principal era mantener compatibilidad con versiones antiguas de xBrowse. Para ello era suficiente quitar del proceso de grabacion y recuperacion cHeader.

Pero para no alejarme mucho de la version actual, lo que he hecho, es cambiar la posicion de cHeader y pasarlo al final(que entiendo hubiera sido lo correcto, en lugar de insertarlo) , asi consigo que se respete el orden del formato antiguo. Y en la recuperación evaluar si realmente existe informacion grabada para la cabecera.

Cabe tener en cuenta que al añadiir cHeader en el sting de grabacion, este puede contener la cadena ":" o ";" usados como separador, con lo que la recuperacion de datos puede ser erronea.

Para poder seguir usando fichheros INI, reemplazo los CRLF que encuentro cHeader por una combinacion de caracteres($&) suficientemente estraña, y en recuperación ejecuto el proceso inverso.

Si realemente es util, y queremos grabar el titulo de la columna, creo que deberia revisarse el tema de ";:".
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
User avatar
Biel EA6DD
 
Posts: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca

Postby Antonio Linares » Mon Sep 01, 2008 10:07 am

Biel,

Gracias por la explicación :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42071
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 62 guests