Acceder A Array Desde Otro Sub(Solucionado)


Objetivo: Acceder A Array Desde Otro Sub(Solucionado)
Hola, necesito acceder a un arrray de textbox desde un procedimiento diferente al que los creo, en el mismo formulario.
Este el còdigo que los crea:
-------------------------------Creacion de la matriz de texbox
matrizObjetos = NEW Object[]

'-------------------------------Numero de texbox
FOR x = 1 TO largoCadena
'--------------------------------Creacion de los textbox
textbox = NEW TextBox(ME)
label = NEW label(ME)
'--------------------------------------Posicionamiento de los textbox
textbox.X = (x * 10 + x) * 2.5 + 2
textbox.Y = 200
textbox.width = 20
textbox.height = 40
textbox.visible = TRUE
label.x = (x * 10 + x) * 2.5 + 2
label.y = 250
label.Width = 20
label.Height = 5
label.Background = Color.Black

'-------------------------------------------Lectura de los caracteres de la cadena
'y colocacion en los textbox.
caracter = Mid(cadenaCompleta, x, 1)
textbox.Text = caracter
matrizObjetos.Add(textbox, x)
'--------------------------------------------bloquearlos textbox para que el usuario no pueda
' escribir en ellos
textbox.Enabled = FALSE
'-------------------------------------------comprobar si es espacio vacìo y cambiar color de fondo
' ------------------------------------------en caso contrario hacer el textbox invisible
IF textbox.text = " " THEN
textbox.Background = Color.Blue
ELSE
textBox.Visible = FALSE

END IF
NEXT
END IF



Cada vez que intento acceder a ellos desde otro sub me da errores (NOT an objet) u objet null.
O sea, todo en el mismo formulario, en dos procedimientpos diferentes.
Gracias desde ya por la ayuda que puedan prestarme.
Espero pronto poder a mi vez ayudar a otros.
Saludos
P.D gambas 2.19,ubuntu 10.04

última edición por Dani26 el Miercoles, 16 Junio 2010, 03:19; editado 2 veces
Objetivo: Re: Acceder A Array Desde Otro Sub
Hola.

En este codigo le asignas el evento Mostrar a cada textbox que se crea, y que se llamará al hacer doble clic sobre cada uno de ellos.

' gambas class file
PRIVATE matrizObjetos AS Object[]
PRIVATE inicializado AS Boolean

PUBLIC SUB Form_Open()
DIM textbox AS TextBox
DIM pelicula AS String[]
DIM partesCadena AS String
DIM cadenaCompleta AS String
DIM largoCadena AS Integer
DIM x AS Integer
DIM caracter AS String
DIM label AS label
'------------------------------Cambiar el nombre de la pelicula
DIM nombrePelicula AS String = "Harry Potter y el principe mestizo"

'------------------------------- dividir caracteres
pelicula = Split(nombrePelicula)

'--------------------------------Juntar nombre pelicula
FOR EACH partesCadena IN pelicula
cadenaCompleta = cadenaCompleta & partesCadena
NEXT

'------------------------------Tomar largo pelicula
largoCadena = Len((cadenaCompleta))

IF NOT inicializado THEN
'-------------------------------Creacion de la matriz de texbox
matrizObjetos = NEW Object[]
'-------------------------------Numero de texbox
FOR x = 1 TO largoCadena
'--------------------------------Creacion del textbox con el evento "Mostrar"
textbox = NEW TextBox(ME) AS "Mostrar"
'--------------------------------------Creacion de las etiquetas
label = NEW label(ME)
'--------------------------------------Posicionamiento de los textbox
textbox.X = (x * 10 + x) * 5 + 2
textbox.Y = 200
textbox.width = 40
textbox.height = 60
'------------------------Asigna un numero correlativo a cada textbos para identificarlos
textbox.tag = x
label.x = (x * 10 + x) * 5 + 2
label.y = 270
label.Width = 40
label.Height = 5
label.Background = Color.Black
'-------------------------------------------Lectura de los caracteres de la cadena
'y colocacion en los textbox.
caracter = Mid(cadenaCompleta, x, 1)
textbox.Text = caracter
matrizObjetos.Add(textbox, x)
NEXT
END IF
END

PUBLIC PROCEDURE Mostrar_Dblclick()
'===============================================================
'PROPOSITO PROCEDURE: Al hacer doble click sobre cada textbox
'se muestra su numero correlativo de tag
'===============================================================
DIM y AS Integer
y = LAST.tag
Message(Str(y))
END

Perfil MP  
Objetivo: Re: Acceder A Array Desde Otro Sub
Hola, quizàs no me expresé bien. Lo que necesito es acceder al contenido de los textbox para compararlos uno a uno con el texbtbox donde el usuario coloca la letra elegida.
En visual basic lo hacía así
Public Sub tiraletra()
buena = False
If TIRARLETRA = "" Then
TIRARLETRA.SetFocus
Exit Sub
End If
List1.AddItem TIRARLETRA.Text
For contador = 1 To 30
If TIRARLETRA.Text = TXTLETRA(contador).Text Then
If TXTLETRA(contador).Visible = False Then
TXTLETRA(contador).Visible = True
MARCADOR.Caption = MARCADOR.Caption - 1
buena = True
If TXTLETRA(contador).Text = " " Then
TXTLETRA(contador).BackColor = vbBlack
End If

End If
End If

Next contador
TIRARLETRA.Text = ""
TIRARLETRA.SetFocus
If buena = False Then
errores = errores - 1
If errores = 5 Then
Image1.Picture = LoadPicture(App.Path & "\uno.bmp")
ElseIf errores = 4 Then
Image1.Picture = LoadPicture(App.Path & "\dos.bmp")
ElseIf errores = 3 Then
Image1.Picture = LoadPicture(App.Path & "\tres.bmp")
ElseIf errores = 2 Then
Image1.Picture = LoadPicture(App.Path & "\cuatro.bmp")
ElseIf errores = 1 Then
Image1.Picture = LoadPicture(App.Path & "\cinco.bmp")

End If

End If

Donde contador es el numero de cada control en la matriz txtletra (matriz estàtica) .

Objetivo: Re: Acceder A Array Desde Otro Sub
Hola.

1) Agrega un textbox a tu formulario.
2) Dentro de su evento keypress, añade el código que te anexo.

' gambas class file
PRIVATE matrizObjetos AS Object[]
PRIVATE inicializado AS Boolean
PRIVATE largoCadena AS Integer '¡¡¡¡ATENCIÓN ESTA VARIABLE ES AHORA PRIVADA!!!!!!


PUBLIC SUB Form_Open()
DIM textbox AS TextBox
DIM pelicula AS String[]
DIM partesCadena AS String
DIM cadenaCompleta AS String
DIM x AS Integer
DIM caracter AS String
DIM label AS label
'------------------------------Cambiar el nombre de la pelicula
DIM nombrePelicula AS String = "Iron Man 2"

'------------------------------- dividir caracteres
pelicula = Split(nombrePelicula)

'--------------------------------Juntar nombre pelicula
FOR EACH partesCadena IN pelicula
cadenaCompleta = cadenaCompleta & partesCadena
NEXT

'------------------------------Tomar largo pelicula
largoCadena = Len((cadenaCompleta))

IF NOT inicializado THEN
'-------------------------------Creacion de la matriz de texbox
matrizObjetos = NEW Object[]
'-------------------------------Numero de texbox
FOR x = 1 TO largoCadena
'--------------------------------Creacion de los textbox
textbox = NEW TextBox(ME)
label = NEW label(ME)
'--------------------------------------Posicionamiento de los textbox
textbox.X = (x * 10 + x) * 5 + 2
textbox.Y = 200
textbox.width = 40
textbox.height = 60
textbox.visible = FALSE
label.x = (x * 10 + x) * 5 + 2
label.y = 270
label.Width = 40
label.Height = 5
label.Background = Color.Black

'-------------------------------------------Lectura de los caracteres de la cadena
'y colocacion en los textbox.
caracter = Mid(cadenaCompleta, x, 1)
textbox.Text = caracter
matrizObjetos.Add(textbox, x)
NEXT
END IF
END

'CODIGO ANEXADO------------------------------------------------------------------------------

PUBLIC SUB TextBox1_KeyPress()
'=========================================================
'PROPOSITO DEL EVENTO: Buscar coincidencias de caracter
'=========================================================
DIM y AS Integer

'------------------------------Si la tecla que presionamos es ENTER,luego
IF Key.code = Key.Return THEN
FOR y = 0 TO largoCadena - 1
IF matrizObjetos[y].Text = TextBox1.Text THEN
matrizObjetos[y].visible = TRUE
END IF
NEXT
END IF

END


Nota : La variable largoCadena es ahora Private.

Saludos

última edición por abarzuaf el Martes, 15 Junio 2010, 17:30; editado 1 vez
Perfil MP  
Objetivo: Re: Acceder A Array Desde Otro Sub
Nuevamente gracias, voy a tener que ponerte en los créditos del juego, me has dado una mano enorme y estoy aprendiendo muchìsimo. He avanzado bastante màs en el juego, en pocos dìas creo poder tener una primera versiòn funcionando.
Saludos
P.D.
Por cierto el còdigo funciona perfecto, le agregué algunas modificaciones para contabilizar errores.


Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.435s (PHP: -54% SQL: 154%)
Consultas SQL: 47 - Debug off - GZIP Activado