Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: Juan Luis López en Mayo 09, 2011, 11:27:00 pm
-
Hola a todos.
Tengo un problema que me está volviendo loco.
Tengo un modulo class [MiObjeto]
'Variables del objeto
Private rLeft As Long
Public Property Get Left() As Long
Left = rLeft
End Property
Public Property Let Left(ByVal vNewValue As Long)
rLeft = newValue
End Property
y en un form pongo:
Dim objeto As New MiObjeto
Private Sub Command2_Click()
objeto.Left = 200
MsgBox objeto.Left
End Sub
Y cuando hago click en el command button 2 me sale un msgbox pero que me dice "0" en vez de "200".
¿Qué está mal?
Gracias
-
'variables locales para almacenar los valores de las propiedades
Private mvarxLeft As Long 'copia local
Public Property Let Left(ByVal vData As Long)
'se usa al asignar un valor a la propiedad, en la parte izquierda de una asignación.
'Syntax: X.xLeft = 5
mvarxLeft = vData
End Property
Public Property Get Left() As Long
'se usa al recuperar un valor de una propiedad, en la parte derecha de una asignación.
'Syntax: Debug.Print X.xLeft
Left = mvarxLeft
End Property
Private obj As New MiObjeto
Private Sub main()
Set obj = New MiObjeto
obj.Left = 522
Debug.Print obj.Left
Set obj = Nothing
End Sub
proba asi haber si te sirve...
-
Gracias me sirvió (El error estaba en que cambiaba la variable vNewValue y al hacer el GET buscaba newValue XD).
Ahora tengo un problemilla con mi clase.
-------------------------------------------------------------------------
Clase-> GameObject
Propiedaddes:
Top, Left, Width, Height (Funcionan correctamente).
Ahora quiero crear otra propiedad de tipo RECT que se llame Collider.
'**************************************************************
'Clase GameObject
'Propiedades:
'Top, Left, Height, Width, Collider
'**************************************************************
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
'Variables locales para almacenar los valores de las propiedades
Private mvarLeft As Long
Private mvarTop As Long
Private mvarWidth As Long
Private mvarHeight As Long
Private mvarCollider As RECT
Public Property Let Left(ByVal vData As Long)
mvarxLeft = vData
End Property
Public Property Get Left() As Long
Left = mvarxLeft
End Property
Public Property Get Top() As Long
Top = mvarTop
End Property
Public Property Let Top(ByVal vData As Long)
mvarTop = vData
End Property
Public Property Get Width() As Long
Width = mvarWidth
End Property
Public Property Let Width(ByVal vData As Long)
mvarWidth = vData
End Property
Public Property Get Height() As Long
Height = mvarHeight
End Property
Public Property Let Height(ByVal vData As Long)
mvarHeight = vData
End Property
Public Property Get Collider() As RECT
Collider = mvarCollider
End Property
Private Property Let Collider(ByVal vData As RECT)
End Property
Me tira un error:
(http://img121.imageshack.us/img121/2251/nuevaimagendemapadebitsfr.png) (http://imageshack.us/photo/my-images/121/nuevaimagendemapadebitsfr.png/)
No me deja meter un RECT como propiedad.
Además quiero que cuando se cambie una de las propiedades del objeto (top, left, width o height) la propiedad Collider se actualice y que el rectangulo ocupe:
collider.top= obj.top
collider.left= obj.left
collider.bottom= obj.top+obj.height
collider.right= obj.left+obj.width
Pero a esto no he conseguido llegar aun porque no puedo usar el RECT como propiedad.
He cambiado la propiedad collider a private pero quiero acceder a ella desde otros modulos y además tampoco me deja.
Alguna idea?
Gracias
-
puede ser que me mande cualkiera, pero fijate si cambiando esto vah
Private Type RECT
por:
Public Type RECT
PD: la imagen que pusiste no se ve, osea si uno no eta logeado en ImagesHack no puede visualizar las imagenes hosteadas en sus servidores...