Hola que tal, mi nombre es alexis y estoy dando mis primeros pasos en
serio en smalltalk VisualWorks.
Pero me he topado con el siguiente problema:
Desde un imputField y a medida que se ingresen los caracteres
correspondientes quiero que se actualice una lista.
Esto es lo que conseguí hasta ahora:
(estos metodos son parte de la clase applicationModel)
postBuildWith: aBuilder
| ctrlr |
ctrlr := self controllerAt: #busquedas.
ctrlr keyboardHook: [:ev :c | self keyPress: ev].
keyPress: ev
"Validate the character."
| ch ascii |
ch := ev keyValue.
"Allow tab and cr."
[ascii := ch asInteger] on: Exception
do:
[:ex |
self actualizarListaChoferes.
^ev].
((ascii == 9 or: [ascii == 13 or: [ascii == 8 or: [ascii == 32]]])
or: [ch isLetter])
ifTrue:
[self actualizarListaChoferes.
^ev]
ifFalse:
[self actualizarListaChoferes.
^nil]
actualizarListaChoferes
| subLista busquedaLocal |
busquedaLocal := self stringAtWitget: #busquedas.
busquedaLocal isEmpty
ifTrue:
[listaChoferesAux list: admTerminal choferes asList.
self cambiarChofer.
]
ifFalse:
[subLista := admTerminal choferes select:
[:chofere |
(self contieneSubString: chofere nombre asString aBuscar:
busquedaLocal)
or: [self contieneSubString: chofere apellido asString
aBuscar: busquedaLocal]].
listaChoferesAux list: subLista asList.
self cambiarChofer].
stringAtWitget: unNombre
^(builder componentAt: unNombre) widget controller view displayContents
string
Mi problema con este código, que si bien hace lo que quiero; es que la
actualización de la lista queda a un evento de teclado atrasado,
haciendo que la actualización de la lista quede también atrasada.
¿Alguien puede decirme como hacer para que los dos vayan al unísono?