Propiedades como variables
Hola mi problema es que necesito usar propiedades como variables, en si el problema es este:
tengo un mdi que lo llamare mdiform y los menus menu1, menu2, menu3 los cuales no pueden ser matrices de controles pero el punto es que necesito usar esos menus en un procedimiento que es común para los menus antes mencionados, es decir
que en vez de escrir el codigo:
mdiform.menu1
mdiform.menu2
mdiform.menu3
pueda ser ejecutado por mdiform.cad
donde cad sea una variable que pueda encerrar a los tres menus.
Gracias espero haberme hecho entender.
Bye
tengo un mdi que lo llamare mdiform y los menus menu1, menu2, menu3 los cuales no pueden ser matrices de controles pero el punto es que necesito usar esos menus en un procedimiento que es común para los menus antes mencionados, es decir
que en vez de escrir el codigo:
mdiform.menu1
mdiform.menu2
mdiform.menu3
pueda ser ejecutado por mdiform.cad
donde cad sea una variable que pueda encerrar a los tres menus.
Gracias espero haberme hecho entender.
Bye
Hola, si he leido bien, lo que pretendes es que cuando ejecutes \'mdiform.cad\', se ejecute los 3 menús. Lo que no he entendido bien es si los menús no pueden ser matrices de controles, porque tu no hayas podido hacerlo, o porque, para lo que estés haciendo, no te permitan usar matrices de controles. Si és lo primero, decirte que cuando creas un menú, con el asisténte de menús que posee el Visual Basic, perféctamente te permite crear una matríz de controles con menús, lo único que tienes que hacer es ponerles a todos los menús que quieras que estén dentro de la matriz, el mismo nombre dentro de la propiedad \'name\', y ponerles un número en la propiedad \'index\'. Ahora, cuando quieras programar un evento para cada botón, te saldrá la declaración del evento, con una variable llamada \'index\'. Ésta variable te indica el menú que has presionado. Si lo que quieres es poner el mísmo código para todas los menús, ponlo como si fuera un evento para un determinado menú. Si lo que quieres es poner un código para un menú determinado, usa \'Select Case Index\', y cada \'Case\' que uses será el del número del menú que deseas usar. Si necesitas usar un método para llamar a todo los menús, ahora solamente tendrás que llamar al evento (p.ej. Click) mediante la función Call (ej: Call menu_Click).
Espero haber entendido bien tu problema, y que esta contestación te haya servido para algo.
Un saludo.
Espero haber entendido bien tu problema, y que esta contestación te haya servido para algo.
Un saludo.
Para realizar eso en el procemiento comun pasa como parametro el menu que vas a utilizar de la siguiente manera
Private Sub ProcedimientoComun(ByRef oMenu As VB.Menu)
'Codigo del procemiento
End Sub
En el objeto oMenu tendras la referencia al menu pasado.
Si esto no te sirve y lo que quieres es llamar a un evento de cualquier menu y sabes el nombre del formulario, se me ocurre que puedes realziar lo siguiente:
En primer lugar establece los eventos de los menus individualmente, pero tienes que tener en cuente que tienes que modificar el estado privado del prodimiento por uno publico
Public Sub mnu1_Click()
MsgBox "mnu1"
End Sub
Public Sub mnu2_Click()
MsgBox "mnu2"
End Sub
Despues desde tu procedimiento utiliza CallByName para llamar a los eventos de la siguiente manera:
Public Sub ProcedimientoComun()
'Codigo del procemiento. Se entiende que el objeto que tiene los menus es mdiform
'Llamadas a los menus
CallByName Form1, "mnu1_Click", VbMethod 'Llama al evento Click del menu mdiform.mnu1
CallByName Form1, "mnu2_Click", VbMethod 'Llama al evento Click del menu mdiform.mnu2
End Sub
Espero que te sirva
Private Sub ProcedimientoComun(ByRef oMenu As VB.Menu)
'Codigo del procemiento
End Sub
En el objeto oMenu tendras la referencia al menu pasado.
Si esto no te sirve y lo que quieres es llamar a un evento de cualquier menu y sabes el nombre del formulario, se me ocurre que puedes realziar lo siguiente:
En primer lugar establece los eventos de los menus individualmente, pero tienes que tener en cuente que tienes que modificar el estado privado del prodimiento por uno publico
Public Sub mnu1_Click()
MsgBox "mnu1"
End Sub
Public Sub mnu2_Click()
MsgBox "mnu2"
End Sub
Despues desde tu procedimiento utiliza CallByName para llamar a los eventos de la siguiente manera:
Public Sub ProcedimientoComun()
'Codigo del procemiento. Se entiende que el objeto que tiene los menus es mdiform
'Llamadas a los menus
CallByName Form1, "mnu1_Click", VbMethod 'Llama al evento Click del menu mdiform.mnu1
CallByName Form1, "mnu2_Click", VbMethod 'Llama al evento Click del menu mdiform.mnu2
End Sub
Espero que te sirva
