Se puede hace lo siguiente mediante un 'FOR'?

Iniciado por JungleBoogie, 16 Febrero 2006, 20:00 PM

0 Miembros y 1 Visitante están viendo este tema.

JungleBoogie

Hola muy buenas, tengo un 'problemilla'

Lo que me pasa es que quiero hacer unas acciones (que siempre son las mismas) pero el codigo queda MUY largo. Os lo explico:

Imaginad que tengo 16 Picture Boxes, nombrados segun su posicion en la pantalla (Fila, Columna), por ejemplo:
img0101, img0102, img0103, img0104
img0201, img0202, img0203, img0204
img0301, img0302, img0303, img0304
img0401, img0402, img0403, img0404

Al pulsar la tecla W (por poner un ejemplo, quisiera que cada fila cogiera la imagen de la fila de abajo, y lo tengo que hacer de la siguiente forma:

Private Sub Form_Keypress (KeyASCII as integer)
'Si la tecla presionada es 'W' o 'w' entonces:
If (KeyASCII = (87 Or 119)) Then
' Fila 1:
img0101.picture = img0201.picture
img0102.picture = img0202.picture
img0103.picture = img0203.picture
img0104.picture = img0204.picture

' Fila 2:
img0201.picture = img0301.picture
img0202.picture = img0302.picture
img0203.picture = img0303.picture
img0204.picture = img0304.picture

' Fila 3:
img0301.picture = img0401.picture
img0302.picture = img0402.picture
img0303.picture = img0403.picture
img0304.picture = img0404.picture

' La Fila 4 que se quede asi, no importa lo de esto =P
End If
End Sub


En vez de escribir un codigo tan largo, no se podria hacer algo parecido a lo siguiente?


Private Sub Form_Keypress (KeyASCII as integer)
if (KeyASCII = (87 Or 119)) Then
for Fila=1 to 3
for Col=1 to 4
SigFila = Fila + 1
imgFilaCol.picture = imgSigFilaCol.picture
Next
Next
End Sub


Se podria hacer algo por el estilo? Es que no es que sean 16 imagenes, he puesto 16 como ejemplo =P Y no es que solo sea pa mover las imagenes hacia arriba xD

Bueno, espero una respuesta, aunque sea un "No, no se puede hacer nada de eso"

Ale, Saludos ;)

Ironhorse

Lo que tenes que hacer es crear una matriz de controles, los nombras a todos igual y lo que le cambias es la propiedad Index. Asi los podes recorrer con un bucle:


Dim i as long
For i=0 to 15
  imgX(i).picture = imgY(i).picture
Next i


Pégense una vuelta por Cracton :)

JungleBoogie

o.0 Me he perdido en lo de crear una matriz de controles. Como se hace eso? Porke en batxiller no recuerdo haberlo dado (fue hace 2 años)

Ironhorse

Es facil, creas un control, lo copias y lo pegas, al pegarlo te va a preguntar si queres crear una matriz de controles, le pones que si y listo, a la segunda vez ya no te pregunta porque la matriz ya esta creada, si seguis pegando te agrega los controles a la matriz.

Saludos
Pégense una vuelta por Cracton :)

JungleBoogie

JuaS! Dicho asi parece facil. Esta misma noche me pongo a experimentar.

Gracias por tu ayuda ;)