Visual Basic - Generar controles

Life is soft - evento anual de software empresarial
 
Vista:

Generar controles

Publicado por SkraK (4 intervenciones) el 19/10/2005 17:38:17
Hola que tal.
Hace tiempo que realizé esta pregunta, ahora voy a intentarlo de nuevo con mas detalle a ver si me explico mejor.

Estoy intentando crear controles en tiempo de ejecución, en algunos casos se generan bien pero tengo alguna limitaciones.

Una limitación es que si genero un TextBox necesito que este control tenga la propiedad Multiline=true ya que esta propiedad es de solo lectura y no se puede cambiar en tiempo de ejecución.

Otra limitación es que puedo crear un CommandButton pero solo con la propiedad Style=Normal (no gráfico).
Si lo genero de la manera...
Dim WithEvents nombre As CommandButton
Set nombre = formulario.Controls.Add("VB.CommandButton","nombre",formulario)
funciona perfectamente, pero qué hay que hacer para que sea una matriz de botones.
Con el siguiente código no funciona
Dim WithEvents nombre(0 to N) As CommandButton
Set nombre = formulario.Controls.Add("VB.CommandButton","nombre",formulario)
Porque, aunque genera los controles, no responden a los eventos (por ejemplo el Click)

Hay otros casos que no puedo generar controles porque desconozco su progrID.
Estos objetos son:
ImageList, ToolBar, ProgressBar,

Gracias por vuestra ayuda

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
sin imagen de perfil

RE:Generar controles

Publicado por Christian Rodriguez O. (54 intervenciones) el 22/10/2005 03:31:37
Ejemplo:

Crea un formulario nuevo y agrega dos botones
con los siguientes nombres

cmdNew ---> debe tener la propiedad Index a 0 (Cero), con eso hacemos que pase a ser una matriz de controles.
Este será el control que servirá de base a los que se crearan en tiempo de ejecucion

Command1 --> este solo sirve para crear los controles en tiempo de ejecucion

Con es te codigo del Boton Command1 creamos controles en tiempo de ejecucion

Private Sub Command1_Click()
Static cont As Integer
cont = cont + 1
Load cmdNew(cont)
cmdNew(cont).Visible = True
cmdNew(cont).Top = 0
cmdNew(cont).Caption = "Boton " & cont
If cont = 1 Then
cmdNew(cont).Left = 0
Else
cmdNew(cont).Left = cmdNew(cont - 1).Left + cmdNew(cont - 1).Width
End If
End Sub

Con este otro codigo, al hacer click en cada Boton creado, podemos visualizar en Indice(Index) del mismo

Private Sub cmdNew_Click(Index As Integer)
MsgBox Index
End Sub

-----------------------------------
Si hay propiedades que no puedes cambiar en tiempo de ejecucion, debes crear un control para cada opcion

Por ejemplo, yo estoy haciendo un programa para diseñar aplicaciones Java. Para eso creo y diseño la pantalla que deseo agregando controles, y me paso lo mismo, debia crear un TextField y un TextArea, entonces hice dos controles TextBoxs de Visual, y uno lo hice normal, para representar al TextField de Java, y al otro le di Multiline, y tamaño mas alto, y asi represento al TextArea.

Espero te ayude, adios
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