Visual Basic.NET - Recuperar valor de una variable desde otro formula

 
Vista:

Recuperar valor de una variable desde otro formula

Publicado por erque (26 intervenciones) el 05/02/2006 17:50:39
Hola.
Me he pasado hace poco de VB6 a VB.Net.
Tengo una aplicación con 5 formularios. En los mismos utilizo algunas variables públicas. Esas variables las utilizo en el resto de formularios para hacer por ejmplo consultas en otro formulario.
Con VB6 era tan fácil como poner FrmClientes.dato1=3 y la variable dato1 ya tiene el valor 3 la lea desde donde la lea.
En VB.Net no consigo pasar valores de esa forma tan sencilla.
Creo un formulario inicial, por ejemplo Frminicial. Desde éste puedo llamar al resto de formularios al pulsar sobre un botón, por ejemplo al formulario de clientes:
Dim clientes As New FrmClientes
clientes.Show()
Si tengo la variable Public dato1 as Single en FrmInicial, ¿Como le paso el valor a Clientes o una vez abierto Clientes, como modifico el valor de dato1?
Muchas gracias. Un saludo.
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:Recuperar valor de una variable desde otro form

Publicado por mama (1 intervención) el 06/02/2006 16:19:17
dim s as single

Dim clientes As New FrmClientes
clientes .dato1=s'Yo suelo asignarselo antes del show,pero tal cual!!
clientes.Show()

Lo q ya no se puede hacer es en cualkier lugar d cualkier form asignar un campo de cualkier otra: hay q acceder a la variable form concreta cuyo campo kieres modificar,o eso creo yo!

En el ejemplo q proponias accedias a la instancia d la form sin problems porq la creabas ahi mismo,pero en otros casos es mas complicado:

Yo tengo una form principal q es la mdiparent de to las demas de la aplicacion y n la principal tengo n menu cuyas opciones aveces se activan dependiendo d q form este activa n cada momento:

por ejemplo,si la form activa ahora mismo es una factura,se activa la opcion del menu d la form ppal: "imprimir factura":

Se programa el evento activate y deactivate d la form factura:

Private Sub Activose(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Activated
CType(Me.MdiParent, Principal).MenuItem39.Enabled = True 'imprimir
End Sub

La clave es q en Me.MdiParent,realmente esta la instancia de la form principal.De lo contrario no podrias hacer como n VB6: principal.menuitem39...

Para acceder a las form childs(en el sentido contrario al ejemplo anterior) se q hay alguna funcion definida q es recorrer las forms child (de una mdiparent,como mi form principal),pero eso ahora mismo n me acuerdo exactamente porq no lo uso aun!!!

LA VERDAD ESTA AHI FUERA!!!Animo!
Por cierto t mande un mail referente a como se imprimia,pero no se si lo viste o sabrias algo pa ayudarme!!1
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

sigue el problema no utilizo mdi

Publicado por erque (26 intervenciones) el 06/02/2006 21:50:51
En todos los foros me contestan siempre con formulario MDI, pero yo no utilizo los mdi, tengo 5 formularios, cada uno de ellos es un pequeño programa dentro del programa principal, lo que pasa es por ejemplo que desde FrmClientes yo paso el control a otro formulario desde el que hago una consulta por 12 campos distintos a la vez y el resultado lo devuelvo al FrmClientes filtrando la base de datos. Para esto, le paso el valor de una variable que la cambio desde cualquiera de los 5 formularios. Esa variable publica la declaro en el formulario principal y desde ese momento ya puedo abrirla desde cualquier formulario.
Esto es lo que no consigo hacer con vb.net ya que desde el formulario FrmDemandas no puedo acceder a una variable de FrmClientes y desde esta tampoco puedo acceder a otra de FrmTelefonos.
Si me puedes ayudar con el tema te lo agradezco.
Gracias
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:sigue el problema no utilizo mdi

Publicado por mama (5 intervenciones) el 08/02/2006 10:23:58
Buf!sigo pensando q lo mas sencillo seria asociando las form a la form principal con lo de MDI,En q t limita eso pa lo q kieres hacer?pero bueno!Me da q hacerlo como lo hacias en VB& ya no se va poder hacer.

Yo las unicas 2formas en q accedo d una form a otra son estas:

Desde la MDIParent,acceder a la MDI activa n ese momento:

Dim FormActiva As Nueva_Certificación'Nueva_Certificación es un formulario
FormActiva = CType(Me.ActiveMdiChild, Nueva_Certificación)

O,en el lugar donde creo las forms,guardo una variable q apunta al nuevo form pa usarlo cuando kiera:

Dim frmCrearFactura As New Nueva_Factura
frmCrearFactura.Denominación.Text = FormActiva.Denominación.Text
frmCrearFactura.Fecha.Text = Date.Now.Date
frmCrearFactura.MdiParent = Me'Esto no es necesario si no kieres MDI!!!

FormActiva.Close() 'asi se ejecuta OnCloseEvent y actualiza posibles cambios(antes del show y tras l MdiParent)

Dim frmEligeFactura As New Datos_Factura
frmEligeFactura.Form_CrearFactura = frmCrearFactura 'para mostrar la factura dspues d elegir datos como:porcentajes,etc..
frmEligeFactura.Show()

En un butonClick de frmEligeFactura hago:
me.Form_CrearFactura .Show()
Y muestro la form cuyo enlace guarde.Podria acceder a cualkier atributo publico d CrearFactura,que es lo q kieres tu,pero tendras q acceder desde alguna variable form q hayas guardado previamente,lo de acceder como se hacia en VB6 me parece muy alegre y despreocupado.Me da la sensacion de q iba a ser un despiporre de inseguridad de las aplicaciones.

Ptda.:Respecto a mi asunto del PrintPreviewDialog,sigo sin tener lo q kiero: Solo kiero saber si una vez mostrdo el dialog, se pulso en algun momento al boton-icono con el dibujin de la impresora(osea,si se imprimio realmente esas hojas),y no se puede hacer con el valor q devuelve el dialog(creo),porq para cerrarlo siempre hay q dar en el aspa de la eskina superior dcha,o en cerrar, siempre devuelve: "Cancel" o yo q se(se haya imprimido algo antes o no!).A ver si me explike bien ahora.Voy ponerlo en las notas d este comentario tambien,por si aca no sabes y ahora m entiende alguien!Pero tanto lo sepas como si no,muchas gracias y espero haber sido d alguna ayuda!
Ciao
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

La solución correcta

Publicado por erque (26 intervenciones) el 08/02/2006 19:51:37
Parece mentira que no hemos caido antes en esto. Por ejemplo, sirve para pasar datos de un formulario a otro o controlar mediante el valor de una variable si el formulario X está o no abierto.

Me han contestado en el foro del Guille lo siguiente (lo pongo tal cual, incluida la persona que da la solución):

Inserta un módulo y define la variable como pública en este. Las Variables públicas definidas en un módulo se puede usar en cualquier procedimiento de todo el proyecto y por consiguiente de cualquier formulario.

Suerte, tenemos mucho que aprender, poco a poco.

Ing. Fernando Luque Sánchez-->Este es el que da la solución
De Trujillo - Perú para el mundo
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