Página 1 de 1

Formularios anidados

Publicado: 28 Nov 2010, 12:15
por jamaro
Hola a todos:

Sigo con mi proyecto de migrar una base de datos de MS-Access a Autoit+SQLite (luego vendrán más si se me da bien) y me sigue surgiendo dudas de planteamiento.
Superado, gracias al foro, el comienzo del uso de SQLite desde Autoit, ahora la duda está en los formularios.

Hasta ahora todo lo que he hecho ha sido con un único formulario, y a lo sumo, pestañas que me ayudaban a organizarlos. Siempre he intentado seguir un criterio para el nombre de los controles, poniendo un prefijo:
$e_nombre: Para etiquetas
$b_nombre: Para botones
$i_nombre: Para "inputs"
$c_nombre: Para "combo box"
$l_nombre: Para listas
....

Pero como en el proyecto de migración que estoy empezando, preveo varios formularios (p.e.: un formulario para cada tabla de la base de datos que deseo editar/crear), el número de controles será muy grande, y en muchas ocasiones el nombre del control sería repetido (al menos hasta ahora en Visual Basic de Access lo era).
A ver si me explico, en Visual Basic, al control es fácil llamarlo anteponiendo el nombre del formulario:

Form1.Botón_Aceptar
Form2.Botón_Aceptar
Form3.Botón_Aceptar
....

Con Autoit, por lo que sé y he podido leer, no es posible hacerlo así, y sería necesario crear un nombre distinto para cada control de cada formulario. El botón "Aceptar" por ejemplo, aparecerá en casi todos los formularios y muchas veces, los formularios estarán anidados.

He buscado en el foro y no he encontrado nada al respecto. En el foro inglés encontré estos hilos:
http://www.autoitscript.com/forum/topic ... 96-part-1/
http://www.autoitscript.com/forum/topic ... t-part-ii/

Las preguntas al foro son las siguientes:
¿Os parece adecuado el método que explican ahí?
¿utilizáis otro método más sencillo?
¿algún "truco"?

Un saludo.

Re: Formularios anidados

Publicado: 29 Nov 2010, 01:27
por Chefito
Hombre, eso es un tema que va con cada uno y algo con lo que quieras hacer.
Si te aclaras más con nombres fijos....ejemplo btOKGui1, btOKGui2, etc o cosas paracidas, pues hazlo así. Recuerda que debes poner nombres descriptivos para saber que contienen esas variables.

También está muy bien el utilizar matrices de variables (arrays) para estas cosas, sobre todo si son muchas con las mismas propiedades. Esto tiene ventajas, y es que puedes tratarlas a todas a la vez con un simple bucle (ejemplo for.......next).
La única pega que se le puede poner a este método es que el nombre de la variable es igual para todos los objetos. Debes guiarte mucho por el índice del array. Pero si enlazas el índice del array con por ejemplo el número del gui (form) no debes tener problemas para identificar a que form pertenece cada objeto :smt023 .

Solamente busca la que más te aclare y la que más facil te haga el código.

Saludos.

Re: Formularios anidados

Publicado: 29 Nov 2010, 09:22
por Ximorro
Coincido que con las matrices al final va a ser tan engorroso el acceso a base de índices que no es tanta ventaja tenerlo tan ordenadito...
Probablemente lo más fácil será que le pongas también un prefijo a los nombres que indique el formulario: $F1btnAceptar, $F2btnAceptar, etc.

A veces podrás repetir variables en formularios simples que puedas manejar en una función (probablemente no los creas todos en el código Global), en ese caso las variables serán locales y no colisionarán con otras. Eso funciona si no tienes que tener varios formularios abiertos A LA VEZ con variables con nombres compartidos...

De todas maneras en AutoIT es un poco rollo manejar varios formularios abiertos a la vez, así que si puedes evitarlo podrás reutilizar muchos nombres, pues se irán reasignando según se vayan creando y destruyendo formularios.

Re: Formularios anidados

Publicado: 29 Nov 2010, 12:52
por jamaro
Hola:

Creo que seguiré vuestros consejos, y de momento intentaré trabajar con nombres tipo $For1..., $For2...

No he trabajado nunca con formularios anidados, y estoy empezando a echar un vistazo a los "parent" y "child"....

Seguiré preguntando ;-)

Gracias