elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Accion sobre un array de controles (labels)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Accion sobre un array de controles (labels)  (Leído 1,884 veces)
Güan

Desconectado Desconectado

Mensajes: 63



Ver Perfil
Accion sobre un array de controles (labels)
« en: 24 Diciembre 2006, 18:01 pm »

   Wenas a todos, vereis, eske estaba haciendo un juegecillo, donde un shape qe se mueve, y al tocar un label, "label1" (hay 20, index del 0 al 19) te salte un msgbox. Esto lo comprueba un timer con un interval de 1, y no me apetece escribir 20 codes iguales. Sin matriz, el code (para 1 label) sería:
Código:

Código:
Private Sub Timer1_Timer()
If Shape1.Top >= Label1.Top And Shape1.Top + Shape1.Height <= Label1.Top + Label1.Height Then
 If Shape1.Left >= Label1.Left And Shape1.Left + Shape1.Width <= Label1.Left + Label1.Width Then
  MsgBox "OK"
 End If
End If
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape1.Move X - 495 / 2, Y - 495 / 2
End Sub

Pero no tengo mucha idea sobre matrices de controles, y nose qe hay qe poner junto con label1 para qe funcione con todos por igual...
Sabeis como se haría?
Gracias


En línea

DrakoX

Desconectado Desconectado

Mensajes: 191



Ver Perfil
Re: Accion sobre un array de controles (labels)
« Respuesta #1 en: 24 Diciembre 2006, 18:11 pm »

podrias hacerlo con un For,
prueba de la siguiente manera
Código:
Private Sub Timer1_Timer()
For i = 0 To 19
    If Shape1.Top >= Label(i).Top And Shape1.Top + Shape1.Height <= Label(i).Top + Label(i).Height Then
        If Shape1.Left >= Label(i).Left And Shape1.Left + Shape1.Width <= Label(i).Left + Label(i).Width Then
            MsgBox "OK"
        End If
    End If
Next i
End Sub

salu2 y suerte

salu2


En línea

Güan

Desconectado Desconectado

Mensajes: 63



Ver Perfil
Re: Accion sobre un array de controles (labels)
« Respuesta #2 en: 24 Diciembre 2006, 18:21 pm »

mmm.... no, no me sirve, no me da error, pero ignora cuando pasa por encima...
el problema del codigo qe me has dado creo qe es qe el timer es unicamente de una milésima de segundo, y en cada milésima tiene qe comprobar los 10 uno a uno, por tanto aparte de qe senota qe se relentiza un poco, cada vex qe pasa una milésima, i pasa a ser 0 otra vez, por tanto no llega a comprobar las 20.

no se puede poner, por ejemplo label1(0 to 19).top , o algo asi?
tiene qe haber una forma mas facil, sin chapuzas... :rolleyes:
En línea

DrakoX

Desconectado Desconectado

Mensajes: 191



Ver Perfil
Re: Accion sobre un array de controles (labels)
« Respuesta #3 en: 24 Diciembre 2006, 18:41 pm »

t animas a pasarme el code,
así veo bien como tienes
el tema de los arrays

salu2
En línea

Güan

Desconectado Desconectado

Mensajes: 63



Ver Perfil
Re: Accion sobre un array de controles (labels)
« Respuesta #4 en: 24 Diciembre 2006, 18:50 pm »

Lo he vuelto a revisar, tenia un problema en la ecuación, para qe salte el mensaje cuando se toqen, tu codigo ya me funciona, qeda así:
Código:
Private Sub Timer1_Timer()
For i = 0 To 15
 If Shape1.Top > Label1(i).Top - Shape1.Height + 1 And Label1(i).Top + Label1(i).Height - 1 > Shape1.Top Then
  If Shape1.Left > Label1(i).Left - Shape1.Width + 1 And Label1(i).Left + Label1(i).Width - 1 > Shape1.Left Then
  MsgBox "OK"
  End If
 End If
Next
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Shape1.Move X - 495 / 2, Y - 495 / 2
End Sub
   Pero vamos, qe yo veo un poco chapuza tener qe ir contando todo el numero de labels hasta llegar al qe se toca cada 10 milesima de segundo (le he cambiado el intervalo de tiempo a 10, porqe sino en la 9 ya no saltaba nunca, y en la 8, solo a veces...
De todas formas tiene qe aver algo mas sencillo para hacerlo, pero de todos modos gracias por las respuestas
En línea

DrakoX

Desconectado Desconectado

Mensajes: 191



Ver Perfil
Re: Accion sobre un array de controles (labels)
« Respuesta #5 en: 24 Diciembre 2006, 18:58 pm »

yo no revise tu code ni nada,
simplemente te di una forma de hacerlo,

seguramente alla una forma mejor de hacerlo,
pero esto es lo que s eme viene a la kabeza

salu2
En línea

Güan

Desconectado Desconectado

Mensajes: 63



Ver Perfil
Re: Accion sobre un array de controles (labels)
« Respuesta #6 en: 25 Diciembre 2006, 22:26 pm »

   ei gentes, me ha surgido otro problemilla qe tiene qe ver con el codigo anterior.
   aver, yo qiero qe cuando el shape toqe un label cualqiera por la parte de arriba, el interruptor Xarr se encienda, y cuando no lo toqe, se apague. El codigo qe uso, aunqe para esto no me sirve es:
Código:
Private Sub Timer1_Timer()
Dim i As Integer
For i = 0 To 19
 If Shape1.Top <= Label1(i).Top + Label1(i).Height And Label1(i).Top <= Shape1.Top Then
  If Label1(i).Left <= Shape1.Left And Label1(i).Left + Label1(i).Width >= Shape1.Left + Shape1.Width Then
  Xarr = True
  else
  Xarr = False
  End If
 End If
Next
End Sub
   Esta vez la ecuación qe uso para qe avise cuando se tocan si qe esta bien (xDD, comprovada). El problema de este código es qe el interruptor solo se enciende cuando coinciden el shape el label de index, llamemoslo x. Como los labels estan esparcidos, no puede coincidir el shape con todos a la vez, por tanto el interruptor esta siempre apagado, nose si me explico. Bueno, aver si alguien me puede ayudar un pokillo con esto, porqe me faltan ideas.  :-X
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problemas con Labels y cadenas en C# « 1 2 »
.NET (C#, VB.NET, ASP)
dark_headhunter 12 10,873 Último mensaje 22 Diciembre 2010, 21:25 pm
por Edu
[SNIPPET-VB6] DrawGraph - Dibujar sobre controles.
Programación Visual Basic
F3B14N 0 1,645 Último mensaje 12 Marzo 2011, 14:48 pm
por F3B14N
Duda sobre una accion concreta en los Sims 3
Juegos y Consolas
crazykenny 4 3,050 Último mensaje 18 Noviembre 2012, 11:44 am
por crazykenny
Sobre controles creados de forma dinamica
.NET (C#, VB.NET, ASP)
rulovive 5 4,103 Último mensaje 28 Mayo 2018, 19:54 pm
por rulovive
Array de Controles con Eventos en VB.NET
.NET (C#, VB.NET, ASP)
bybaal 3 4,050 Último mensaje 20 Enero 2021, 06:50 am
por bybaal
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines