Página 1 de 1

Evento OnChange de Ttabs

Publicado: Mar Sep 26, 2023 8:30 am
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

Re: Evento OnChange de Ttabs

Publicado: Mar Sep 26, 2023 10:20 am
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

Re: Evento OnChange de Ttabs

Publicado: Mar Sep 26, 2023 4:31 pm
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

Re: Evento OnChange de Ttabs

Publicado: Mar Sep 26, 2023 4:44 pm
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

Re: Evento OnChange de Ttabs

Publicado: Mié Sep 27, 2023 7:57 am
por bingen
Hecho, funciona perfecto. Muchas gracias.