Pulsar tecla ESC para mostrar un valor anterior en un Listbox

Estimado Amigos
Xojo

Agradecerles por la atencin al presente y por la ayuda que me puedan hacer llegar para resolver la siguiente situacin.

Tengo un Listbox, ingreso valores en sus celdas, hasta ah todo bien
Digamos que una determinada celda tiene un valor 25 pulso enter y me desplazo a otras celdas ingresando otros valores y luego regreso a la celda con valor 25, para realizar una modificacin y dgito un nuevo valor que es 10, pero seguidamente me comunican que no es el valor y debo pulsar la tecla ESC, para que quede el valor anterior, que fue 25.
Los valores mencionados arriba son como ejemplos ilustrativos, pero en la realidad se trabaja con nmeros grandes y con decimales y muchas veces no se tiene en la mente por la rapidez con que se hace y uno no recuerda el valor anterior para volver a reescribir.

Ojala tengan alguna idea para resolver el problema

He intentado con el siguiente cdigo en el evento CellKeyDown, pero no lo he conseguido

If asc(key)=27 then Me.cell(row,column)=Me.celltag(row,column) End if

Cordialmente,

Raul Juarez Pulache

Buenos dias Raul, mientras te llega una mejor solucion aqui hay una forma.

  1. Lo que necesitamos es activar un indicador que nos indique que el usuario cancelo, en el Keydown, ya sea en el tag de la celda o una propiedad del listview.

             [b]CellKeyDown:[/b]
    
     if key = chr(27) then
     	me.celltag(row,column) = "X"  //o establecer alguna propiedad propia, eje UserCancel = true  (que tendrias que crear)
     	me.setFocus
     	return true
     end if
    
  2. Luego en el CellLostFocus

     if me.celltag(row,column) = "X" then    // o en su lugar   IF me.UserCancel then
         me.cell(row,column) = me.previousCellValue
         me.celltag(row,column) = ""   // o me.usercancel = false
        return
     end if
             //aqui viene el resto de tus validaciones
    

Espero te sirva de algo

Saludos de Costa Rica

Perdon un par de aclaraciones Raul, ya hice una pequea prueba

  1. Crea dos propiedades en el listbox, una UserCancel boolean y un previousCellValue string

  2. En el cellGotFocus
    me.PreviousCellValue= me.cell(row,column) //guardo el valor actual de la celda
    me.userCancel = false

  3. En el CellKeyDown:

if key = chr(27) then
me.UserCancel = true
me.setFocus
return true
end if

  1. Luego en el CellLostFocus

if me.UserCancel then
me.cell(row,column) = me.previousCellValue
me.usercancel = false
return
end if

//aqui viene el resto de tus validaciones

Yo lo que hago es que creo clases de todos los controles de xojo aunque no tenga todavia ninguna mejora que hacerles y sigo usando solo los controles personalizados en todo, asi les voy agregando funcionalidad poco a poco

Saludos

Estimdo Jorge

Gracias por tu gran ayuda y por tu disposicin de tu tiempo, Funciona correctamente lo

Estimado Jorge
Gracias por tu gran ayuda y por tu disposicin de tu tiempo, funciona correctamente.

Muchas bendiciones,

Raul Juarez Pulache
Per

Para servirte, que dicha que funciono.

Bendiciones