PDA

Ver la Versión Completa : Orden de Tabulación Ignorado


javiermorales
09-05-2003, 11:16:34
Buenos Días, me encuentro con el siguiente problema:

Tengo un form en ejecución que tiene varios controles DBCtrlGrid, Dbgrid y DBNavigator, amén de muchos controles en cada uno de ellos.

El problema aparece cuando al modificar determinados controles DBEdit (Editar, Borrar, Insertar, etc) se deben recalcular valores (se trata de un módulo de generación de presupuesto). La actualización no es el problema, ya que se van disparando los eventos correspondientes y se realiza de manera correcta.

El problema se encuentra que tras abandonar un campo con el tabulador, debido a la realización de todos los cálculos y al refresco de los DataSet, no aparece con el foco en el campo que debiera por el orden de tabulación.

He probado con el DisableControls del Dataset, pero esto me provoca que no se refresquen en pantalla los cambios. Además como la llamada a los eventos que actualizan se produce a través del OnUpdateData y OnStateChange del DataSource, del OnValidate de determinados campos y de otra serie de eventos. Y como os podréis imaginar, el orden de ejecución no siempre es el mismo, pues no puedo determinar manualmente el campo que debe recibir el foco.

Tras este rollo. ¿podría alguien echarme una mano?.

Gracias a todos.

u1025425
09-05-2003, 14:48:53
Yo también he tenido problemas al usar eventos de los DataSource para hacer SetFocus... simplemente pasaba que durante el proceso, se hacían dos demasiado seguidos, y el foco "moría", ya que podía escribir en el control, pero no se veía el cursor, ni la selección, ni nada en definitiva...

Moraleja: No hacer setfocus en eventos de Datasource.

javiermorales
09-05-2003, 14:55:01
En realidad el tema está en que no realizo "SetFocus" el los DataSource, sino que de manera automática, supongo que debido a todas las actualizaciones de los DataSet que se disparan, el foco acaba perdiendose.

Pero de verdad que no sé que hacer.