Spanish Matriz de Controles EditText

ebqlabs

Active Member
Licensed User
Hola, quien me puede ayudar por fa, gracias.-

Miren le explico yo en VB6 creaba una caja de texto o cualquier objecto en realidad, y la volvía a crear este reconocía que ya existía, entonces me preguntaba si quería crear una matriz de control, si le daba que si este me creaba un indixe por objecto algo así objecto(0), objecto(1), ...();

la pregunta es ¿como puedo hacer esto en B4a?

Dim txtuno as EditText

Y si creo otro este que me deje hacer algo así

Dim txtuno(0) as EditText
Dim txtuno(1)as EditText

Gracias.-
 

klaus

Expert
Licensed User
Longtime User
Private txtuno(3) As EditText

This cannot be done in the Designer.

But you can do this:
Add in the Designer EditText views like txtuno0, txtuno1, txtuno2 etc.
Then in Main in
Globals:
Private txtuno(3) As EditText

and in Activity_Create
txtuno = Array As EditText(txtuno0, txtuno1, txtuno2)

Then you can use:
txtuno(0).Text = "text"
etc.
 

ebqlabs

Active Member
Licensed User
Private txtuno(3) As EditText

This cannot be done in the Designer.

But you can do this:
Add in the Designer EditText views like txtuno0, txtuno1, txtuno2 etc.
Then in Main in
Globals:
Private txtuno(3) As EditText

and in Activity_Create
txtuno = Array As EditText(txtuno0, txtuno1, txtuno2)

Then you can use:
txtuno(0).Text = "text"
etc.

Gracias Gracias,
me esta arrojando un error de que lo initialized(EditText)
como o donde debo darle la instrucción.
Gracias.-
 

klaus

Expert
Licensed User
Longtime User
It depends on how you add the EditText views.
The examples I gave in my previous post are if you define the views in the Designer.

If you add the views in the code it's different:
In Globals:
Private txtuno(3) As EditText

In Activity_Create
For i = 0 To 2
txtuno(i).Initialize("txtuno")
Activity.AddView( txtuno(i), 10dip, 10dip + i * 60dip, 150dip, 50dip)
txtuno(i).Tag = i
' other code
Next


Or post your project as a zip file and I will have a look at it.
 

ebqlabs

Active Member
Licensed User
It depends on how you add the EditText views.
The examples I gave in my previous post are if you define the views in the Designer.

If you add the views in the code it's different:
In Globals:
Private txtuno(3) As EditText

In Activity_Create
For i = 0 To 2
txtuno(i).Initialize("txtuno")
Activity.AddView( txtuno(i), 10dip, 10dip + i * 60dip, 150dip, 50dip)
txtuno(i).Tag = i
' other code
Next


Or post your project as a zip file and I will have a look at it.

debo estar seguramente haciendo algo mal o realmente no entendi.

Mira hasta aqui se entiende

Globals:
Private txtuno(3) As EditText

and in Activity_Create
txtuno = Array As EditText(txtuno0, txtuno1, txtuno2)/*estos EditText (txtuno0, txtuno1, txtuno2) yo los tengo creado en el diseño*/


For i=0 To data.Size-1
m=data.Get(i)

txtuno(i).Initialize("txtuno")

' txtuno(i).Text = "text" /*si le doy un msgbox me imprime las veces del ciclo que traiga la palabra text*/
txtuno(i).Text = m.Get("nombre")/*pero aquí nada, asimilando que debería insertar en el EditText txtuno0, después txtuno1 y por ultimo txtuno2*/

Next

Así lo entiendo yo o si no como seria ?

se supone que si uno tiene los EditText en el diseño no debería pedir que lo inizialice

Gracias.-
 
Last edited:

ebqlabs

Active Member
Licensed User
Efectivamente los editTex están creados en el diseño, entiendo que no debería Inicializarlo.
con respecto al data.Size > 3 no creo que tenga error ya que solamente van a ser 3 datos nunca mas de tres.-
entonces el campo (ejemplo país) de la base datos, se debería insertar la primera vez en el editTexuno, luego el otro dato en el editeTex dos y posteriormente el tercer dato en el editext tres.
 

ebqlabs

Active Member
Licensed User
Sii pero lo hice de otra manera, Gracias, muchas gracia por la ayuda.
al momento de insertar los datos lo recorrí en un ciclo For y los agregue a un Array, luego le designe las posiciones al editTex
algo así mas o menos.-[SOLUCIONADO]

B4X:
Dim x(3) As String       
   
    For i=0 To data.Size-1   
        m=data.Get(i)
       
        x(i) = m.Get("nombre")       
       
    Next   
       
    txtUno.Text = x(0)
    txtDos.Text = x(1)
    txtTres.Text = x(2)
 
Top