Por ejemplo:
- La situación de las ventanas en la pantalla cuando cerramos el programa
- Si se ha iniciado el programa otra vez, o es la primera vez.
- Documentos Recientes: Los últimos archivos de datos abiertos con los que hemos estado trabajando
- Incluso alguna configuración personalizada que el usuario pueda cambiar a su antojo (desde rutas de archivos temporales, colores de letras, tamaños, etc)...
Para guardar este tipo de información podemos usar el componente gb.settings, el cual nos permite de una manera muy fácil, guardar y leer variables que definamos para contener la información que deseemos.
Lo mejor que tiene este componente, es que el mismo se encarga de crear el archivo, abrirlo, guardar y leer la información, sin intervención del programador.
Como dato el archivo de configuración se creará en esta ruta:
User.Home &/ ".config/gambas3" &/ Application.Name & ".conf"
(Siendo Application.Name, el nombre de nuestra aplicación)
Por ejemplo:
Para guardar la situación de la ventana principal:
Lo hacemos en dos pasos
1º Cuando cerramos la aplicación, guardamos los datos en variables:
PUBLIC SUB Form_Close()
' Save window settings when application closes
Settings["Window/Top"] = ME.Top
Settings["Window/Left"] = ME.Left
Settings["Window/Height"] = ME.Height
Settings["Window/Width"] = ME.Width
END
En el archivo de configuración, estaremos un grupo "Window", y dentro de él, las variable Top, Left, Height, Width, con los valores del formulario.
Vista del archivo de configuración:
[Window] Top=13 Left=18 Height=154 Width=235
2º Cuando iniciamos nuestra aplicación, tendremos que leer y asignar los datos de la configuración a nuestro formulario:
PUBLIC SUB Form_Open()
' Si no encuentra el dato, asigna el que tengamos actualmente
ME.Top = Settings["Window/Top", ME.Top]
ME.Left = Settings["Window/Left", ME.Left]
ME.Height = Settings["Window/Height", ME.Height]
ME.Width = Settings["Window/Width", ME.Width]
END
Como veis, es muy sencillo de usar e ideal para los casos comentados más arriba.
Nota 8/4/2014:
Desde que escribí este post, se han introducido nuevas mejoras:
Por ejemplo, para guardar la información de la posición y tamaño de un formulario, se usa el comando:
settings.write(me)
Siendo me el formulario actual.
Para leer los datos de la posición y tamaño del formulario.
settings.read(me)
Esta clase ahora se puede instanciar, con lo cual podemos tener distintas configuraciones de la misma aplicación. Por ejemplo podemos guardar la configuración personalizada de usuarios (de colores, tamaño de letra, tipo de letra) dependiendo quien inicie el programa.
El valor por defecto del directorio donde se guarda la configuración es este:
User.Home &/ ".config/gambas3" &/ Application.Name & ".conf"
Simplemente tenemos que crear instancias de la clase Setting indicandole al constructor la nueva ruta. archivos de configuración como usuarios tengamos.
User.Home &/ ".config/gambas3" &/ Application.Name & "Pepe" ".conf"
Os dejo un ejemplo para que lo veais como se aplica esto.
Ejemplo:
Tenemos un formulario de hay distintos controles (checkbox, spin, radiobutoon etc), y un combobox donde elegimos el usuario que esta usando el programa.
Vamos hacer que se pueda cambiar de usuario y ver cuales son sus configuraciones y también las podemos modificar.
Código fuente:
-
-
Funcionando la aplicación:
Y cambiando algunos valores para otro usuario:
Enlace de descarga: enlace a box.com
Fuente: http://www.gambas-es.org/viewtopic.php?f=1&t=3611&highlight=guardar+configuraciones
Fuentes:
http://gambasdoc.org/help/comp/gb.settings/settings?en&v3
http://www.gambas-es.org/viewtopic.php?f=1&t=19&highlight=settings
http://www.gambas-es.org/viewtopic.php?t=3763&p=21273
Esta clase ahora se puede instanciar, con lo cual podemos tener distintas configuraciones de la misma aplicación. Por ejemplo podemos guardar la configuración personalizada de usuarios (de colores, tamaño de letra, tipo de letra) dependiendo quien inicie el programa.
El valor por defecto del directorio donde se guarda la configuración es este:
User.Home &/ ".config/gambas3" &/ Application.Name & ".conf"
Simplemente tenemos que crear instancias de la clase Setting indicandole al constructor la nueva ruta. archivos de configuración como usuarios tengamos.
User.Home &/ ".config/gambas3" &/ Application.Name & "Pepe" ".conf"
User.Home &/ ".config/gambas3" &/ Application.Name & "Maria" ".conf"
User.Home &/ ".config/gambas3" &/ Application.Name & "Juan" ".conf"Os dejo un ejemplo para que lo veais como se aplica esto.
Ejemplo:
Tenemos un formulario de hay distintos controles (checkbox, spin, radiobutoon etc), y un combobox donde elegimos el usuario que esta usando el programa.
Vamos hacer que se pueda cambiar de usuario y ver cuales son sus configuraciones y también las podemos modificar.
Formulario en el Ide |
-
-
Funcionando la aplicación:
Y cambiando algunos valores para otro usuario:
Enlace de descarga: enlace a box.com
Fuente: http://www.gambas-es.org/viewtopic.php?f=1&t=3611&highlight=guardar+configuraciones
Fuentes:
http://gambasdoc.org/help/comp/gb.settings/settings?en&v3
http://www.gambas-es.org/viewtopic.php?f=1&t=19&highlight=settings
http://www.gambas-es.org/viewtopic.php?t=3763&p=21273
hola probe usar tu codigo para guardar si un checkbox esta checkeado o no pero al abrir la aplicación aparece todo por default y el archivo .conf no se crea.
ResponderEliminarmi codigo es:
PUBLIC SUB Form_Close()
' Save window settings when application closes
Settings["Window/Checkbox1"] = checkbox1.value
Settings["Window/Checkbox2"] = checkbox2.value
END
PUBLIC SUB Form_Open()
' Si no encuentra el dato, asigna el que tengamos actualmente
checkbox1.value = Settings["Window/Checkbox1", checkbox1.value]
checkbox2.value = Settings["Window/Checkbox2", checkbox2.value]
END
el complemente gb.setting lo tengo activo.
yo lo tengo de esta forma y funciona
Eliminaren esta funcion revisa el estado del switchButton que el usuario puso (activo o inactivo)
Public Sub swbtn_clResults_Click()
Select (swbtn_clResults.Value)
Case True
FMain.msettings["settings_application/cl_result"] = True
FMain.msettings.Save()
Case False
FMain.msettings["settings_application/cl_result"] = False
FMain.msettings.Save()
End Select
End
hago un metodo que tiene dos parametros 1 - el switchButton que pasemos y el valor (true,false)
Private Function Set_SwtbnStatus(swbtn As SwitchButton, val As Boolean)
Select (val)
Case True
swbtn.Value = True
Case False
swbtn.Value = False
End Select
End
y para finalizar al inicio del formulario coloco ya el valor que obtiene de las configuraciones
Set_SwtbnStatus(swbtn_clResults, CBool(FMain.msettings["settings_application/cl_result"]))
Ermides. Prueba usar el combobox y selecciona un usuario. Así carga la configuración. El problema ( o es normal) es
ResponderEliminarque según vas seleccionando usuario aparece la misma configuración para todos, si el usuario no tiene ninguna.