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.
-
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
-
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
-
Crea dos propiedades en el listbox, una UserCancel boolean y un previousCellValue string
-
En el cellGotFocus
me.PreviousCellValue= me.cell(row,column) //guardo el valor actual de la celda
me.userCancel = false
-
En el CellKeyDown:
if key = chr(27) then
me.UserCancel = true
me.setFocus
return true
end if
- 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