Visual Basic - Inter-relación entre dos formularios

Life is soft - evento anual de software empresarial
 
Vista:

Inter-relación entre dos formularios

Publicado por Antonio (93 intervenciones) el 15/04/2009 16:26:06
Hola a todos, buenas tardes.
Supongamos que tenemos un proyecto con dos formularios.

Un formulario (AltaPro) con una DataGrid en el que se pueden añadir, modificar o borrar registro de una tabla de Proveedores.

En el otro formulario (ComDirMat), uno de los TextBox guarda relación con el DataGrid (de AltaPro), que si no pones nada o el dato que pones no está en DataGrid ejecuta:
'bOtraForm, variable pública (normalmente false)
bOtraForm = True
AltaPro.Show

Una vez en AltaPro, uitilizo la tecla INTRO, bien para modificar un registro o bien para que si venimos de otro formulario tome el valor de dos campos en dos variables.
If KeyCode = 13 Then
If bOtraForm = False Then
cTexto = ""
CmdUpd_Click
Else
bOtraForm = False
cPCodPro = DGPro.Columns(0)
cPNomRazSoc = DGPro.Columns(1)
CmdClose.SetFocus
cmdClose_Click
End If
...

De nuevo en el formulario ComDirMat paso a dos TexBox las variables:
cCodPro.Text = cPCodPro
cNomRazSoc.Text = cPNomRazSoc

Pero no me funciona, si vuelvo a repetir el proceso si pone los valores.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Inter-relación entre dos formularios

Publicado por Antonio (93 intervenciones) el 15/04/2009 21:49:57
Solucionado con el siguiente código em AltaPro:

If KeyCode = 13 Then
If bOtraForm = False Then
cTexto = ""
CmdUpd_Click
Else
bOtraForm = False
DGPro.Refresh
ComDirMat.cCodPro.Text = DGPro.Columns(0)
ComDirMat.cNomRazSoc.Text = DGPro.Columns(1)
CmdClose.SetFocus
cmdClose_Click

Sin embargo desearía acceder a la Form AltaPro, no solo desde la ComDirMat, si no tambien desde la form ComSEAMat, por lo que habría que modificar las líneas:
ComDirMat.cCodPro.Text = DGPro.Columns(0)
ComDirMat.cNomRazSoc.Text = DGPro.Columns(1)
Por lo que necesito saber que debo poner donde dice ComDirMat para que sirva tanto para ComDirMat como para ComSEAMat y como psar el parámetro correspondiente desde cada form.

Saludos cordiales.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Inter-relación entre dos formularios

Publicado por P3L30N2009 (699 intervenciones) el 16/04/2009 09:59:35
Si los TextBox en ambos formularios tienen el mismo nombre, puedes pasar el nombre del formulario a través de una variable pública.

p.e. En un módulo.bas:
Public ElForm As Form

En cada Form y antes de llamar a AltaPro:
Set ElForm = Me
AltaPro.Show

Y ya en el AltaPro sustituyes el nombre del formulario por la variable pública:
If KeyCode = 13 Then
If bOtraForm = False Then
cTexto = ""
CmdUpd_Click
Else
bOtraForm = False
DGPro.Refresh
ElForm.cCodPro.Text = DGPro.Columns(0)
ElForm.cNomRazSoc.Text = DGPro.Columns(1)
CmdClose.SetFocus
cmdClose_Click
End If
End If

Si el nombre de los TextBox no fueran iguales, tendrías que crear las variables públicas necesarias con el nombre de los mismos. (Esta vez declarándolas como TextBox)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Inter-relación entre dos formularios

Publicado por Antonio (93 intervenciones) el 16/04/2009 12:09:45
Muchas gracias P3L30N2009.

Yo hacía algo parecido, pero ElForm la probé declarandola como String o como Variant y por eso me daba error. No sabía que había que declararla "As Form".

Saludos cordiales.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Inter-relación entre dos formularios

Publicado por Antonio (93 intervenciones) el 16/04/2009 12:58:26
Hola P3L30N2009.

Necesito declarar una variable tipo TextBox.

En el módulo .bas, pongo:
strTextBox As TextBox

En cada form, se puede poner en una propiedad diferente del TextBox al que hay que hacer referencia, o se tiene que poner en una propiedad del TextBox al que hace referencia aunque no haya llegado editando a dicho TextBox? y como se declararía?.

Saludos cordiales.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Inter-relación entre dos formularios

Publicado por Antonio (93 intervenciones) el 16/04/2009 12:58:57
Hola P3L30N2009.

Necesito declarar una variable tipo TextBox.

En el módulo .bas, pongo:
strTextBox As TextBox

En cada form, se puede poner en una propiedad anterior al TextBox al que hay que hacer referencia, o se tiene que poner en una propiedad del TextBox al que hace referencia aunque no haya llegado editando a dicho TextBox? y como se declararía?.

Saludos cordiales.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Inter-relación entre dos formularios

Publicado por Antonio (93 intervenciones) el 16/04/2009 13:19:18
Hola P3L30N2009.

He probado a declararla en la propiedad GotFocus de la siguiente forma, pero no funciona, supongo que será porque no había llegado aún a dicho textbox:
Set strTextBox = Me

Entonces para declarla la variable strTextBox en un textbox anterior y que haga referencia al TextBox llamado cVale, ¿como la declaro?

Saludos cordiales.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar