Config class settings pero con JSON + Formulario de ejemplo + Control ListMaker - Versión para impresión +- Comunidad Gambas-es (https://gambas-es.org) +-- Foro: Gambas (https://gambas-es.org/forum-3.html) +--- Foro: Aplicaciones/Fragmentos de Código (https://gambas-es.org/forum-8.html) +--- Tema: Config class settings pero con JSON + Formulario de ejemplo + Control ListMaker (/thread-433.html) Páginas:
1
2
|
Config class settings pero con JSON + Formulario de ejemplo + Control ListMaker - tincho - 01-06-2021 Hola amigos. Deseo presentarles un método para gestionar la configuración de un programa, que a mi me parece interesante. En conjunto con TercoIDE preparamos este ejemplo en el cual en una clase existen todos los parámetros de un programa y con gran flexibilidad pueden agregarse mas. Luego en cualquier otra parte del programa se pueden leer y escribir esas variables. Finalmente existe un método (Save) que recorre los simbolos de la clase y los guarda en un archivo de texto en formato json para futuros usos recuperando estos datos con el método "Load". Por favor siéntanse en libertad de opinar, comentar o mejorar este programa. Config.class Código: ' Gambas class file Por ejemplo en un formulario... Código: Public Sub Form_Open() Agregado - 2021.08.20 Este método extiende la clase JSON y lo que hace es codificar el texto Json en una forma mas legible para humanos. Para usarla tienen que crear una clase en su proyecto que se llame JSON (con mayúsculas) y luego poner este código (Encode2) listo luego en vez de usar JSON.Encode en sus proyectos usen JSON.Encode2 y listo. Código: ' Gambas class file Agregado - 2023.05.04 - Proyecto de estudio que utiliza la clase Config. Hay un nuevo control, una clase llamada ListMaker, que permite la edición de lista de datos. Saludos. RE: Config class + archivo json - tercoide - 01-06-2021 La principal ventaja con respecto a settings es que a medida que el programa se expande , simplemente agregamos variables Public que luego tenemos a mano escribiendo en cualquier parte del codigo Config y el punto. Asi, no tenemos q estar recordandolas. Y si tenemos diversas configuraciones, simplemente copiamos y renombramos la clase: Config, WindowPositions, UserOptions , etc . Lo cómico es que la clase pueda inspeccionarse a si misma en busca de variables. RE: Config class + archivo json - Shordi - 01-06-2021 Está chulo. Supera la clase settings, que es lo que yo ahora uso. RE: Config class + archivo json - tincho - 01-06-2021 (01-06-2021, 17:04)Shordi escribió: Supera la clase settings Settings esta bien para unas pocas variables pero tiene dos problemas, uno es que si alguna variable se guarda como, 0, cadena vacía o Null se pierde del archivo de texto, simplemente desaparece, el otro es que la forma de recuperar o escribir datos es Settings["El_asunto", "default"] y Settings["El_asunto"] = "123456" y en este sistema hay que recordar el texto exacto, no es posible usar el operador . Saludos. RE: Config class + archivo json - jguardon - 01-06-2021 Me ha gustado mucho el detalle de la "introspección", algo muy usual en Python. La base del funcionamiento son los propios objetos declarados dentro de la clase Config, sin embargo sería genial que no hiciera falta hacerlo y que se creasen dinámicamente a partir del fichero que guardamos. Pero eso ya es otro cantar... Enhorabuena, me ha gustado mucho! RE: Config class + archivo json - tincho - 01-06-2021 (01-06-2021, 20:25)jguardon escribió: ...sería genial ... que se creasen dinámicamente a partir del fichero que guardamos. Pero eso ya es otro cantar... Al así como hConfic.AddSymbol .... ? pero aunque se pudiese hacer, creo que es mejor mantenerlo como esta porque el archivo de configuracion no existe la primera vez que se usa el programa. Saludos. RE: Config class + archivo json - tincho - 20-08-2021 Hola Amigos. Hice una actualización, concretamente una clase que Extiende JSON para mejorar la codificación y hacerla mas legible por humanos. Puse todo al pincipio. Saludos. RE: Presentando Config class, configuracion de programas con JSON - tercoide - 18-10-2022 Estaria bueno extender esta clase pueda guardar otras clases clases que tenga metidas (y tambien arrays de ellas): Código: 'Clase1.Class Código: Código: 'Config.Class Lo he intentado sin exito. RE: Presentando Config class, configuracion de programas con JSON - tincho - 18-10-2022 (18-10-2022, 21:18)tercoide escribió: Lo he intentado sin exito. Creo que el problema radica en que vos querés guardar una clase, y me parece que lo que se puede guardar es la instancia de una clase que no es lo mismo. RE: Presentando Config class, configuracion de programas con JSON - tincho - 05-05-2023 Retomado el tema. Vengo usando esta clase desde hace alrededor de dos años ya pero estaba faltando un formulario que edite el archivo .json de forma amena. Hace un tiempo hice un formulario para editar la configuración pero abordaba las listas y las colecciones con un TextArea lo que no era adecuado. Actualmente estoy usando un control llamado ListMaker basado en el control de Shordi para editar listas pero que permite editar colecciones simples [1] también, lo que deja a este control en posición de editar casi cualquier tipo de lista. Dejo el programa en el primer post por si alguien desea echar un vistazo y ayudar a resolver:
La idea es que cuando la lista de valores del control cambie que salte un evento Change para que el formulario se "entere" de que la lista cambio. [1] Son la colecciones en las que el tipo de dato de un ítem nunca es un objeto. |