Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Matriz de controles, problemas al elminar

Estas en el tema de Matriz de controles, problemas al elminar en el foro de Visual Basic clásico en Foros del Web. Hola tengo un problema con arrays, yo estoy creando una matris de commandbuttons lo cuales los creo y los alineo uno al lado del otro ...
  #1 (permalink)  
Antiguo 20/02/2006, 18:39
 
Fecha de Ingreso: abril-2005
Mensajes: 351
Antigüedad: 19 años
Puntos: 3
Matriz de controles, problemas al elminar

Hola tengo un problema con arrays, yo estoy creando una matris de commandbuttons lo cuales los creo y los alineo uno al lado del otro en tiempo de ejecucion con un "for i ="
bien hasta hay todo bien el problema es que cuando elimino un y quiero volver a alinear los que quedan uno al lado del otro (pegaditos) ya no lo puedo alinear mas de esta manera, porque me da el error de que la matriz x no existe, entonses alguien conose una forma "elegante" de solucionar esto

eso es lo que tengo:

Cita:
Private Sub Form_Load()
For i = 1 To 10
Load Cmd(i)
Cmd(i).Visible = True
Next
Alinear
End Sub
Sub Alinear()
'El Cmd(0) no lo uso,esta invisible
For i = 1 To Cmd.Count - 1
Cmd(i).Left = Cmd(i - 1).Left + Cmd(0).Width
Next
End Sub

Private Sub Cmd_Click(Index As Integer)
Unload Cmd(Index)
Alinear
End Sub

Por las dudas aclaro,
pregunta (poque no descargar todos y cargar 9 en ves de 10)
Respuesta (porque esto lleva un pequeño tiempo,y no me sirve)


Bueno muchas gracias
y saludos
  #2 (permalink)  
Antiguo 20/02/2006, 21:38
 
Fecha de Ingreso: abril-2005
Mensajes: 351
Antigüedad: 19 años
Puntos: 3
Solucionado , ya me havia puesto los pelos de punta

quedo asi:
Cita:
Option Explicit
Private Sub Form_Load()
Dim i As Integer
Me.Show
Cmd(0).Visible = False
For i = 1 To 10
Load Cmd(i)
Cmd(i).Visible = True
Cmd(i).Caption = i
Next
Comprovar
End Sub
Sub Comprovar()
Dim i As Integer, x As Integer
For i = 1 To Cmd.UBound
If Existe(i) Then
x = x + 1
Alinear i, Cmd(0).Width * (x - 1)
End If
Next
End Sub
Sub Alinear(Index As Integer, XLeft As Long)
Cmd(Index).Left = XLeft
End Sub
Private Sub Cmd_Click(Index As Integer)
Unload Cmd(Index)
Comprovar
End Sub
Private Function Existe(Index As Integer) As Boolean
On Error GoTo NoExiste
If Cmd(Index).Visible = True Then Existe = True
Exit Function
NoExiste:
Existe = False
End Function
Private Sub ComAgregar_Click()
Load Cmd(Cmd.UBound + 1)
Cmd(Cmd.UBound).Visible = True
Cmd(Cmd.UBound).Caption = Cmd.UBound
Comprovar
End Sub
  #3 (permalink)  
Antiguo 15/03/2006, 16:53
 
Fecha de Ingreso: octubre-2005
Ubicación: Montevideo, Uruguay
Mensajes: 14
Antigüedad: 18 años, 7 meses
Puntos: 0
Podrias borrar un boton, y mover el ultimo del array a la posicion donde este estaba, asi no tendras problemas de tiempo de ejecucion ni de que ese casillero que borraste quede libre.

Saludos!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:52.