como pasar una referencia a un formulario

enkhil
18 de Mayo del 2004
Bien, os explico. Tengo un form1 con 40 botones y al pulsar cualquiera de ellos me abre un form2(siempre el mismo). Existe alguna manera de no tener que escribir en todos los commandx_click() el mismo codigo para abrir ese formulario?¿como puedo saber desde el form2 que botón fué pulsado para llegar a ese formulario?, es decir, si se pulso el boton 1, el 15 o el 40 para entrar a form2. Gracias.

^Neo^
18 de Mayo del 2004
Mira, seria bueno saber si los botones los tienes como una matriz. Si es asi una solucion facil aunque talvez no muy elegante seria asignar a la propiedad tag del form1 el indice del boton en la matriz de controles. Entonces desde form2 haces la comprobacion. para poner un ejemplo sencillo, en el form1 tenemos una matriz de 40 controles command1, de subindice 0 a 39, claro. Cuando haces click se dispara el siguiente codigo:

Private Sub Command1_Click(Index As Integer)
Form1.Tag = Index
Form2.Show vbModal
End Sub


Ahora form2 ya sabe cual es el boton pulsado, solicitando el valor de la propiedad tag de form1. Asi, desde form2 hacemos:

Private Sub Form_Load()
Label1.Caption = Form1.Tag
End Sub


label1 es una etiqueta para que muestre el subindice del boton pulsado. Y ya :-) Es un remedio estupido pero funciona. Suerte.

enkhil
18 de Mayo del 2004
Gracias. es una muy buena solución, pero solo me queda una duda, esa variable 'index' que le pasas al command1_click, como sabe que botón es, de donde la sacas? Los botones si los tengo en un array y para inicializarlo puse...
dim arraymesas(39) as commandbutton
set arraymesas(0)=form1.command1
...
set arraymesas(39)=form1.command40

^Neo^
18 de Mayo del 2004
Bueno, es que yo la matriz del controles la creo creando un boton y copiandolo tantas veces como necesito :-) Si en tiempo de diseño haces click sobre uno de los command button te aparece en la ventana de codigo el procedimiento Command1_Click(Index as Integer) de modo que la variable index no la saco de ningun lado, el propio vb me la facilita al editar el codigo del evento Click. No se que diferencias hay con lo de crear el array del modo en que tu lo haces, pues nunca se me ha dado por ahi. Donde tu usas arraymesas(0) ... arraymesas(39) yo ya no habria creado el array mesas, si no una matriz de controles command command1(0) ... command1(39). Es decir, yo no meteria los controles en un array si no que crearia un array de controles. Como me estoy liando!

Es que no se si me explico, porque trabajamos de modos diferentes... bueno, cualquier cosa me escribes a [email protected] si lo necesitas.

enkhil
18 de Mayo del 2004
Te entiendo perfectamente, lo que pasa es que estoy trabajando con el embedded visual tools(version 3.0 de visual basic) ya que estoy desarrollando software para pocket pc y creo que esta versión no me deja crear matrices de controles, por lo que me he tenido que crear un array de botones de la forma que te comente. A ver si alguien sabe como podia hacer el temita este. Gracias.