Page 1 of 1

Error al borra la ultima posición de un browse

PostPosted: Wed Apr 18, 2007 4:03 pm
by Elias Torres
Antonio, se me ha dado un caso un poco extraño,te cuento...

Yo tengo este trozo de código
.....

DEFINE dialog odlg8 resource "Menu_clientes"

redefine LISTBOX oBrw;
FIELDS tabla_ventas->nombre,tabla_ventas->fecha;
HEADERS "Nombre","Fecha" ID 300 OF oDlg8

ACTIVATE dialog odlg8
.......


Esto es un simple listbox en el que cada linea es un registro de una tabla. El problema que he visto es que, supongamos que en el listbox hay 3 lineas correspondientes a 3 registros distintos de la tabla_venta. Si se borra el primero o el segundo al refrescar el grid todo es correcto. En cambio si en vez de borrar el primero o el segundo borro directamente el ultimo no refresca bien el listbox. Solo ocurre cuando en el listbox tienes mas de una linea y quieres borrar la ultima solamente... Da la sensación de que no gestiona bien el final de la tabla...nose.



Si tienes alguna solución para evitar este problema te lo agradecería. Este error no influye para nada en la ejecución de la aplicación solo que a simple vista queda mal ya que no repinta bien el listbox...


Saludos

Elías Torres.

PostPosted: Wed Apr 18, 2007 6:09 pm
by Antonio Linares
Elias,

Prueba a usar SET DELETED ON

PostPosted: Thu Apr 19, 2007 8:10 am
by Elias Torres
Antonio, ya uso el set deleted on... Creo que no es problema de mi aplicación puesto que para los demas casos borra y repinta correctamente el listbox. Pienso que pueda ser que la clase listbox no gestiona bien este tema de repintado cuando se da el caso que te he comentado. Me gustaría que lo probaras, si es posible, para que me confirmes si es algun tipo de problema de la clase o si por el contrario soy yo el que no lo está haciendo bien. Aunque como ya te he dicho para los demas casos funciona correctamente...


Saludos.

Elías Torres.

PostPosted: Thu Apr 19, 2007 9:36 am
by Antonio Linares
Elías,

Vamos a probarlo en seguida,

Has probado a hacer oBrowse:Refresh() despues de borrar el registro para que se repinte el browse ?

PostPosted: Thu Apr 19, 2007 10:32 am
by Elias Torres
Antonio, efectivamente le hago un refresh() y funciona siempre menos en el caso que te comento....


Saludos.

Elías Torres.

PostPosted: Thu Apr 19, 2007 10:59 am
by Biel EA6DD
Prueba con el siguiente código.
Code: Select all  Expand view
    IF !(cAlias)->(Eof()) //aqui el alias que uses
         oBrw:GoUp()
    ENDIF
    oBrw:Refresh()

PostPosted: Thu Apr 19, 2007 11:27 am
by Elias Torres
Gracias Biel!!!

Ahora si refresca correctamente para todos los casos.....

Saludos.

Elías Torres.

PostPosted: Thu Apr 19, 2007 11:44 am
by Antonio Linares
Gracias Biel :-)

PostPosted: Thu Apr 19, 2007 5:35 pm
by Biel EA6DD
Nada que no se puede pagar con una caña(CruzCampo). :wink: