Translate

miércoles, 13 de marzo de 2013

LISTBOX


ListBox uno de los nuevos Controls, es un componente DINAMICO(es decir no tiene tamano definido) que permite procesar visualmente un conjunto de elementos de tipo string.
La propiedad Rows que se usa al crearlo, es solo para indicarle cuantos renglones desplegara en pantalla, es decir si se usa rows=5, en listbox se podra capturar todos los elementos o datos que se quiera pero solo desplegara los ultimos cinco elementos.
Sin embargo existen ciertas propiedades del listbox que permiten conocer cuantos elementos estan cargados en el listbox.
Otra importante aspecto a recordar cuando se procese o programe, es que el primer indice de la lista, es el indice numero 0(cero).
Este componente, contiene muchas propiedades y metodos que facilitan el trabajo con datos la mas importante es su propiedad ITEMS, que a su vez tiene:
PROPIEDAD ACCION O SIGNIFICADO
Items.Add(dato): Inserta un elemento al final del listbox.
Items.Clear(): Elimina todos los elementos de la lista.
Items.Count(): Regresa la cantidad de elementos en lista.
Items.Sorted = true; Ordena los elementos de la lista usada solo al tiempo de diseno.
Items.Contains(dato): Regresa true o false, si el dato se encuentra o no se encuentra en la lista.
Items.IndexOf(dato): Regresa el indice del objeto dentro del listbox.
Items.Insert(indice,dato): Inserta el dato en la posicion indicada.
Items.Remove(dato): Elimina el dato de el listbox.
Items.RemoveAt(indice): Elimina el dato que esta en la posicion indicada.
Items[indice]: get or set el dato en la posicion indicada (ver primera nota abajo).
Notas:
Como ya se indico anteriormente GET y SET son propiedades asociadas a todos los objetos o controles y sus propiedades en microsoft net, por ejemplo para un textbox, si en un programa se dice alfa = text5.text; se esta usando get, si se dice text5.text=500; se esta usando set.
Otro ejemplo alfa=listbox2.Items(2); se esta usando (get)
listbox2.Items(4)=“mama”; se esta usando (set).
OBSERVAR QUE NO SE USA PROPIEDAD TEXT.
Esto de get-set se puede usar para cualquier propiedad, por ejemplo alfa = listbox8.background; se esta usando get, pero si se codifica listbox8.background=amarillol; se esta usando set, como se observa es importante entender y aplicar este GET-SET en todos los programas.
Capturas: Solo se ocupara un TextBox, el evento click del button y el metodo Add del ListBox.
Proceso: Se ocupara un ciclo for y el metodo count de ListBox.
Despliegues: No se ocupa porque todos los cambios son visibles.
Pero si se quiere pasar de un ListBox a otro ListBox, entonces ciclo for, count, etc.
ejemplo prog
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

LISTA.Items.Add(DATO.Text)

DATO.Text = ""

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Dim r, cant, meses As Integer

cant = LISTA.Items.Count

For r = 0 To cant - 1

meses = LISTA.Items(r)

meses = meses * 12

LISTA.Items(r) = meses

Next r

End Sub

Recordar que el primer indice en un ListBox es el cero por eso el ciclo va desde el cero hasta la cantidad de elementos menos uno.
Corrida:

TAREAS PROGRAMACION VISUAL BASIC 2005
1.- CAPTURAR EN UNA LISTA LOS SUELDOS DE 6 EMPLEADOS Y DESPLEGARLOS EN UNA SEGUNDA LISTA AUMENTADOS EN UN 30%
2.- CAPTURAR EN UNA LISTA LOS PESOS EN KILOGRAMOS DE 6 PERSONAS DESPLEGARLOS EN UNA SEGUNDA LISTA CONVERTIDOS A LIBRAS Y ADEMAS SOLO LOS MAYORES DE 100 LIBRAS.
3.- CAPTURAR EN SUS 4 LISTAS RESPECTIVAS MATRICULA, NOMBRE Y DOS CALIFICACIONES DE 5 ALUMNOS, DESPUES CALCULAR UNA LISTA DE PROMEDIOS DE CALIFICACIONES.
4.- CAPTURAR EN SUS LISTAS RESPECTIVAS NUMEMPLEADO, NOMEMPLEADO, DIAS TRABAJADOS Y SUELDO DIARIO DE 5 EMPLEADOS, DESPLEGAR EN OTRA PANTALLA O PANEL LA NOMINA PERO SOLO DE AQUELLOS EMPLEADOS QUE GANAN MAS DE $300.00 A LA SEMANA.


ARREGLOS TIPO TABLA


Un arreglo tipo tabla se define como un conjunto de datos del mismo tipo organizados en dos o mas columnas y uno o mas renglones.
Para procesar ( recordar solo operaciones y comparaciones) internamente todos los elementos de la tabla se ocupan dos ciclos for uno externo para controlar renglon y uno interno para controlar columna.
Los elementos de la tabla se deberan simbolizar con el nombre de la tabla y 2 subindices, el primer subindice referencia al renglon y el siguiente subindice referencia la columna los dos dentro del mismo corchete.
La declaracion de una tabla sera de acuerdo al siguiente formato:
SHARED DIM NOMTABLA(RENG-1,COL-1) AS TIPODATO
Ej: SHARED DIM SUELDO(3,4) AS DOUBLE RECORDAR QUE VA A GENERAR UNA MATRIZ QUE TENDRA CUATRO RENGLONES Y CINCO COLUMNAS EMPIEZA EN SUELDO(0,0)
Para capturar sus elementos, usaremos un textbox y un boton de captura, solo tener cuidado o mucho control sobre los indices rEN y col como lo muestra el ejemplo.
Para efectuar otros procesos tales como operaciones, despliegues con todos los elementos de la tabla se deberan usar 2 ciclos un for externo para controlar renglon y un for interno para controlar columna.
Prog
' DECLARANDO LISTA GLOBAL

' RECORDAR QUE SON 3 RENG Y 4 COLUMNAS

Shared CALIFICACION(2, 3) As Integer

' DECLARANDO RENG Y COL COMO GLOBAL

Dim R, C As Integer

Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

' EN ESTE MODULO SOLO SE TRABAJA CON EL ARREGLO

' EN MEMORIA

CALIFICACION(R, C) = CALIF.Text

C = C + 1

CALIF.Text = ""

If C = 4 Then

R = R + 1

C = 0

End If

If R = 3 Then

CALIF.Visible = False

End If

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Dim TEMP As String

' PROCESANDO Y REGALANDO 50 PUNTOS A TODOS

For R = 0 To 2

For C = 0 To 3

CALIFICACION(R, C) = CALIFICACION(R, C) + 50

Next C

Next R

' desplegando

For R = 0 To 2

TEMP = CALIFICACION(R, 0) & " " & CALIFICACION(R, 1) & " " & CALIFICACION(R, 2) & " " & CALIFICACION(R, 3)

LISTA1.Items.Add(TEMP)

' limpiando temporal antes de otro renglon

TEMP = " "

Next

End Sub

Notas:
Observar el formato de declaracion y como se controlan los indices de captura r, c
Para procesar los elementos se usan dos ciclos for y el formato tabla (reng,col).
En este problema se usa el objeto LISTBOX para presentar el resultado mas adelante se usara un objeto mas apropiado.
Diseno: 

Corrida:




Para inicializar tablas, se usa el siguiente formato:
Dim nomarreglo() As tipodato = {lista valores}
Dim ciudades() as String = {“tijuana', “tecate”, “ensenada”}
Recordar que no se pueden inicializar arreglos de tamano fijo, para inicializar tablas aqui esta el ejemplo:
Dim alfa(,) As Integer = {{1, 2}, {3, 4} {5,6} }
TAREAS PROGRAMACION VISUAL BASIC 2005
1.- CONSTRUIR UN CUADRO QUE CONTENGA LOS COSTOS FIJOS DE CUATRO PRODUCTOS CUALESQUIERA, QUE SE PRODUCEN EN TRES PLANTAS DIFERENTES DE UNA EMPRESA MAQUILADORA (2 prog uno capturado y otro inicializado ).
2.- CONSTRUIR UN CUADRO QUE CONTENGA LOS INGRESOS MENSUALES POR VENTAS DURANTE LOS TRES PRIMEROS MESES DEL ANO DE CUATRO SUCURSALES DE UNA CADENA DE AUTO REFACCIONES, AGREGAR AL FINAL UNA LISTA QUE MUESTRE LOS INGRESOS MENSUALES TOTALES POR MESES Y UNA SEGUNDA LISTA QUE MUESTRE LOS INGRESOS MENSUALES TOTALES POR SUCURSAL(2 progs uno capturado y otro inicializado).
3.-CONSTRUIR UN CUADRO QUE CONTENGA LAS COMISIONES GANADAS POR TRES VENDEDORES, DE LOS 5 TIPOS DE LINEA BLANCA DE CONOCIDA MUEBLERIA, ADEMAS LISTAS DE COMISIONES TOTALES Y PROMEDIOS GANADAS POR LOS VENDEDORES, ASI COMO LISTAS DE COMISIONES TOTALES Y PROMEDIOS POR TIPO DE LINEA BLANCA
ANALIZAR ESTE CODIGO:
' PARA TOTALES Y PROMEDIOS POR RENGLON

FOR R = 0 TO 3

FOR C = 0 TO 2

TOTRENG(R) = TOTRENG(R) + TABLA(R,C)

NEXT C

PROMRENG(R) = TOTRENG(R)/3

NEXT R

'PARA TOTALES Y PROMEDIOS POR COLUMNA

FOR C = 0 TO 2

FOR R = 0 TO 3

TOTCOL(C)=TOTCOL(C) + TABLA(R,C)

NEXT R

PROMCOL(C) = TOTCOL(C) / 4

NEXT C

SUGERENCIA: CONSTRUIR PRIMERO LOS CUADROS EN PAPEL.

ARREGLO TIPO LISTA


Un arreglo tipo lista se define como una variable que permite almacenar un conjunto de datos del mismo tipo organizados en una sola columna y uno o mas renglones.
Tambien reciben el nombre de vectores en algebra o arreglos unidimensionales en programacion.
Los procesos normales con una lista o con sus elementos incluyen declarar toda la lista, capturar sus elementos, desplegarlos, realizar operaciones con ellos, desplegarlos, etc.
Para declarar una lista se usa el siguiente formato;
SHARED DIM NOMLISTA(CANT ELEMENTOS -1) AS TIPODATO
Shared(compartido), se usa cuando la lista se tenga que compartir entre varias subutinas, observar que cada boton de comando en un programa empieza con sub-end sub, si un programa tiene varias subrutinas que compartan la misma lista, dicha lista debera ser SHARED.
La cantidad de elementos-1, significa que si se quiere una lista de 5 ciudades por ejemplo su declaracion sera shared dim ciudad(4) as string, la razon de esto es que visual basic empieza una lista por el elemento o renglon cero(0), por tanto cuando se pide crear una lista de 4 ciudades, visual basic net le agrega el renglon o elemento 0, que en total darian 5 ciudade.
Es tambien importante recordar que un arreglo en visual basic net es realmente un objeto derivado de la clase SYSTEM.ARRAY.
Recordar tambien que como objeto arreglo, tambien puede usar una serie de metodos pertenecientes a dicha clase system.array, los metodos principales de dicha clase y por tanto de los arreglos derivados de la misma son:
Public Methods
BinarySearch Overloaded. Searches a one-dimensional sorted Array for a value, using a binary search algorithm.
Clear Sets a range of elements in the Array to zero, to false, or to a null reference (Nothing in Visual Basic), depending on the element type.
Clone Creates a shallow copy of the Array.
Copy Overloaded. Copies a section of one Array to another Array and performs type casting and boxing as required.
CopyTo Copies all the elements of the current one-dimensional Array to the specified one-dimensional Array starting at the specified destination Array index.
CreateInstance Overloaded. Initializes a new instance of the Array class.
Equals (inherited from Object) Overloaded. Determines whether two Object instances are equal.
GetEnumerator Returns an IEnumerator for the Array.
GetHashCode (inherited from Object) Serves as a hash function for a particular type, suitable for use in hashing algorithms and data structures like a hash table.
GetLength Gets the number of elements in the specified dimension of the Array.
GetLowerBound Gets the lower bound of the specified dimension in the Array.
GetType (inherited from Object) Gets the Type of the current instance.
GetUpperBound Gets the upper bound of the specified dimension in the Array.
GetValue Overloaded. Gets the value of the specified element in the current Array.
IndexOf Overloaded. Returns the index of the first occurrence of a value in a one-dimensional Array or in a portion of the Array.
Initialize Initializes every element of the value-type Array by calling the default constructor of the value type.
LastIndexOf Overloaded. Returns the index of the last occurrence of a value in a one-dimensional Array or in a portion of the Array.
Reverse Overloaded. Reverses the order of the elements in a one-dimensional Array or in a portion of the Array.
SetValue Overloaded. Sets the specified element in the current Array to the specified value.
Sort Overloaded. Sorts the elements in one-dimensional Array objects.
ToString (inherited from Object) Returns a String that represents the current Object.
FUENTE: Ayuda Microsoft Net
notas:
En visual Basic 2005 recordar que la primera posicion o renglon en una lista es la posicion o renglon 0 (cero).
El dato capturado, proviene de momento de un componente escalar textbox y/o se usan tantos de estos controles como elementos tenga el arreglo o mas facil aun se debera controlar la captura de elementos usando algun algoritmo sencillo de validacion como lo muestra el programa ejemplo.
Prog
' DECLARANDO LISTA GLOBAL Y ESTA DECLARACION VAN FUERA DEL SUB

Shared EDADARR(4) As Integer

' DECLARANDO RENG COMO GLOBAL

Dim RENG As Integer

Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

' EN ESTE MODULO SOLO SE TRABAJA CON EL ARREGLO

' EN MEMORIA

If RENG <= 5 Then

EDADARR(RENG) = EDAD.Text

RENG = RENG + 1

EDAD.Text = ""

End If

If RENG >= 5 Then

EDAD.Visible = False

RENG = 0

End If

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

' LIMPIANDO LISTAS

LISTA1.Items.Clear()

LISTA2.Items.Clear()

' CARGANDO LISTA ORIGINAL CON EDAD CAPTURADA

For RENG = 0 To 4

LISTA1.Items.Add(EDADARR(RENG))

Next

' A MESES Y Y DESPLEGANDO

For RENG = 0 To 4

EDADARR(RENG) = EDADARR(RENG) * 12

LISTA2.Items.Add(EDADARR(RENG))

Next

End Sub

corrida

notas:
Observar que en el programa el arreglo edad y la variable renglon se declararon de tipo GLOBAL porque los dos metodos el de captura y el de operacion-despliegue, las estan compartiendo.
Ademas observar que se declararon antes de los eventos “clickButton”, para crearlos como objetos globales.
Para el caso de operaciones y comparaciones con todos los elementos de la lista a la vez se debera usar un ciclo for con una variable entera llamada renglon, misma que tambien se usa como indice de la lista.
Recordar que todos los datos internos de la lista estaran almacenados en la memoria ram del computador, para despliegues se usa un componente visual que permite manipular un conjunto de datos a la vez, el ListBox con sus metodos apropiados pero se tiene que usar un ciclo for para ir anadiendo o agregando elemento por elemento como se observa en el problema ejemplo que se ha venido desarrollando, en este caso se quiere desplegar las cinco edades convertidas a meses.
La ultima intruccion y muy importante es poner en cero las variables de control de ciclos o indice de arreglos, esto es porque el servidor mantiene el programa ejecutandose continuamente en memoria y si se vuelve a pedir la ejecucion del programa, en cuento se intente capturar un nuevo dato va a marcar el error arreglofueradelimite o arrayofbound, estan avisados.
Para inicializar una lista se debe usar el siguiente formato:
shared dim nomlista() as tipodato={lista de valores separados por comas}
ej;
shared dim edad() as integer = {15,16,17,18}
shared dim sueldo() as double = {40.85, 65.30, 33.33}
shared dim ciudad() as string = {“tecate”, “tijuana”, “mexicali”, “rosarito”, “ensenada”}
TAREAS PROGRAMACION VISUAL BASIC 2005
1.- Capturar y desplegar 5 precios de productos cualesquiera usando dos panel uno para capturar y uno para desplegar
2.- Capturar 4 sueldos en un panel desplegarlos aumentados en un 25% en otro panel
3.- Capturar los datos de 5 productos comprados en una tienda, incluyendo nombre, precio y cantidad en sus 3 listas respectivas, despues calcular una cuarta lista con el gasto total por cada producto desplegarlo todo en un segundo panel e incluir tambien el gran total
4.- Capturar en una lista solamente 6 numeros multiplos de 5, se debe de estar capture y capture numeros hasta que se completen los 6 multiplos de 5


ARREGLOS VISUAL BASIC 2005


En programacion tradicional siempre se manejan dos tipos de arreglos los arreglos tipo listas, vectores o unidimensionales y los arreglos tipo tablas, cuadros, concentrados, matrices o bidimensionales en ambos casos son variables que permiten almacenar un conjunto de datos del mismo tipo a la vez, su diferencia es en la cantidad de columnas que cada uno de estos tipos contiene, como en los siguientes ejemplos:
a) LISTAS
EDAD
18
34
22
15
B) TABLAS
CIA ACME
ING MENS VTAS
(MILES DE $)
…….ENE FEB MAR ABR MAY
SUC A
10
20
30
40
SUC B
50
60
70
80
SUC D
90
100
110
120
Como se observa la diferencia principal entre un arreglo tipo lista y un arreglo tipo tabla son las cantidades de columnas que contienen.

NOTA IMPORTANTE.- LOS CONCEPTOS MANEJADOS AQUI ESTAN ENFOCADOS A LOS SISTEMAS DE INFORMACION CONTABLES FINANCIEROS ADMINISTRATIVOS.
EN ALGEBRA MATRICIAL, SI SON IMPORTANTES LOS CONCEPTOS DE VECTORES Y MATRICES, PERO LAS OPERACIONES Y METODOS SON PRECISAMENTE LOS DEL ALGEBRA MATRICIAL

ARREGLOS VISUAL BASIC 2005


En programacion tradicional siempre se manejan dos tipos de arreglos los arreglos tipo listas, vectores o unidimensionales y los arreglos tipo tablas, cuadros, concentrados, matrices o bidimensionales en ambos casos son variables que permiten almacenar un conjunto de datos del mismo tipo a la vez, su diferencia es en la cantidad de columnas que cada uno de estos tipos contiene, como en los siguientes ejemplos:
a) LISTAS
EDAD
18
34
22
15
B) TABLAS
CIA ACME
ING MENS VTAS
(MILES DE $)
…….ENE FEB MAR ABR MAY
SUC A
10
20
30
40
SUC B
50
60
70
80
SUC D
90
100
110
120
Como se observa la diferencia principal entre un arreglo tipo lista y un arreglo tipo tabla son las cantidades de columnas que contienen.

NOTA IMPORTANTE.- LOS CONCEPTOS MANEJADOS AQUI ESTAN ENFOCADOS A LOS SISTEMAS DE INFORMACION CONTABLES FINANCIEROS ADMINISTRATIVOS.
EN ALGEBRA MATRICIAL, SI SON IMPORTANTES LOS CONCEPTOS DE VECTORES Y MATRICES, PERO LAS OPERACIONES Y METODOS SON PRECISAMENTE LOS DEL ALGEBRA MATRICIAL