Retroceder   Foros del Web > Temas generales de computación > Programación > Visual Basic

Respuesta
 
Herramientas Desplegado
Antiguo 20-feb-2006, 17:39   #1 (permalink)
LeandroA ha deshabilitado el karma
 
Fecha de Ingreso: abril-2005
Mensajes: 301
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 está desconectado   Responder Citando
Antiguo 20-feb-2006, 20:38   #2 (permalink)
LeandroA ha deshabilitado el karma
 
Fecha de Ingreso: abril-2005
Mensajes: 301
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
LeandroA está desconectado   Responder Citando
Antiguo 15-mar-2006, 15:53   #3 (permalink)
alvmet ha deshabilitado el karma
 
Fecha de Ingreso: octubre-2005
Mensajes: 8
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!
alvmet está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 18:56.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93