Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: zXxOsirisxXz en 17 Enero 2008, 01:33 am



Título: index * objects
Publicado por: zXxOsirisxXz en 17 Enero 2008, 01:33 am
Hola Foro el hacker. :D

Yo aki, estoy cansado de buscar por varios dias en google, pk no se como seria lo k estoy buscnado exactamente.

Al punto:

Lo k quiero es.. saber alguna forma de facilitarme la vida para los botones. Por ejemplo.

Citar
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Image41.Visible = True
Image42.Visible = False
Image43.Visible = True
Image44.Visible = False
Image1.Visible = True
Image2.Visible = True
Image3.Visible = True
Image4.Visible = True
Image5.Visible = True
Image6.Visible = True
Image7.Visible = True
Image8.Visible = True
Image9.Visible = True
Image10.Visible = True
Image11.Visible = True
Image12.Visible = True
Image13.Visible = True
Image14.Visible = True
Image15.Visible = True
Image16.Visible = True
Image17.Visible = True
Image18.Visible = True
Image19.Visible = True
Image20.Visible = True
Image21.Visible = False
Image22.Visible = False
Image23.Visible = False
Image24.Visible = False
Image25.Visible = False
Image26.Visible = False
Image27.Visible = False
Image28.Visible = False
Image29.Visible = False
Image30.Visible = False
Image31.Visible = False
Image32.Visible = False
Image33.Visible = False
Image34.Visible = False
Image35.Visible = False
Image36.Visible = False
Image37.Visible = False
Image38.Visible = False
Image39.Visible = False
Image40.Visible = False
End Sub

Eso es un codigo de un programa k tengo por ahi.. pero..

Lo k quiero es.. para facilitarme la vida.

Osea en ves de tantos false, false false...

algo como un..

Citar
For i = 1 to 40
image(i).visible = false
Next i

asi todas del 1 al 40, seran false..
Pero, no funciona de esa manera.

Por favor, alguien k pueda ayudarme, le agraderia el favor.

Gracias.

-XxOsirisxX


Título: Re: index * objects
Publicado por: foobar en 17 Enero 2008, 03:12 am
Crea una matriz de controles. Para eso cuando crees los controles en el formulario, debes asignarle a cada control el mismo nombre, entonces automáticamente VB crea un array de objetos, y se le asignará un índice a cada uno (propiedad Index). Luego, es simplemente recorrer los controles como un array común:

Código
  1. Private Sub Form_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
  2.  For i = 1 to 40
  3.    image(i).visible = false
  4.  Next
  5. End Sub
  6.  

image sería el nombre de todos los controles.

Bytez.


Título: Re: index * objects
Publicado por: cassiani en 17 Enero 2008, 03:25 am
 Lo que tienes que hacer es crear una matriz de controles, para ello tenes que agregar el control al formulario (image1 por ejemplo) despues de agregado, lo copias y lo vuelves a pegar en el mismo form y os aparecerá un mensaje diciendo "Ya existe un control llamado 'image1'. ¿Desea crear una matriz de controles?" aceptas y ya la tienes lista, despues te servira el code que colocastes antes...

¡s4lu2!


Título: Re: index * objects
Publicado por: zXxOsirisxXz en 17 Enero 2008, 04:10 am
Gracias por responder.. pero me da error.. estan seguro k funciona asi??

Me da error..

"Invalid Qualifiquer"

I me señala el Image


Título: Re: index * objects
Publicado por: CamaleonB en 17 Enero 2008, 04:26 am
Código:

postea el nuevo codigo, se supone que se debe ver algo como image(i).visible=false



Título: Re: index * objects
Publicado por: zXxOsirisxXz en 17 Enero 2008, 04:42 am
Código:

postea el nuevo codigo, se supone que se debe ver algo como image(i).visible=false


El codigo k me dieron.. es este..

Citar
Private Sub Form_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)  For i = 1 to 40    image(i).visible = false  NextEnd Sub

Pero este contine Index As Integer y eso me da error en ese evento, asi k lo use donde lo hace por default.. En el buton de imagen, almenos pa probar.

Y puse

Citar
Private Sub Image1_Click (Index As Integer)
 For i = 1 to 40
  image(i).visible = false 
Next i
End Sub

Gracias.


Título: Re: index * objects
Publicado por: cassiani en 17 Enero 2008, 14:20 pm
Citar
Private Sub Image1_Click (Index As Integer)
 For i = 1 to 40
  image(i).visible = false
Next i
End Sub

A todas estas no se cual es el nombre del control que usas (al que convertistes en arreglo), ¿es Image1 o Image? recuerda que cada copia del arreglo sustituirá a los otros controles image que tenias en tu form, por lo tanto, si ya no vas a utilizar los otros 40 image's que tenias en el form, ¡os recomiendo que los suprimas!

Código
  1. Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  2.    For I = 0 To 10
  3.        Image1(I).Visible = False
  4.    Next
  5. End Sub
  6.  

 ¡Fijate! acá en este form solo tengo un arreglo de Image (unos 11), al pasar el mouse desaparecen, ¡no tiene porque darte error!

Edit: http://www.canalvisualbasic.net/inicio/tutor_6.asp (http://www.canalvisualbasic.net/inicio/tutor_6.asp)


Título: Re: index * objects
Publicado por: zXxOsirisxXz en 17 Enero 2008, 18:14 pm
Citar
Private Sub Image1_Click (Index As Integer)
 For i = 1 to 40
  image(i).visible = false
Next i
End Sub

A todas estas no se cual es el nombre del control que usas (al que convertisteis en arreglo), ¿es Image1 o Image? recuerda que cada copia del arreglo, sustituirá a los otros controles image que tenias en tu form, por lo tanto, si ya no vas a utilizar los otros 40 image's que tenias en el form, ¡os recomiendo que los suprimas!

Código:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    For I = 0 To 10
        Image1(I).Visible = False
    Next
End Sub

 ¡Fijete! acá en este form, solo tengo un arreglo de Image (unos 11), al pasar el mouse desaparecen, ¡no tiene porque darte error!

Edit: http://www.canalvisualbasic.net/inicio/tutor_6.asp (http://www.canalvisualbasic.net/inicio/tutor_6.asp)



jajaja

Eso era xD

Puse image (i) enves de Image1(i), algo torpe de mi parte :P

Muchisimas gracias Cassini!!

te lo agradezco, me funciono el codigo de maravilla ;)