martes, 14 de julio de 2015

Recordar lista de palabras en un combobox



' gambas class file

' by postapase
' Activar complemento settings

Public Sub Form_Open()
Me.Center ' el formulario se abre centrado en la pantalla o escritorio
' toma el string anteriormente guardado en el archivo settings,
' separa los string por sus comas generando un string[] y lo asigna
' a la lista del combobox que es una variable de tipo string[]
cbxFiltro.List = Split(Settings["Recientes/Diccionarios"], ",")
End

Public Sub btnBuscar_Click()
Dim Buscar As String

Buscar = cbxFiltro.Text

If cbxFiltro.Count < 4 Then 'si la cantidad de string contenidas en el lista del combobox es menor que 4 ejecuta las lineas siguientes
'el 4 sera el número máximo de palabras a guardar en la lista se puede usar 10, 15 o 20 lo que vos quieras
' si cambias el cuatro por otro valor cambia tambien despues del else en cbxFiltro.Remove(valor-1)
If cbxFiltro.Find(Buscar) = -1 Then 'cbxFiltro.Find(Buscar) devuelve o retorna -1 sino encuentra coincidencias
' si la encuentra devuelve el número de index de la lista
cbxFiltro.Add(Buscar, 0) ' como cbxFiltro.Find(Buscar) retorno -1 significa que la palabra no esta por lo tanto la agregamos
Endif
Else
' si cbxFiltro.Count es mayor que 4 ejecuta estas lineas
cbxFiltro.Remove(3) 'busca en la lista el valor ingresado mas viejo que es el de mas abajo y lo elimina (aqui tal vez sea mejor poner cbxFiltro.Remove(cbxFiltro.List.Max) )
'para dar lugar a la nueva palabra
If cbxFiltro.Find(Buscar) = -1 Then
cbxFiltro.Add(Buscar, 0) 'agrega la nueva palabra en la lista del combobox y la indexa en el primer lugar
Endif
Endif

GuardarRecientes() ' ejecuta o llama a esta subrutina

cbxFiltro.Text = "" ' borra el texto del combobox
cbxFiltro.SetFocus 'da el foco al combobox dejando el cursor parpadeando

End

Private Sub GuardarRecientes() ' rutina que guarda los string de la lista en un string solo separado por comas
Dim palabra, DicRecientes As String

If cbxFiltro.Count > 0 Then ' si la lista NO esta vacía ejecuta las lineas siguientes
For Each palabra In cbxFiltro.List 'recorre la lista del combobox que es una variable de tipo string[]
DicRecientes &= palabra & "," ' y se forma un string con las palabras a recordar separadas por comas
Next
Settings["Recientes/Diccionarios"] = Left(DicRecientes, Len(DicRecientes) - 1)
'elimina el último caracter del string que es una coma y lo guarda en el archivo settings
Else
'si la lista esta vacia guarda un string vacío
Settings["Recientes/Diccionarios"] = "" 'borra la string que contiene la lista de palabras
Endif

Settings.Save ' guarda ya los cambios en el archivo settings

End

Public Sub btnBorrar_Click()
cbxFiltro.Text = "" ' borra el texto del combobox
cbxFiltro.SetFocus 'da el foco al combobox dejando el cursor parpadeando
cbxFiltro.Clear 'borra la lista del combobox
Settings["Recientes/Diccionarios"] = "" 'borra el string que contiene la lista de palabras
Settings.Save ' guarda ya los cambios en el archivo settings
End

Descargar: Recordarlistacombobox-0.0.1.tar.gz