Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Visual Basic clásico (http://www.forosdelweb.com/f69/)
-   -   Matriz de controles, problemas al elminar (http://www.forosdelweb.com/f69/matriz-controles-problemas-elminar-372705/)

LeandroA 20/02/2006 18:39

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

LeandroA 20/02/2006 21:38

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

alvmet 15/03/2006 16:53

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!


La zona horaria es GMT -6. Ahora son las 05:41.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.