Ayuda,por favor!!

naveguito
09 de Enero del 2004
Hola a todos,querria saber como puedo hacer para crear objetos(Data y un DBGrid) en tiempo de ejecucion,yo tengo lo siguiente:

Function Objetos()
Dim Num As Integer
Num = UBound(Data)
Load Data(Num + 1)
End Function

Pero no me funciona me da:"Varible no definida" y lo marca en: Num = UBound(Data)

Muchas gracias

reventador
09 de Enero del 2004
hola naveguito,

si lo que quieres hacer es una matriz dinamica de controles debes tener en el form un control Data y DBGrid con su propiedad Index a 0.

Si lo que quieres es que esos controles también sean creados en tiempo de ejecucion deberás declararlo en la zona de declaraciones del form o bien de manera global en algún modulo. La declaración sería así:

Dim controlData(0) As New Data
Dim controlGrid(0) As New DBGrid


Un saludo

naveguito
09 de Enero del 2004
Hola reventador lo que quiero hacer es lo siguiente tengo x tablas en access que representan a x marcas,para evitar tener que modificar el programa cada vez que tenga un nueva marca,quiero permitir al usuario meter marcas,tanto el data como el dbgrid son matrices pero no estan desde cero,no se si me explico bien,puedo ir aumentando controles a medida que los requiera.Ahora mismo tengo 5 y mañana le aumento 1 y pasado 2 etc

reventador
09 de Enero del 2004
hola naveguito, creo que te entiendo. Tienes en el formulario creados en tiempo de diseño 5 controles data y 5 controles dbgrid, (5 por poner un ejemplo).
Estos controles son 2 matrices cuyas propiedades Index van de 0 a 4 y cuyo nombre es por ejemplo: nombreData y nombreGrid.

En principio, el procedimiento válido para crear un par de nuevos controles en tiempo de ejecución sería este:

Sub Objetos()
Dim Num As Integer
Num = UBound(nombreData)
Load nombreData(Num + 1)
Load nombreGrid(Num + 1)
End Sub

Pruebalo a ver si te funciona, un saludo

naveguito
09 de Enero del 2004
Ya lo hice y no funciona tengo el siguiente código desde un principio:

Function Objetos()
Dim Num As Integer
Num = UBound(Data)
Load Data(Num + 1)
End Function

Me da error al llegar a Num = UBound(Data) me dice que la variable(Data) no esta definida,realmente no se como puedo hacer

P.D:Los objetos que quiero que me incorpore en tiempo de ejecucion,quiero que se creen en un formulario distinto a el que estoy.Saludos y muchas gracias

naveguito
09 de Enero del 2004
Data es el nombre del control data

reventador
09 de Enero del 2004
hola naveguito,

entonces es posible que al tener en otro formulario esa "funcion" Objetos(), no sepa lo que es Data porque quizá lo tienes declarado en el otro form.´, posiblemente si lo hicieras Public y desde esta funcion te refieres a el de esta forma: Form.Data
es posible que te deje.

Otra cosa es que nunca he probado a tener en diferentes forms controles de una misma matriz dinamica. Me imagino que si la matriz está creada toda en tiempo de ejecucion y de manera global no haya problema, pero si se ha hecho parte en tiempo de diseño seguramente debas plantearte otra estrategia.

Un saludo

Baltasar
09 de Enero del 2004
Y ese control data llamado Data tiene su propiedad index con valor 0 ?
Debe tener valor 0 para que sea una matrix dinámica.