Creo q es bastante claro:
Cómo puedo crear un textbox al pinchar sobre un botón?
| |||
No me vale ponerlo a false y despues mostrarlo pq tengo q hacer un bucle y crear distintos textbox dependiendo de cuantas veces de repita el bucle. He encontrado esto por ahi: Hasta Visual Basic 5.0 si se quería añadir un control a un formulario se utilizaba la función Load, que permitía añadir un control a un array ya existente. Esta limitación se ha eliminado de Visual Basic 6.0, y ya es posible añadir y borrar controles a la colección "Controls", sin necesidad de que exista un array ya creado. Además, el nuevo control puede responder a eventos si se define con la palabra "WithEvents". Como muestra, un sencillo ejemplo que crea un botón y se añade código al evento: Dim WithEvents cmdObj1 As CommandButton Private Sub cmdObj1_Click() MsgBox "Esto es un control dinámico" End Sub Private Sub Form_Load() Set cmdObj1 = Form1.Controls.Add("VB.CommandButton", "cmdBoton1") cmdObj1.Caption = "Púlsame" cmdObj1.Left = 1500 cmdObj1.Top = 1000 cmdObj1.Visible = True End Sub Private Sub Form_Unload(Cancel As Integer) Form1.Controls.Remove "cmdBoton1" End Sub pero mi vb no me da la opcion de poner form1.controls.add solo me deja poner form1.controls Pq puede ser? me falta algun componente? alguien sabe cual es? |
| |||
ok, miré las faqs y esto fue lo q encontré: Option Explicit Private numControles As Long Private Sub cmdCrear_Click() 'Crear un nuevo control de cada tipo'numControles está declarada a nivel de módulo numControles = numControles + 1 'Crear los controles Load Label1(numControles) Load Text1(numControles) 'Posicionarlos y hacerlos visibles With Label1(numControles) .Visible = True .Top = Label1(numControles - 1).Top + .Height + 120 .Caption = "Label1(" & numControles & ")" End With With Text1(numControles) .Visible = True .Top = Text1(numControles - 1).Top + .Height + 60 .Text = "Text1(" & numControles & ")" End With End Sub copié el codigo en un formulario nuevo y creé un botón al que llamé cmdCrear, pero al ejecutar el programa y pulsar en el botón me dice procedimiento sub o función no definido, y me marca de amarillo la primera linea de la funcion y despues esto: Load Label1(numControles) Si añado estas 2 lineas de codigo: Private Label1 As Label Private Text1 As TextBox el error que me da es 'numero de argumentos erróneo o asignación de propiedad no válida'. Aunque sinceramente, no creo q poner esto sea necesario, ya que he quitado el option explicit. |
| |||
Cita: debes tener un control label con index (0) en el form
Iniciado por Jennifer_munn ok, miré las faqs y esto fue lo q encontré: Option Explicit Private numControles As Long Private Sub cmdCrear_Click() 'Crear un nuevo control de cada tipo'numControles está declarada a nivel de módulo numControles = numControles + 1 'Crear los controles Load Label1(numControles) Load Text1(numControles) 'Posicionarlos y hacerlos visibles With Label1(numControles) .Visible = True .Top = Label1(numControles - 1).Top + .Height + 120 .Caption = "Label1(" & numControles & ")" End With With Text1(numControles) .Visible = True .Top = Text1(numControles - 1).Top + .Height + 60 .Text = "Text1(" & numControles & ")" End With End Sub copié el codigo en un formulario nuevo y creé un botón al que llamé cmdCrear, pero al ejecutar el programa y pulsar en el botón me dice procedimiento sub o función no definido, y me marca de amarillo la primera linea de la funcion y despues esto: Load Label1(numControles) Si añado estas 2 lineas de codigo: Private Label1 As Label Private Text1 As TextBox el error que me da es 'numero de argumentos erróneo o asignación de propiedad no válida'. Aunque sinceramente, no creo q poner esto sea necesario, ya que he quitado el option explicit. |