Ver Mensaje Individual
  #15 (permalink)  
Antiguo 08/07/2010, 17:15
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Variables globales

Eso ya te lo respondí más arriba. Los pasos serían:

1) Creas variables locales en el formulario destino (son Private)

2) Agregas a ese formulario propiedades públicas para escribir y leer esos valores desde afuera.

3) Le agregas en el evento de cierre del formulario destino, que el mismo cambie su propiedad DialogResult a OK o Cancel, según el resultado deseado.

4) En la invocación a ese formulario lo llamas usando el método ShowDialog, eso hará que el control del proceso pase al formulario invocado.

5) Cuando se cierre ese formulario, el control del proceso volverá a la línea siguiente al ShowDialog, pero como el objeto que contiene esa ventana aun existe, puedes consultar cual es su propiedad DialogResult y si es OK, sacas los valores obtenidos en ese formulario por medio de las propiedades que le creaste adentro.

Eso es lo que explicaba en ese post. Intenta hacerlo. Al menos intentalo una vez.

Esa es una forma de programar que respeta el paradigma de Orientación a Objetos..., y por consecuencia desperdicia menos memoria y es más segura.

Cita:
y en caso de que sean MUCHOS valores?
En el caso que sean muchos valores tienes dos herramientas: Una fundamenta y otra opcional:
La primera es paciencia. Si no tienes paciencia, no te dediques al desarrollo de software.
La programación requiere mucho tiempo de desarrollo y no hay atajos si quieres hacer bien las cosas. Si tienes que escribir 12.000 líneas de código, no hay forma de evitarlo. Tendrás que escribirlas una a una y con mucha paciencia.
Yo he tenido, en ocasiones, que tirar formularios completos y clases enteras ya terminadas y probadas, simplemente porque me cambiaron un requerimiento del soft, o por darme cuenta que simplemente estaban mal planteadas y que estaba perdiendo tiempo poniendoles parches, en lugar de comenzar desde cero todo de nuevo, lo que me iba a llevar menos tiempo que debuggear malos arreglos.
La otra herramienta es la creatividad. En ocasiones todo se resume a saber cómo empaquetar los datos en objetos más complejos para no tener que hacer mcuhas propiedades.
Un objeto de una clase creada, por ejemplo, que hacer veinte propiedades.
Si tuvieses una clase Cliente, creas entonces una Propiedad ClienteNuevo donde pasas una instancia de ese objeto, y la cargas dentro del formulario hijo. Cuando retomas ese objeto desde afuera, ya viene con todos los datos...
¿Sencillo, ¿no?

Código vb.net:
Ver original
  1. Public Property ClienteNuevo() As Cliente
  2.         Get
  3.             Return varCliente ' varCliente es una variable local de clase Cliente en el form
  4.         End Get
  5.         Set(ByVal Value As Cliente)
  6.             varCliente = Value
  7.         End Set
  8.     End Property

Ejemplo de una clase llamada Cliente:
Código vb.net:
Ver original
  1. Imports Microsoft.VisualBasic
  2. Imports Microsoft.Win32
  3.  
  4. Public Class Cliente
  5.     Inherits Object
  6.  
  7. #Region " Área de variables"
  8.  
  9.     Private apellidoCliente As String
  10.     Private calle As String
  11.     Private ciudad As String
  12.     Private condIva As Int16
  13.     Private cPostal As String
  14.     Private cuit As String
  15.     Private dpto As String
  16.     Private nombreCliente As String
  17.     Private nroCliente As Integer
  18.     Private nroDomicilio As Integer
  19.     Private oEMail As String
  20.     Private piso As Integer
  21.     Private provincia As String
  22.     Private razon_Social As String
  23.     Private telefono As String
  24.  
  25.  
  26. #End Region
  27.  
  28. #Region " Área de propiedades"
  29.  
  30.     Public Property Iva() As Int16
  31.         Get
  32.             Return condIva
  33.         End Get
  34.         Set(ByVal Value As Int16)
  35.             condIva = Value
  36.         End Set
  37.     End Property
  38.  
  39.     Public Property NumCliente() As Integer
  40.         Get
  41.             Return nroCliente
  42.         End Get
  43.         Set(ByVal Value As Integer)
  44.             nroCliente = Value
  45.         End Set
  46.     End Property
  47.  
  48.     Public Property NomCliente() As String
  49.         Get
  50.             Return nombreCliente
  51.         End Get
  52.         Set(ByVal Value As String)
  53.             nombreCliente = Value
  54.         End Set
  55.     End Property
  56.  
  57.     Public Property ApeCliente() As String
  58.         Get
  59.             Return apellidoCliente
  60.         End Get
  61.         Set(ByVal Value As String)
  62.             apellidoCliente = Value
  63.         End Set
  64.     End Property
  65.  
  66.     Public Property CuitCliente() As String
  67.         Get
  68.             Return cuit
  69.         End Get
  70.         Set(ByVal Value As String)
  71.             cuit = Value
  72.         End Set
  73.     End Property
  74.  
  75.     Public Property TelCliente() As String
  76.         Get
  77.             Return telefono
  78.         End Get
  79.         Set(ByVal Value As String)
  80.             telefono = Value
  81.         End Set
  82.     End Property
  83.  
  84.     Public Property CalleCliente() As String
  85.         Get
  86.             Return calle
  87.         End Get
  88.         Set(ByVal Value As String)
  89.             calle = Value
  90.         End Set
  91.     End Property
  92.  
  93.     Public Property NroDomCliente() As Integer
  94.         Get
  95.             Return nroDomicilio
  96.         End Get
  97.         Set(ByVal Value As Integer)
  98.             nroDomicilio = Value
  99.         End Set
  100.     End Property
  101.  
  102.     Public Property DptoCliente() As String
  103.         Get
  104.             Return dpto
  105.         End Get
  106.         Set(ByVal Value As String)
  107.             dpto = Value
  108.         End Set
  109.     End Property
  110.  
  111.     Public Property PisoCliente() As Integer
  112.         Get
  113.             Return piso
  114.         End Get
  115.         Set(ByVal Value As Integer)
  116.             piso = Value
  117.         End Set
  118.     End Property
  119.  
  120.     Public Property CityCliente() As String
  121.         Get
  122.             Return ciudad
  123.         End Get
  124.         Set(ByVal Value As String)
  125.             ciudad = Value
  126.         End Set
  127.     End Property
  128.  
  129.     Public Property CpaCliente() As String
  130.         Get
  131.             Return cPostal
  132.         End Get
  133.         Set(ByVal Value As String)
  134.             cPostal = Value
  135.         End Set
  136.     End Property
  137.  
  138.     Public Property PciaCliente() As String
  139.         Get
  140.             Return provincia
  141.         End Get
  142.         Set(ByVal Value As String)
  143.             provincia = Value
  144.         End Set
  145.     End Property
  146.  
  147.     Public Property RazonSocial() As String
  148.         Get
  149.             Return razon_Social
  150.         End Get
  151.         Set(ByVal Value As String)
  152.             razon_Social = Value
  153.         End Set
  154.     End Property
  155.  
  156.     Public Property eMail() As String
  157.         Get
  158.             Return oEMail
  159.         End Get
  160.         Set(ByVal Value As String)
  161.             oEMail = Value
  162.         End Set
  163.     End Property
  164.  
  165. #End Region
  166.  
  167. End Class
Esas propiedades se usan para cargar la variable varCliente en el formulario destino, por ejemplo
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 08/07/2010 a las 17:29