lunes, 16 de julio de 2012

Otro ejemplo de ListView

En este ejemplo no he utilizado imágenes.

- Veremos como se hace una búsqueda en un array, con el método .Find
  Aprovechando para mostrar y borrar un registro o
  elemento del ListView.
- Como hacemos un grupo de instrucciones sobre una variable.
- Como eliminar y añadir elementos a un ListView

En esta aplicación de ejemplo tenemos los datos de identidad,nombre y apellidos de un ciudadano.

En la lista se añade su numero de identidad.Si lo seleccionamos podemos ver
en las cajas de texto los datos.También pueden ser eliminados de la lista.




El código esta documentado ,no lo he añadido aquí ya que los comentarios
deforman un poco la presentación al ser largos.

Podéis bajar el código aquí:



domingo, 15 de julio de 2012

Componente ListView


Este componente es muy parecido a ListBox con la posibilidad de poder añadir
un icono al texto de cada elemento.

Cada elemento que añadimos consta de una clave “key” que es única por cada elemento
de la lista, no se repite.

Para la selección de componente en vez de la propiedad “Index”.Usamos
“Item”.

Con Item podemos averiguar su texto y su imagen.

Hay que practicar para conocer este componente si estamos acostumbrado a ListBox. No entraña mucha dificultad y si mejoras.

He creado este ejemplo, con banderas marítimas internacionales para señales.
Donde podéis ver como se añade la clave, su nombre y si queremos una imagen.



Aquí podéis bajar el ejemplo.


Y aquí encontrareis mas información.




Componente ListBox


Este componente presenta una lista de elementos seleccionables.

Al hacer click en uno de los elementos su índice es almacenado en la
propiedad .Index.

La propiedad .Current nos ofrece la posibilidad de conocer del
elemento actual seleccionado,su texto o si ha sido seleccionado un
elemento en concreto.

Lista.Current.Text
Lista.Current.Selected

Listbox es igual que un array de elementos.
Posee propiedades para conocer cuantos elementos tiene la lista, como la
propiedad .Count.

No debemos olvidar nunca que siempre el primer elemento en un array es 0.
Así que la propiedad .Count puede decirnos que tenemos un elemento, pero
su propiedad .Index al seleccionar este elemento es 0.

Al igual que teníamos un array:

aAmigos[1]

Con la propiedad Lista.List[1] hacemos la misma función con
nuestro componente ListBox.

Cuando no hemos seleccionado ningún elemento de la lista la propiedad
Index es -1

Tenemos métodos para ordenar nuestra Lista y de hacer búsquedas en ella.

Usamos siempre el método .Add para añadir elementos a nuestra lista.

Aquí tenéis un ejemplo para ver el funcionamiento básico
de este componente.


He utilizado el recurso que nos ofrece el componente de alineación Vbox, para
que tanto la caja de texto y los botones queden alineados.

El código es simple. ;-)

----código---
' Gambas class file

Public Sub _new()

End

Public Sub Form_Open()
   Me.Title = "Ejemplo con ListBox"
   Me.Center()
End

Public Sub btnInsertar_Click()
If txtEntrada.Text = "" Then 'Si no escribimos nada nos lo dice
   Message.Info("Debes escribir algo")
Else
   lstLista.Add(txtEntrada.text) 'Añadimos el contenido de la caja de texto a la lista
   lblSalida.Text = (txtEntrada.Text & " fue añadido a la lista")
   txtEntrada.text = ""
Endif
txtEntrada.SetFocus
End

Public Sub btnLimpiarLista_Click()
lstLista.Clear
lblSalida.Text = "La lista fue borrada"
End

Public Sub btnEliminar_Click()
If lstLista.Index >= 0 Then 'Si se ha seleccionado algún elemento.
   lblSalida.Text = lstLista.Current.Text & " fue eliminado"
   lstLista.Remove(lstLista.Index)
Else
If lstLista.Index = -1 Then
   Message.Warning("Debe seleccionar algún elemento de la lista")
Endif
Endif
End

Public Sub lstLista_Select()

If lstLista.Index <> -1 Then 'Si se ha seleccionado algún elemento.Otra manera de hacerlo.
   lblSalida.Text = Trim(lstLista.Current.Text) & " fue seleccionado"
Endif
End

Public Sub btnSalir_Click()
   Me.Close
End

Public Sub btnInsertar_Enter()
   btnInsertar.Font.bold = True 'Cuando el cursor este dentro del botón cambia el estilo de su fuente a negrita
End

Public Sub btnInsertar_Leave()
   btnInsertar.Font.Bold = False 'Cuando el cursor este fuera del botón cambia el estilo de su fuente a normal
End
---código---

Si os fijáis en los botones debajo de algunas letras existe un guión bajo. Este guión permite el uso de un acceso rápido al botón en cuestión.

Usamos la combinación de las teclas Alt + la letra para hacer lo
mismo que si hiciéramos click con el ratón en el botón.

¿ Cómo podemos hacer esto con nuestros botones de comando ?.

Vamos a la propiedad texto del botón y cerca de la letra que queremos
usar, añadirnos el carácter “&”, que conocemos como Ampersand.

No debemos repetir los mismos caracteres para usar los botones desde teclado
por que puede que el programa no responda como quisiéramos.

Aquí tenéis el ejemplo con su código.

Ejemplo de Listbox

Podéis encontrar mas información en:

En GambasDoc

martes, 10 de julio de 2012

Paso de parámetros por valor o por referencia.


Cuando queremos pasar un parámetro a un procedimiento,podemos hacerlo de dos maneras. La manera habitual de saber como se pasan los parámetros es fijarnos en el procedimiento o función que recibe el parámetro

Imaginar una rejilla, en la que hay celdas que contienen nuestras variables.
Cada celda es una dirección en la memoria de nuestro ordenador, con
un contenido con valor o vacío


Por valor:

Cuando pasamos por valor una variable a un procedimiento,no pasamos la
variable original,pasamos una copia de esta.(No sería la celda original).

La ventaja es que si dentro del procedimiento se cambiase el valor de la variable,al salir del procedimiento, nuestra variable contendrá su valor inicial.

En Gambas1 y Gambas2 solo era posible pasar parámetros por valor.

----código----
PUBLIC SUB Form_Open()

Dim sNombre AS String

sNombre=”Jose Luis”

'Llamamos al procedimiento, pasándole como parámetro la variable sNombre

VerNombre(sNombre)

'Al salir del procedimiento ,mostramos el valor de la variable sNombre,
'comprobando que no ha cambiado.

Message.info(“El valor del nombre es: “ & sNombre)

End


PUBLIC SUB VerNombre(sNom AS STRING)

'Vemos su valor original.

Message.info( “El valor original del parámetro es: “ & sNom)

'Cambiamos su valor y lo mostramos.

sNom=”Jose María”

Message.info(“El valor del parámetro se cambia a: “ & SNom)

END

---código---

No olvidéis cambiar el tipo de comillas al pegarlo en el editor de Gambas. ;-)


Por referencia:

Cuando pasamos un parámetro por referencia,estamos pasando el contenido
de la celda de memoria donde se encuentra el valor de nuestra variable.
Así que el procedimiento no manejara una copia de nuestra variable,
sino la variable original.

En la versión de Gambas3 podemos usar el paso de parámetros por referencia.
Para ello, debemos usar en la llamada al procedimiento la palabra ByRef
Y también debemos incluirla dentro de los parámetros del procedimiento
al que llamamos.


---código---
PUBLIC SUB Form_Open()

Dim sNombre AS String

sNombre=”Jose Luis”

'Llamamos al procedimiento, pasándole como parámetro la variable sNombre

VerNombre(ByRef sNombre)

'Al salir del procedimiento ,mostramos el valor de la variable sNombre,
'comprobando que ha cambiado.

Message.info(“El valor del nombre es: “ & sNombre)

End


PUBLIC SUB VerNombre(ByRef sNom AS STRING)

'Vemos su valor original.

Message.info( “El valor original del parámetro es: “ & sNom)

'Cambiamos su valor y lo mostramos.

sNom=”Jose María”

Message.info(“El valor del parámetro se cambia a: “ & SNom)

END
---código---

Otro ejemplo usando paso de parámetro por referencia.
No dividir por cero o dará error. ;-)

---código---
'Algoritmo que calcula el cociente y el resto de la división haciendo que estos resultados
'sean devueltos al algoritmo principal

Public Sub Form_Open()
Dim dividendo, divisor, cociente, resto As Integer

dividendo = InputBox("Ingrese el valor del dividendo")
divisor = InputBox("Ingrese el valor del divisor")

division(dividendo, divisor, ByRef cociente, ByRef resto)

Message.Info("Cociente: " & cociente & "\n" & "Resto: " & resto)

End

'Cabecera: division(Entrada divi,Entrada d,Salida c,Salida r)
'Precondición: dividendo >= divisor y ambos son mayores que 0
'Postcondición: devuelve a través de los parámetros de salida c y r, el cociente y el resto.


Public Sub division(divi As Integer, d As Integer, ByRef c As Integer, ByRef r As Integer) As Integer

c = divi Div d
r = divi Mod d

End

---código---
Como veis en la función división, tenemos paso por valor y referencia.
Espero que les sea útil.

sábado, 7 de julio de 2012

jueves, 28 de junio de 2012

Diapositivas sobre Gambas

Hola!.

Encontré estas diapositivas sobre Gambas.

Aunque son para versiones algo más antiguas, explican información
que puede ser interesante para todos sobre nuestro entorno favorito
de programación.

Diapositivas 1

Diapositivas 2

Diapositivas 3

Referencia:

Portal educativo Extremeño


martes, 19 de junio de 2012

Cómo funcionan los controles de alineación

En este ejemplo veréis como funcionan los controles de alineación:

  • Hbox
  • Vbox
  • HPanel
  • VPanel

 Estos controles son contenedores y permiten alinear sus objetos
 o componentes que están dentro de el. Ya sea verticalmente
 u horizontalmente.

Tenemos propiedades como Padding que le dice cuanto es la separación
en pixels entre componentes (hijos) de su contenedor (el control de alineación).




En el ejemplo debemos seleccionar uno de los 4 tipos y luego
seleccionar las imágenes, que irán llenando "de una forma"
típica de cada control de alineación.Podréis llenar
cada contenedor hasta un máximo que os avisara.

EjemploControlesAlineación



Buscar estos componentes en:

GambasDoc

También encontrareis información en el manual de Gambas:

Alineación de controles en la pagina 114