Barra De Botones


Objetivo: Barra De Botones
como se hace para cambiar el valor de un boton "Togle" sin que se dispare el evento?



Public Sub resetear()

btnPaneo.Value = true


End


Public Sub btnPaneo_Click()

'no quiero llegar aqui!!!


End

Perfil MP  
Objetivo: Re: Barra De Botones
Public Sub btnPaneo_Click()

Stop Event


End


También puedes colocar Stop Event dentro de un condicional, si no siempre deseas el mismo comportamiento.

Saludos

Perfil MP  
Objetivo: Re: Barra De Botones
Jesús:

De esa forma se ejecuta el evento. Quiero decir que llega a el. Aunque se para.

TercoIDE:

¿ Cuál es la idea principal del ejemplo ?.

Esto es un ejemplo con un observador. No llegaría a ejecutarse el evento click del ToolPanel.

Private hObservador As Observer

Public Sub _new()

End

Public Sub Form_Open()

hObservador = New Observer(btnPaneo) As "Observador"
resetear()

End

Public Sub resetear()

btnPaneo.Value = True

End

Public Sub Observador_Click()

Message("Yo soy el único!!")
Stop Event

End

Public Sub btnPaneo_Click()

Message("no quiero llegar aquí!!")

End


Saludos

última edición por Shell el Sabado, 06 Diciembre 2014, 13:27; editado 1 vez
Objetivo: Re: Barra De Botones
la idea era esa, justamente, poder "toglear" el boton desde codigo, sin que se ejecute el evento

pero se me acaba de ocurrir una idea tan basica que no la considere...


Public reseteando as boolean

Public Sub resetear()

reseteando = true

btnPaneo.Value = True

reseteando = false

End


Public Sub btnPaneo_Click()

if reseteando then return

Message("no estare aqui!!")

End

Perfil MP  
Objetivo: Re: Barra De Botones
Lo mismo que has hecho, pero algo más elegante por cuanto te ahorras una variable pública:

Public Sub resetear()

btnPaneo.tag=true
btnPaneo.Value = True

End


Public Sub btnPaneo_Click()

if btnPaneo.tag then return
Message("no estare aqui!!")

End

Perfil MP  
Objetivo: Re: Barra De Botones
Veo que a veces aprovechamos la propiedad tag de los controles, dándole un uso distinto al
de un array de controles. A lo mejor esta propiedad en gambas no fue creada solamente para esto
exclusivamente.

Y ahora para el ahorro de una variable publica. Esto son trucos.
Son cosas que realmente no nos damos cuenta por la falta de uso.

En cambio en Vb6 la propiedad index del control parece más exclusiva del índice de los controles.

"Más sabe el diablo por viejo que por diablo".

Saludos

Objetivo: Re: Barra De Botones
creo haber leido que Benoit puso Tag y otras similares para compatibilidad con VB mas que para darles algun uso especifico

Perfil MP  
Objetivo: Re: Barra De Botones
La propiedad tag es mucho más antigua que el VB. Es un clásico. En otros lenguajes tiene otro nombre (por ejemplo en el viejo Clipper5 se llamaba "cargo") pero la idea es la misma, conseguir que el objeto porte información que él mismo no trata directamente, pero que el programador puede usar para lo que quiera. De ahí el que la propiedad sea un Variant, puede contener cualquier cosa.

Shell: Lo del array de controles usando tag no lo entiendo muy bien...

Saludos

Perfil MP  
Objetivo: Re: Barra De Botones
shordi escribió: [Ver mensaje]

Shell: Lo del array de controles usando tag no lo entiendo muy bien...


Cuando creas un array de controles en gambas, el nombre del grupo es el mismo, común a esos controles
y la propiedad tag es un valor numérico distinto en cada control de ese grupo. Si fuese un grupo de botones, al hacer click en uno de esos botones,
sabemos en cual se ha hecho click por medio de Last.tag

Imagina que quieres saber en una calculadora si has hecho click en el botón que es el operador suma,resta..cada uno con un tag distinto.

Public Sub Operacion_Click()

Select Case Last.tag
Case 0
operando1 = CFloat(Pantalla.Text)
operador = "+"
Pantalla.Text = ""
Case 1
operando1 = CFloat(Pantalla.Text)
operador = "-"
Pantalla.Text = ""
Case 2
operando1 = CFloat(Pantalla.Text)
operador = "*"
Pantalla.Text = ""
Case 3
operando1 = CFloat(Pantalla.Text)
operador = "/"
Pantalla.Text = ""
End Select
End


Saludos

Objetivo: Re: Barra De Botones
Vale, no te había entendido. Yo eso no lo hago con el tag, salvo que el tag aporte algo más, lo hago con la propiedad Text o Name, según hayan sido creados los controles.
Public Sub Operacion_Click()

Select Case Last.text
Case "+" ' o Case Last. name ... Case "buttonAdd" etc. etc.
operando1 = CFloat(Pantalla.Text)
operador = "+"
Pantalla.Text = ""
Case "-"
operando1 = CFloat(Pantalla.Text)
operador = "-"
Pantalla.Text = ""
Case "*"
operando1 = CFloat(Pantalla.Text)
operador = "*"
Pantalla.Text = ""
Case "/"
operando1 = CFloat(Pantalla.Text)
operador = "/"
Pantalla.Text = ""
End Select
End


Es por coherencia. Tag, por definición "porta" datos que no tienen que ver con el objeto o con su funcionamiento, que para eso el objeto ya tiene sus propiedades. La identificación de un control viene dada por el nombre o por alguna característica propia que se le asigne en el momento de la creación, como el texto. Por tanto, han de ser usadas éstas, ahorrando el tag para otros menesteres y ahorrando código, puesto que el nombre o el texto han de ser establecidos de todas formas.

Saludos.

última edición por shordi el Lunes, 08 Diciembre 2014, 19:17; editado 1 vez
Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4606s (PHP: -73% SQL: 173%)
Consultas SQL: 46 - Debug off - GZIP Activado