Ver Mensaje Individual
  #7 (permalink)  
Antiguo 04/04/2004, 15:03
Nightmare
 
Fecha de Ingreso: abril-2004
Mensajes: 16
Antigüedad: 21 años
Puntos: 0
Por lo que entiendo, apenas estas haciendo tus primeros pininos en programación, o almenos en Visual Basic, ya que alparecer no tienes bien claros algunos conceptos, y las respuestas que te han enviado presuponen que ya tienes un cierto conocimiento de esos conceptos. Así que tratare de explicarte lo que ya antes te habian sujerido, pero de manera que puedas entenderlo facilmente.

Primero, debes tener en tu proyecto dos formularios, el principal, que sera el que se mostrara al ejecutar el programa, y otro que sera el que se mostrara las n veces. En el primero, que llamaremos frmMain (Para esro tendras que modificar la promiedad Name del objeto form, que por defecto tiene Form1, Form2, etc), tendremos los siguientes objetos, con sus respectivas propiedades:


Objeto +++++++++ Name +++++++++ Caption
--------------------------------------------------
Label ++++++++++ Label1 +++++++ Cual es tu edad?
TextBox ++++++++ txtEdad
CommandButton ++ cmdAceptar +++ Aceptar
CommandButton ++ cmdSalir +++++ Salir


Ahora en el evento Click del CommandButton cmdAceptar tendremos el siguiente código el cual he comentado para que lo entiendas fácilmente:

Código:
Private Sub cmdAceptar_Click()
    ' Esta variable la utilizaremos como contador
    Dim num As Integer
    ' Declaramos un arreglo de objetos Form, que almacenara
    ' cada una de las ventanas (formularios) que vamos a mostrar
    ' Los parentesis le indican a VB que estamos declarando un arreglo
    ' El objeto Form esta definido por VB
    Dim formulario() As Form
    ' Mediante ReDim Establecemos la dimensión del Arreglo de Formularios,
    ' al número que se haya ingresado en el TextBox txtEdad
    ' Usamos la función Val para convertir el valor devuelto por la propiedad
    ' Text del TextBox, el cual es de tipo String, y lo que nesecitamos es
    ' un valor Numérico, normalente no hay ningun problema si no usamos la
    ' función val, pero es mejor siempre convertir los valores al tipo de
    ' dato que vamos a manipular, ya que esto nos evitara  algunos problemas
    ' Ahora como los arreglos empiezan a Indexarse desde 0, y lo que le indicamos
    ' a VB en la sentencia ReDim, es el maximo indice que tendra nuestro arreglo
    ' debemos decrementar en uno la cantidad ingresada en el TextBox por lo siguiente:
    ' Si ingresamos 3 en el textBox y no decrementamos este valor, tendremos
    ' un arreglo con indices desde 0 a 3, es decir: 0, 1, 2, 3, tendremos pues 4
    ' elementos en el arreglo en vez de 3
    ' Otra forma de manejar esto es indicarle a VB que comience a indexar desde 1 en
    ' lugar de 0 mediante la sentencia: Option Base 1, la cual deberas ingresar
    ' en la sección "General" del codigo
    ReDim formulario(Val(txtEdad.Text) - 1)
    
    ' Un cilco For tiene la siguiente sintaxis:
    ' For VariableDeControl = ValorInicial To ValorFinal
    '     (Sentencias)
    ' Next
    '
    ' Este ciclo lo que hace es ir asignando valores a VariableDeControl
    ' desde ValorInicial hasta ValorFinal, incrementando en cada paso
    ' una unidad la variable de control y ejecutando todo el código
    ' que exista entre la instrucción For y la instrucción Next
    '
    ' Aqui lo que le indicamos a VB es que aremos un ciclo, el cual ira
    ' asignando valores a la variable num (nuestra variable de control)
    ' desde 0 hasta el valor que tengamos en el textBox menos uno (por lo
    ' explicado anteriormente)
    For num = 0 To Val(txtEdad.Text) - 1
        ' Este código se ejecutara cada vez que VB asigne un valor
        ' a la variable num
        
        ' Aqui lo que hacemos es crearuna nueva instancia del objeto
        ' frmVentana que es el nombre que tiene el form que queremos
        ' mostra n veces
        ' New crea la instancia del objeto y Set asigna ese objeto
        ' a una variable, la cual debera estar declarada del tipo
        ' de objeto que estemos creando, en este caso sera cada uno de
        ' los elementos del arreglo formulario, a los cuales accederemos
        ' mediante su indice, en este caso utilizamos la variable num
        ' que ira tomando los valores 0, 1, 2, .... en cada iteración
        ' del ciclo, es decir en la primera iteración la sentencia se
        ' transformara a Set formulario(0) = New frmVentana, en la
        ' segunda a Set formulario(1) = New frmVentana y así sucesivamente
        Set formulario(num) = New frmVentana
        ' Ahora simplemente mostramos el formulario mediante el método
        ' show del objeto
        formulario(num).Show
    Next
End Sub
Este seria el codigo del CommandButton cmdSalir:

Código:
Private Sub cmdSalir_Click()
    If MsgBox("¿Esta seguro que desea salir?", vbYesNo + vbQuestion, "Atención") = vbYes Then
        Unload Me
    End If
End Sub
Bueno espero haber sido lo suficientemente claro, alomejor por ahi hay algunas cosa que no entiendas, te sujeriria que leyeras algo sobre estructuras de control, arreglos y un poco sobre Porgramación Orientada a Objetos, esto para entender los conceptos de objeto, instancia, propiedades, métodos, etc.

Última edición por Nightmare; 13/09/2008 a las 14:40