Visual Basic - Devolver valor formulario

Life is soft - evento anual de software empresarial
 
Vista:

Devolver valor formulario

Publicado por Krator (71 intervenciones) el 30/10/2005 13:32:10
Hola amigos, de nuevo aki este cazurro preguntando :)

A ver si consigo expresarme.
Tengo un form1, con un botón BUSCAR. Este llama a otro formulario, que tiene un datagrid con una lista. Quiero que al clikear 2 veces en algo de la lista, este formulario(form2) se cierre, y que devuelve cual de la lista a clikeado al form1.
He pensado en hacer variables superglobales...pero mi curiosidad me hace preguntar. ¿Hay otra forma más efectiva/eficiente?(las variables superglobales están siempre en memoria,no?

Un saludo,

Alguien que quiere seguir aprendiendo cosas.
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:Devolver valor formulario

Publicado por Cecilia Colalongo (3116 intervenciones) el 30/10/2005 16:24:29
Puedes trabajar con propiedades y métodos en los formularios y evitar las variables globales, en el Form1 puedes hacer:

Private strElementoBuscado As String

Public Property Get ElementoBuscado As String
ElementoBuscado=strElementoBuscado
End Property

Public Property Let ElementoBuscado(Valor As String)
strElementoBuscado=Valor
End Property

Luego desde otro formulario lo trabajas como cualquier propiedad:

Form1.ElementoBuscado = <ElementoDeLaLista>
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:Devolver valor formulario

Publicado por Arnaldo (53 intervenciones) el 30/10/2005 16:45:54
Hola, de esta forma podes enviar datos de tu formulario2 al formulario1.

Private Sub Command1:click()

Form1!Text1.Text = Text1.Text
Unload ME

End Sub

Lo que hago es enviar el valor contenido en un TextBox del formulario2, a un TextBox que se encuentra en el Formulario1.
Con el datagrid podes hacer lo mismo. De esa manera no declaras variables globales. Espero que te sirva la info,

Saludos

Arnaldo.
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:Devolver valor formulario

Publicado por Krator (71 intervenciones) el 30/10/2005 18:09:04
Alguno me puede mandar un ejemplo. Es que yo he probado a hacerlo de las 2 formas que me habeis indicado...y ninguna me funcionó...en ninguna puso en el txt, el número seleccionado del datagrid(ese lo pilla bien, pq lo he comprobado paso a paso).
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:Devolver valor formulario

Publicado por Arnaldo (53 intervenciones) el 31/10/2005 01:00:05
Hola te mando un ejemplo. En el Formulario 2 Cargo los datos de mi base de datos a un MFlexGrid cada vez que realizo la llamada al Formulario 2
Hago doble click sobre la celda en la cual se encuentra la informacion que me interesa enviar a un TextBox que se encuentra en mi Formulario 1. El Form1 tiene un TextBox y un CommandButon atravez del cual realizo la llamada al Form2.

-------Formulario 1 ---------------
Private Sub Command1_Click()
Form2.Show
End Sub
-------Formulario 2 ---------------

Private Sub Form_Load()
Dim Fila As String

MSFlexGrid1.FormatString = "Nombre | Apellido | Edad | Telefono"
For x = 0 To 4
Fila = "Carlos" & vbTab & "Gomez" & vbTab & Str(x) & vbTab & Str(254 & x & 5 & 20 + x & x)
MSFlexGrid1.AddItem Fila
Next x
End Sub

Private Sub MSFlexGrid1_DblClick()
Form1!Text1.Text = MSFlexGrid1.TextMatrix(MSFlexGrid1.MouseRow, MSFlexGrid1.MouseCol)
Unload Me
End Sub

'NOTA: no realizo ninguna llamada a la base de datos en el ejemplo de arriba. Abajo te escrivo como me comunicaria con la base de datos y traigo los registros.

-------Formulario 2 ---------------

Private Sub Form_Load()
Dim cn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Dim Fila, SQL As String
Dim x As Integer

MSFlexGrid1.FormatString = "Nombre | Apellido | DNI | Telefono"
For x = 0 To 3
MSFlexGrid1.ColWidth(x) = 1000
Next x
SQL = "SELECT Maestros.* FROM Maestros;"

cn.Open "DSN=Nom_Archivo.mdb"
Rs.CursorType = adOpenStatic
Rs.LockType = adLockBatchOptimistic
Rs.Open SQL, cn, , adLockBatchOptimistic
If Rs.EOF = False Then
Rs.MoveFirst
While Rs.EOF = False
Fila = Rs.Fields(2).Value & vbTab & Rs.Fields(3).Value & vbTab & Rs.Fields(4).Value & vbTab & Rs.Fields(5).Value
MSFlexGrid1.AddItem Fila
Rs.MoveNext
Wend
End If
Rs.Close
Set Rs = Nothing
cn.Close
End Sub

Esero que te sirva, no utilizo un dataGrid, porque estoy peliado con ese control, por una pavada mia me niego a tener contacto con el a no ser que me sea sumamente necesario y entonces voy a tener que recurrir a leer como se trabaja con el DBGrid. Pero siempre trato de esquivarlo. Bueno suerte con tu proyecto.

Arnaldo.
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