Me alegro de que te haya servido el tutorial. Se aprende muchísimo viendo ejemplos, te recomiendo, sobre todo al principio, que cuando te encuentres una nueva función mires la ayuda para ver cómo se usa bien y le eches un vistazo al ejemplo de programa que viene. Casi todas las funciones vienen con un programa de ejemplo que las usa ¡y eso es genial!
Uau, veo que hasta has usado estilos.
Ya es cuestión de gustos pero te recomiendo que para estas cosas que están codificadas con numeritos uses las constantes correspondientes, así cuando veas el programa un tiempo después puedas recordar qué habías puesto.
Por ejemplo si dentro de varios meses ves el estilo
0x1000 ¿qué era eso? Es más fácil recordarlo, o al menos buscarlo en la ayuda, si pones
$SS_SUNKEN ("sunken" es "hundido" en inglés, lo que da una idea de lo que hace el estilo).
Tal como pone en la ayuda, para incluir las constantes para etiquetas hay que usar una udf:
#include <StaticConstants.au3>
Por cierto, a la etiqueta
$encabezado le has puesto el estilo a cero. Mejor no pongas nada porque con eso estás quitándole el estilo por defecto.
A ver las preguntas...
a) Que yo sepa no hay nada directo para seleccionar unidades. O dejas que seleccionen una carpeta con
FileSelectFolder() y entonces extraes los dos primeros caracteres para tomar la unidad (o uno si sólo quieres la letra) o tienes que montar tú un selector.
Para montarlo supongo que lo mejor sería usar
DriveGetDrive() que devuelve un array con las unidades según el tipo que le pasas (discos fijos, CD, etc), y con eso montar una lista para presentar al usuario por ejemplo en un combobox, que te advierto ya empieza a ser un control algo avanzado.
Si vas por este camino te recomiendo poner las dudas en un nuevo post, quizás haya otros usuarios interesados en este tema.
b) Para cambiar la negrita se cambia las características de la fuente con
GUICtrlSetFont(). Con eso puedes cambiar el tamaño, negrita, subrayado, tipo de fuente, etc. Como siempre mira la ayuda para ver los detalles. Para cambiar sólo la negrita sería:
$lbl = GUICtrlCreateLabel("Una etiqueta en negrita", 10, 10)
GUICtrlSetFont(-1, -1, 800)
-1 se usa muchas veces para indicar "valor por defecto". Hay que ver la ayuda de cada función para ver dónde permite esto. En
GUICtrlSetFont el primer
-1 indica "
el control anterior" (esto es típico en muchas funciones que tratan con controles o GUIs), el segundo es el tamaño, que la ayuda nos dice que es variable según el tema (8,5 ó 9), así que poniendo
-1 dejamos que lo deje como está.
El
800 para la negrita es un poco raro, pero no es invento de AutoIT, es como funciona el grosor en las fuentes truetype. Normalmente
400 es normal, y
800 negrita.
c) Si quieres que el usuario edite el label efectivamente lo mejor es hacer un
Input (una sóla línea) o un
Edit (caja de texto multilínea). Las funciones estándar para crear controles siempre empiezan por
GUICtrlCreate, así que para hacer un
Input busca la función
GUICtrlCreateInput, y así las demás.
Si quieres editar el texto del label por programación, pero no es necesario que lo toque el usuario, entonces puede ser buena idea dejarlo como label. Puedes cambiar luego el texto del label con
GUICtrlSetData, como ya has utilizado.
d) Es que todo el control de eventos debe estar en el mismo bucle, sino estás "encerrado" en el primero, donde no miras minimizar, hasta que sales de él dándole a cerrar, entonces hace el
ExitLoop y pasa al siguiente bucle, donde ya miras minimizar por eso ya funciona...
Es tan sencillo como añadir un
Case para cada evento. Pon un solo
While:
Código: Seleccionar todo
While 1
Switch GUIGetMsg()
Case $btnes
$var = FileSelectFolder("Seleccione una carpeta.","",1)
GUICtrlSetData($Label_1, $var)
Case $btnMini
GUISetState(@SW_MINIMIZE)
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
Si añades más controles su gestión de eventos debes añadirla a ese mismo bucle, poniendo más
Case al
Switch, uno por cada evento.
Y por cierto, para hacer bucles infinitos lo más formal es poner
While True. Para abreviar se ha estandarizado el uso de
While 1, que es equivalente. Lo de
While 2, aunque funciona, no es nada habitual. Cualquier cosa d
istinta de cero es
True, así que puedes poner
2 ó
45.456 o
"Pepito", pero no es muy normal. Es mejor usar el 1 (o True) para que cualquiera que vea el programa lo identifique enseguida como bucle infinito.