Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   TToolButon vs TBitBtn en TToolBar (https://www.clubdelphi.com/foros/showthread.php?t=42719)

dtomeysoto 20-04-2007 17:58:17

TToolButon vs TBitBtn en TToolBar
 
Amigos, estoy desarrollando una aplicación en Delphi 7.

En la forma principal tengo un componente de tipo TTolBar, he puesto dos TDateTimePicker (dtpInicio, dtpFinal), en la propiedad Kind de cada uno de ellos he seleccionado dtkDate, adicionalmente he puesto 2 TToolButton.

En evento OnClick de uno de los ToolButton lo que hago es hacer una consulta a una BD tomando como criterio los registros que estan en un rango de fecha y le paso como parámetro a esta consulta dtpInicio.Date y dtpFinal.Date.

Hasta aquí espero que me hayan entendido, adjunto 2 imágenes pequeñitas de la aplicación.

Todo funciona bien si yo selecciono las fechas desplegando la lista de los controles dtpInicio y dtpFinal pero si tecleo por ejemplo 1 en el día de dtpInicio y hago clic en el ToolButton es como si el foco está todavía en el control dtpInicio y este no ha cambiado la nueva fecha.

Después de romperme la cabeza me di cuenta que si substituyo el ToolButton por un TBitBtn esto no sucede y funciona correctamente.

¿Podría alguien decirme por qué sucede esto?

basti 20-04-2007 18:35:59

Hay componentes que aceptan el foco y otros que no. Los que no aceptan el foco, no lo quitan del control que lo tiene en ese momento. Para saber cuales aceptan el foco, puedes ver en las propiedades del componente si existe la propiedad TabStop, si existe es que el control acepta el foco.

dtomeysoto 20-04-2007 18:51:36

Cita:

Empezado por basti
Hay componentes que aceptan el foco y otros que no. Los que no aceptan el foco, no lo quitan del control que lo tiene en ese momento. Para saber cuales aceptan el foco, puedes ver en las propiedades del componente si existe la propiedad TabStop, si existe es que el control acepta el foco.

He estado leyendo la ayuda de Delphi y los controles que heredan de TWinControl son los que pueden recibir el foco. En el caso de TToolButton no hereda de TWinControl y por ende cuando pincho en un botón de este tipo el TDateTimePicker se queda en edición porque no ha perdido el foco. Por lo que he tenido que darle el foco a otro control para que se actualice la fecha.

Pero me gustaría mejor decirle al TDateTimePicker algo para que se actualice como cuando se hace desplegando la lista. He probado con refres, repaint pero nada.


La franja horaria es GMT +2. Ahora son las 04:29:59.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi