B4A en español - Juan Antonio Villalpando
(BASIC4Android)
-- Tutorial de B4A --
Volver al índice del tutorial
____________________________
40.- Crear controles mediante el código. Array de controles.
- Tutoriales. Crear controles mediante el código. Array de controles.
- Presentación.
Vamos a ver como podemos crea arrays de controles. (Ver 18.- Añadir controles mediante código)
______________________
1.- Crear controles de array mediante código.
Vamos a crear cuatro Botones y dos Etiquetas (Label) mediante código.
Fíjate que no utilizo el Designer y ni cargo el Layout. Los controles (View) se crean en el código.
Declaramos el array de Botones(5). Ponemos un número más de los que queremos.
Además según se van creando los Botones se establece su Propiedad Tag, que más adelante nos va a servir para reconocer a cada Botón particular.
Creamos dos etiquetas. Una arriba y otra abajo.
Cuando pulsemos cualquier Botón, obtendremos mediante Sender sus Propiedades y las asignamos a b
Según la b.Tag sabremos el Botón pulsado.
Según el número de Botón pulsamos la suma se incrementará en uno, dos, tres o cuatro.
Creación de cuatro Botones y dos Etiquetas mediante código. Array.
|
Sub Process_Globals
End Sub
Sub Globals
' Crearemos 4 botones. Debemos declarar 5
Dim Buttons(5) As Button
' Crearemos 2 etiquetas (Label)
Dim etiqueta, etiqueta2 As Label
Dim suma As Int
suma = 0
End Sub
Sub Activity_Create(FirstTime As Boolean)
Dim ancho, alto, offsetY As Int
ancho = 80dip
alto = 60dip
For y = 1 To 4
Dim b As Button
b.Initialize("Button")
b.TextSize = 30
b.Text = y
b.Tag = y
Activity.AddView(b, 20, y * (alto + 10dip), ancho, alto)
Buttons(y) = b
Next
' Los View cuando se crean en el código hay que
' Iniciarlos y luego Añadirlos al Activiy
etiqueta.Initialize("etiqueta")
etiqueta.TextSize = 8
etiqueta.TextColor = Colors.White
Activity.AddView(Etiqueta, 20dip, 10dip, 200dip, 400dip)
etiqueta2.Initialize("etiqueta2")
etiqueta2.Color=Colors.Blue
etiqueta2.Gravity = Gravity.CENTER
etiqueta2.Text="SUMATORIO"
Activity.AddView(etiqueta2, 80, 550, 50%x, 20%y)
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub Button_Click
Dim b As Button
b = Sender
etiqueta.Text = "Boton pulsado: " & b
suma = suma + b.Tag
etiqueta2.Text = suma
' Cada vez que se pulsa un Botón se activa esta Subrutina.
' b nos dice que botón ha sido pulsado.
' b nos indica las Propiedades del Botón.
' Utilizamos la Propiedad b.Tag
' Dependiendo del Tag, se sumarán incrementos de uno, dos, tres o cuatro.
' En etiqueta obtenemos el valor de las Propiedades del Botón pulsado.
' b = Sender, b obtiene las Propiedades del Botón pulsado.
' En etiqueta2 obtenemos la suma.
End Sub
|
|
______________________
2.- Crear controles de array mediante código. Dos dimensiones.
Vamos a crear nueve Botones y dos Etiquetas (Label) mediante código.
Fíjate que no utilizo el Designer y ni cargo el Layout. Los controles (View) se crean en el código.
Declaramos el array de Botones(4,4). Ponemos un número más de los que queremos.
Además según se van creando los Botones se establece su Propiedad Tag, que más adelante nos va a servir para reconocer a cada Botón particular.
Creamos dos etiquetas. Una arriba y otra abajo.
Cuando pulsemos cualquier Botón, obtendremos mediante Sender sus Propiedades y las asignamos a b
Según la b.Tag sabremos el Botón pulsado.
Según el número de Botón pulsamos la suma se incrementará en uno, dos, tres, cuatro...
Creación de nueve Botones y dos Etiquetas mediante código. Array de dos dimensiones.
|
Sub Process_Globals
' Juan Antonio Villalpando
' juana1991@yahoo.com
End Sub
Sub Globals
' Crearemos 9 botones. Debemos declarar 4 x 4
Dim Buttons(4,4) As Button
' Crearemos 2 etiquetas (Label)
Dim etiqueta, etiqueta2 As Label
Dim suma As Int
suma = 0
Dim numero_boton As Int
numero_boton = 0
End Sub
Sub Activity_Create(FirstTime As Boolean)
Dim ancho, alto As Int
ancho = 80dip
alto = 60dip
For y = 1 To 3
For x = 1 To 3
Dim b As Button
numero_boton = numero_boton + 1
b.Initialize("Button")
b.TextSize = 30
b.Text = numero_boton
b.Tag = numero_boton
' El -80 es para que salga la primera columna más a la izquierda.
Activity.AddView(b, -80 + x * (ancho + 10dip), y * (alto + 10dip), ancho, alto)
Buttons(x, y) = b
Next
Next
' Los View cuando se crean en el código hay que
' Iniciarlos y luego Añadirlos al Activiy
etiqueta.Initialize("etiqueta")
etiqueta.TextSize = 8
etiqueta.TextColor = Colors.White
Activity.AddView(Etiqueta, 20dip, 10dip, 200dip, 400dip)
etiqueta2.Initialize("etiqueta2")
etiqueta2.Color=Colors.Blue
etiqueta2.Gravity = Gravity.CENTER
etiqueta2.Text="SUMATORIO"
Activity.AddView(etiqueta2, 80, 550, 50%x, 20%y)
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub Button_Click
Dim b As Button
b = Sender
etiqueta.Text = "Boton pulsado: " & b
suma = suma + b.Tag
etiqueta2.Text = suma
' Cada vez que se pulsa un Botón se activa esta Subrutina.
' b nos dice que botón ha sido pulsado.
' b nos indica las Propiedades del Botón.
' Utilizamos la Propiedad b.Tag
' Dependiendo del Tag, se sumarán incrementos de uno, dos, tres o cuatro.
' En etiqueta obtenemos el valor de las Propiedades del Botón pulsado.
' b = Sender, b obtiene las Propiedades del Botón pulsado.
' En etiqueta2 obtenemos la suma.
End Sub
|
|
En la tabla inferior muestro el código para la utilización del Botón pulsado, según el Botón pulsado se realizara una parte del Case.
Puedes substituir la parte del...
Sub Button_Click
End Sub
...de arriba con el código de la tabla de abajo.
Código según el Botón pulsado. |
Sub Button_Click
Dim b As Button
b = Sender
Select b.Tag
Case 1
' Aquí ponemos el código a realizar cuando pulsemos el botón 1
etiqueta.Text = "Botón 1"
Msgbox("Has pulsado el Botón 1","Pulsado")
Case 2
' Aquí ponemos el código a realizar cuando pulsemos el botón 2
etiqueta.Text = "Botón 2"
Msgbox("Has pulsado el Botón 2","Pulsado")
Case 3
' Aquí ponemos el código a realizar cuando pulsemos el botón 3
etiqueta.Text = "Botón 3"
Msgbox("Has pulsado el Botón 3","Pulsado")
Case 4
' Aquí ponemos el código a realizar cuando pulsemos el botón 4
etiqueta.Text = "Botón 4"
Msgbox("Has pulsado el Botón 4","Pulsado")
Case 5
' Aquí ponemos el código a realizar cuando pulsemos el botón 5
etiqueta.Text = "Botón 5"
Msgbox("Has pulsado el Botón 5","Pulsado")
Case 6
' Aquí ponemos el código a realizar cuando pulsemos el botón 6
etiqueta.Text = "Botón 6"
Msgbox("Has pulsado el Botón 6","Pulsado")
Case 7 ' Aquí ponemos el código a realizar cuando pulsemos el botón 7
etiqueta.Text = "Botón 17"
Msgbox("Has pulsado el Botón 7","Pulsado")
Case 8
' Aquí ponemos el código a realizar cuando pulsemos el botón 8
etiqueta.Text = "Botón 8"
Msgbox("Has pulsado el Botón 8","Pulsado")
Case 9 ' Aquí ponemos el código a realizar cuando pulsemos el botón 9
etiqueta.Text = "Botón 9"
Msgbox("Has pulsado el Botón 9","Pulsado")
Case Else
' Aquí ponemos el código que realizará cuando no se pulse ningún botón ' En este caso no es operativo esta parte del código
etiqueta.Text = "Ningún Botón"
Msgbox("Ningún Botón Pulsado","No Pulsado")
End Select
End Sub
|
______________________
3.- Otra forma de crear arrays de controles.
Vamos a crear un Botón y tres Etiquetas (Label) mediante código.
Fíjate que no utilizo el Designer y ni cargo el Layout. Los controles (View) se crean en el código.
' Crearemos 3 etiquetas (Label)
Dim etiqueta1, etiqueta2, etiqueta3 As Label
' Crearemos un array de etiquetas
Dim etiquetas() As Label
' Aquí se crea el array de las tres etiquetas
etiquetas = Array As Label(etiqueta1, etiqueta2, etiqueta3)
' Podemos utilizar cada etiqueta por su índice de array
etiquetas(x).Text = suma
Otra forma de trabajar con Arrays.
|
Sub Process_Globals
' Juan Antonio Villalpando
' juana1991@yahoo.com
End Sub
Sub Globals
' Crearemos 1 Botón
Dim boton As Button
' Crearemos 3 etiquetas (Label)
Dim etiqueta1, etiqueta2, etiqueta3 As Label
' Crearemos un array de etiquetas
Dim etiquetas() As Label
Dim suma As Int
suma = 0
Dim x As Int
x = 0
End Sub
Sub Activity_Create(FirstTime As Boolean)
' Los View cuando se crean en el código hay que
' Iniciarlos y luego Añadirlos al Activiy
boton.Initialize("boton")
boton.Text = "Pulsa"
Activity.AddView(boton, 0, 40, 100%x, 10%y)
etiqueta1.Initialize("etiqueta1")
etiqueta1.TextSize = 20
etiqueta1.Color=Colors.Red
etiqueta1.Gravity = Gravity.CENTER
etiqueta1.Text = "Uno"
Activity.AddView(etiqueta1, 20dip, 200dip, 200dip, 40dip)
etiqueta2.Initialize("etiqueta2")
etiqueta2.TextSize = 20
etiqueta2.Color = Colors.Green
etiqueta2.Gravity = Gravity.CENTER
etiqueta2.Text = "Dos"
Activity.AddView(etiqueta2, 20dip, 250dip, 200dip, 40dip)
etiqueta3.Initialize("etiqueta3")
etiqueta3.TextSize = 20
etiqueta3.Color = Colors.Blue
etiqueta3.Gravity = Gravity.CENTER
etiqueta3.Text = "Tres"
Activity.AddView(etiqueta3, 20dip, 300dip, 200dip, 40dip)
' Aquí se crea el array de las tres etiquetas
etiquetas = Array As Label(etiqueta1, etiqueta2, etiqueta3)
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub Boton_Click
If x = 3 Then x = 0
' Podemos utilizar cada etiqueta por su índice de array
etiquetas(x).Text = suma
x = x + 1
suma = suma + 1
End Sub
|
|
______________________
4.- Grupo de 9 TextView en 3 x 3.
Ahora tenemos 9 TextView en 3 x 3, en dos dimensiones, parecido al ejemplo 2 que hemos visto anteriormente.
Una subrutina cambia sus textos.
Otra forma de trabajar con Arrays.
|
Sub Process_Globals ' Juan Antonio Villalpando
' juana1991@yahoo.com
End Sub
Sub Globals
' Crearemos 9 etiquetas. Debemos declarar 4 x 4
Dim Labels(4, 4) As Label
Dim numero_label As Int
numero_label = 0
End Sub
Sub Activity_Create(FirstTime As Boolean)
' Creamos mediante código 9 etiquetas en grupos de 3
Dim ancho, alto As Int
ancho = 80dip
alto = 60dip
For y = 1 To 3
For x = 1 To 3
Dim b As Label
numero_label = numero_label + 1
b.Initialize("Label")
b.TextSize = 10
b.Text = numero_label
b.Tag = numero_label
' El -80 es para que salga la primera columna más a la izquierda.
Activity.AddView(b, -80 + x * (ancho + 10dip), y * (alto + 10dip), ancho, alto)
Labels(x, y) = b
Next
Next
' Activity.LoadLayout("layout")
Cambia
End Sub
Sub Cambia
For x = 1 To 3
For y = 1 To 3
Labels(x, y).Text = "-"
Next
Next
End Sub |
______________________
5.- Creación de 4 CheckBox uno debajo del otro.
4_CheckBox.
|
Sub Process_Globals
End Sub
Sub Globals
' Crearemos 4 checkbox. Debemos declarar 5
Dim CheckBox(5), bot As CheckBox
' Crearemos 1 etiqueta (Label)
Dim etiqueta As Label
End Sub
Sub Activity_Create(FirstTime As Boolean)
Dim ancho, alto As Int
ancho = 80dip
alto = 60dip
For y = 1 To 4
Dim b As CheckBox
b.Initialize("CheckBox")
b.TextSize = 10
b.Text = y
b.Tag = y
Activity.AddView(b, 20dip, y * (alto + 10dip), ancho, alto)
CheckBox(y) = b
Next
' Los View cuando se crean en el código hay que
' Iniciarlos y luego Añadirlos al Activiy
etiqueta.Initialize("etiqueta")
etiqueta.TextSize = 14
etiqueta.TextColor = Colors.White
Activity.AddView(etiqueta, 20dip, 10dip, 200dip, 400dip)
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub CheckBox_Click
Dim b As CheckBox
b = Sender
etiqueta.Text = "Marcado: " & b
End Sub
|
______________________
6.- Creación de 4 CheckBox uno debajo del otro.
4_CheckBox.
|
Sub Process_Globals
End Sub
Sub Globals
' Crearemos 4 checkbox. Debemos declarar 5
Dim CheckBox(5), bot As CheckBox
' Crearemos 1 etiqueta (Label)
Dim etiqueta As Label
End Sub
Sub Activity_Create(FirstTime As Boolean)
Dim ancho, alto As Int
ancho = 80dip
alto = 60dip
For y = 1 To 4
Dim b As CheckBox
b.Initialize("CheckBox")
b.TextSize = 10
b.Text = y
b.Tag = y
Activity.AddView(b, 20dip, y * (alto + 10dip), ancho, alto)
CheckBox(y) = b
Next
' Los View cuando se crean en el código hay que
' Iniciarlos y luego Añadirlos al Activiy
etiqueta.Initialize("etiqueta")
etiqueta.TextSize = 14
etiqueta.TextColor = Colors.White
Activity.AddView(etiqueta, 20dip, 10dip, 200dip, 400dip)
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub CheckBox_Click
Dim b As CheckBox
b = Sender
etiqueta.Text = "Marcado: " & b
End Sub
|
______________________
6.- Creación de 4 RadioButton uno debajo del otro.
4_RadioButton.
|
Sub Process_Globals
End Sub
Sub Globals
' Crearemos 4 RadioButton. Debemos declarar 5
Dim RadioButton(5), bot As RadioButton
' Crearemos 1 etiqueta (Label)
Dim etiqueta As Label
End Sub
Sub Activity_Create(FirstTime As Boolean)
Dim ancho, alto As Int
ancho = 80dip
alto = 60dip
For y = 1 To 4
Dim b As RadioButton
b.Initialize("RadioButton")
b.TextSize = 10
b.Text = y
b.Tag = y
Activity.AddView(b, 20dip, y * (alto + 10dip), ancho, alto)
RadioButton(y) = b
Next
' Los View cuando se crean en el código hay que
' Iniciarlos y luego Añadirlos al Activiy
etiqueta.Initialize("etiqueta")
etiqueta.TextSize = 14
etiqueta.TextColor = Colors.White
Activity.AddView(etiqueta, 20dip, 10dip, 200dip, 400dip)
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub RadioButton_Click
Dim b As RadioButton
b = Sender
etiqueta.Text = "Marcado: " & b
End Sub
|
______________________
7.- Creación de 4 ImageView uno debajo del otro.
- Debemos poner una imagen en la carpeta File
4_ImageView.
|
ub Process_Globals
End Sub
Sub Globals
' Crearemos 4 Imágenes. Debemos declarar 5
Dim ImageView(4) As ImageView
' Crearemos 1 etiqueta (Label)
Dim etiqueta As Label
End Sub
Sub Activity_Create(FirstTime As Boolean)
Dim ancho, alto As Int
ancho = 80dip
alto = 60dip
For y = 1 To 4
Dim b As ImageView
b.Initialize("ImageView")
b.Enabled = True
b.Visible = True
b.Tag = y
' b.SetLayout(X,Y,100dip,100dip)
b.Gravity = Gravity.FILL
b.Bitmap = LoadBitmap(File.DirAssets,"android1.gif")
Activity.AddView(b, 20dip, y * (alto + 10dip), ancho, alto)
Next
' Los View cuando se crean en el código hay que
' Iniciarlos y luego Añadirlos al Activiy
etiqueta.Initialize("etiqueta")
etiqueta.TextSize = 14
etiqueta.TextColor = Colors.White
Activity.AddView(etiqueta, 20dip, 10dip, 200dip, 400dip)
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub ImageView_Click
Dim b As ImageView
b = Sender
etiqueta.Text = "Marcado: " & b
End Sub
|
______________________
- En este página de los tutoriales ponen una aplicación llamada Toolbar.zip, que presenta una sencilla pantalla con barra de herramientas.
________________________________
|