Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Necesito ayuda con vb 6.0

Estas en el tema de Necesito ayuda con vb 6.0 en el foro de Visual Basic clásico en Foros del Web. Hola, bueno miren mi duda es esta, yo estoy haciendo un codigo al que con las flechitas puedo mover un SHAPE x la pantalla eso ...
  #1 (permalink)  
Antiguo 22/03/2008, 22:10
 
Fecha de Ingreso: marzo-2008
Mensajes: 6
Antigüedad: 16 años, 1 mes
Puntos: 0
Necesito ayuda con vb 6.0

Hola, bueno miren mi duda es esta, yo estoy haciendo un codigo al que con las flechitas puedo mover un SHAPE x la pantalla eso ta todo bien, pero cuando llega un cierto limite q sobrepasa la ventana osea el (FORM) y yo quiero hacer que no pase desde el form

este es el codigo que hize :
__________________________________________________ _
Option Explicit
Private Sub Form_keydown(Keycode As Integer, Shift As Integer)
If Keycode Then
Select Case Keycode

Case vbKeyUp
Call Arriba
Case vbKeyDown
Call abajo
Case vbKeyRight
Call derecha
Case vbKeyLeft
Call izquierda
End Select
End If
End Sub

Sub Arriba()
P.Top = P.Top - "0,5"
End Sub

Sub abajo()
P.Top = P.Top + "0,5"
End Sub
Sub derecha()
P.Left = P.Left + "0,5"
End Sub
Sub izquierda()
P.Left = P.Left - "0,5"
End Sub
____________________________
_____________________

La escala del form esta echa a CM.
y tambien necesito que si me pueden explicar, suponete yo agreo un shape mas, pero q el primer shape no lo superponga.

osea cuando me acerco con el SHAPE1 al SHAPE2 NO LO SOBRE PASE x arriba que se frene al rozar cone l shape2

=$ eso solito presiso =$

espero q me puiedan ayudar :$:$:$:$

suerte!

y espero respuestas rapidito a ree :)


.Lucas
  #2 (permalink)  
Antiguo 23/03/2008, 10:29
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Re: Necesito ayuda con vb 6.0

Hola,bueno para que no se pase del limite del form ,solo hay que comprobar la posicion del shape y decirle que si esta igual que el limite ,entocnes que no haga nada,algo asi:

Código:
Sub Arriba()
If p.Top <= 0.5 Then p.Top = 0.5
p.Top = p.Top - "0,5"
End Sub
ponele ese codigo a cada sub que usas,y para el de los costados,pues no se cuanto mide el form,pero podes hacer una comprobacion de en que posicion se encuentra el shape y si se pasa de tal cordenada......

y para lo otro ,podes usar una api que se llama IntersectRect() se usa para comprobar coliciones entre objetos(cuadrados) y ahi lo podes detectar y hacer que hago lo que vos quieras,si no encontras nada yo te paso un eejmplo,pero primero busca...

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #3 (permalink)  
Antiguo 23/03/2008, 18:23
 
Fecha de Ingreso: marzo-2008
Mensajes: 6
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Necesito ayuda con vb 6.0

mira la primer me funciono, pero dps busque ejemplos de Intersectrect() y los ejemplos me daban errores :S... osea no consigo ejemplos para lo que yo quiero :S

busque busque pero solo muestra q kiere decir IntersectRect()

suerte

y gracias x la primera data :D

.Lucas
  #4 (permalink)  
Antiguo 23/03/2008, 18:37
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Re: Necesito ayuda con vb 6.0

bueno te pongo un ejemplo,¿pero de que forma son los shapes? ¿redondos,cuadrados? porque intersectrect() funcionaria bien si son cuadrados...
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #5 (permalink)  
Antiguo 23/03/2008, 22:36
 
Fecha de Ingreso: marzo-2008
Mensajes: 6
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Necesito ayuda con vb 6.0

son cuadrados medidas 1 x 1 para hacerlo mas facil.
  #6 (permalink)  
Antiguo 25/03/2008, 17:02
 
Fecha de Ingreso: marzo-2008
Mensajes: 6
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Necesito ayuda con vb 6.0

seba son cuadrados
  #7 (permalink)  
Antiguo 25/03/2008, 17:38
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Re: Necesito ayuda con vb 6.0

estaba ocupado no pude responder,pero seria algo asi ,y sin apis:

Código:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim pic1Left As Integer, pic1Top As Integer, pic1Right As Integer, pic1Bottom As Integer, pic2Left As Integer, pic2Top As Integer, pic2Right As Integer, pic2Bottom As Integer
Dim topBetween As Boolean, bottomBetween As Boolean, leftBetween As Boolean, rightBetween As Boolean
Select Case KeyCode
Case vbKeyUp
Call Arriba
Case vbKeyDown
Call abajo
Case vbKeyRight
Call derecha
Case vbKeyLeft
Call izquierda
End Select
pic1Left = p.Left
pic1Right = p.Left + p.Width
pic1Top = p.Top
pic1Bottom = p.Top + p.Height
pic2Left = Shape2.Left
pic2Right = Shape2.Left + Shape2.Width
pic2Top = Shape2.Top
pic2Bottom = Shape2.Top + Shape2.Height
If pic1Left >= pic2Left And pic1Left <= pic2Right Then
leftBetween = True
End If
If pic1Right >= pic2Left And pic1Right <= pic2Right Then
rightBetween = True
End If
If pic1Top >= pic2Top And pic1Top <= pic2Bottom Then
topBetween = True
End If
If pic1Bottom >= pic2Top And pic1Bottom <= pic2Bottom Then
bottomBetween = True
End If
If leftBetween = True Or rightBetween = True Then
If topBetween = True Or bottomBetween = True Then
MsgBox "colision"
Unload Me
End If
End If
End Sub

Sub Arriba()
p.Top = p.Top - 0.5
End Sub

Sub abajo()
p.Top = p.Top + 0.5
End Sub

Sub derecha()
p.Left = p.Left + 0.5
End Sub

Sub izquierda()
p.Left = p.Left - 0.5
End Sub
suponiendo que tenes un shape llamado "p" y el otro llamado "Shape2"..

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #8 (permalink)  
Antiguo 26/03/2008, 20:42
 
Fecha de Ingreso: marzo-2008
Mensajes: 6
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Necesito ayuda con vb 6.0

Grax seba sos un CAPOO!!!


suerte :D:D Y MIL GRACIELAS :D
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:53.