In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Evento OnChange de Ttabs

Foro de Xailer profesional en español
Responder
Avatar de Usuario
bingen
Mensajes: 565
Registrado: Lun Jul 07, 2014 8:17 pm
Ubicación: Bilbao
Contactar:

Evento OnChange de Ttabs

Mensaje por bingen »

Buenas xTeam, tengo una consulta.

Por que si tTabCtrl no llama a OnChange cada vez que se añade un Item el nuevo control moderno tTabs si lo hace?

He cambiado este control en multitud de sitios y funciona perfectamente con mas vistosidad, pero de repente veo que la aplicación va más lenta ya que cada OnChange contiene cambios en las Select de MariaDB y reejecución de las mismas sin ninguna necesidad.

De todas maneras aprovecho para preguntar si no hay manera de saber que todo el form ha sido correctamente terminado de pintar? Algo así como un tForm:lReady para empezar a hacer cosas que mientras se está pintando no son necesarias como por ejemplo evaluar estos OnChange. He probado con oForm:OnPainted pero se lanza x veces incluso antes de estar al parecer totalmente pintado.

Gracias
BiSoft Desarrollo de software profesional
http://www.bisoft.es
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9253
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Evento OnChange de Ttabs

Mensaje por ignacio »

Por que si tTabCtrl no llama a OnChange cada vez que se añade un Item el nuevo control moderno tTabs si lo hace?
No debería. Estoy probando el ejemplo samples\tabs\tab1 y sólo dispara una vez el evento OnChange que es cuando se pone ::oTabs1:nIndex := 1 en la línea 143. Si quitas esa línea no se dispara ninguna vez. No obstante veo que se dispara aunque nIndex no haya cambiado y eso esta mal. Lo corrijo.

Tienes la opción de cambiar de pestaña sin provocar el evento OnChange con oTabs:SetIndex( nIndex, .F. )

Saludos

Arreglo:
METHOD SetIndex( nIndex, lTriggerOnChange ) CLASS XTabs
(línea 259) IF lTriggerOnChange .AND. nFromTab != nIndex
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
bingen
Mensajes: 565
Registrado: Lun Jul 07, 2014 8:17 pm
Ubicación: Bilbao
Contactar:

Re: Evento OnChange de Ttabs

Mensaje por bingen »

Pues cada vez que añado un Tab
FOR nK := 1 TO Len( aGrupos )
::oTabGrupos:AddItem( iif( Vacio(aGrupos[ nK ] )," ",AllString(aGrupos[ nK ] ) ) )
NEXT
llama a OnChange, que puede parecer hasta lógico, pero antes no lo hacía con tTabCtrl
BiSoft Desarrollo de software profesional
http://www.bisoft.es
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9253
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Evento OnChange de Ttabs

Mensaje por ignacio »

Ok. No estaba claro que los creabas sobre la marcha con TTabs creado.

Visto: comenta la línea 121 de TabsItem.prg. ( ::Select() )

Saludos
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
bingen
Mensajes: 565
Registrado: Lun Jul 07, 2014 8:17 pm
Ubicación: Bilbao
Contactar:

Re: Evento OnChange de Ttabs

Mensaje por bingen »

Hecho, funciona perfecto. Muchas gracias.
BiSoft Desarrollo de software profesional
http://www.bisoft.es
Responder