[Sol]Ejecutar accion de varios botones creados dinámicamente
Publicado: 26 Nov 2015, 03:41
Hola amigos, hace mucho que no paro por aquí y necesito de vuestra ayuda.
El tema es el siguiente:
La finalidad es crear una ventana de herramientas con botones que llamen a distintos ejecutables del sistema, pero dichos botones no existen en la GUI, se crean dinámicamente leyendo los datos de un .INI donde está la información de cada botón a crear. La idea es que con un exe compilado, poder cambiar el número de botones y sus propiedades cambiando solamente el fichero .INI evitando tener que recompilar de nuevo el script. Esa parte la tengo funcionando sin problemas, el problema lo encuentro a la hora de llamar a la acción de cada botón que he creado, sencillamente no encuentro la manera de hacerlo y me estoy volviendo loco.
El código del script sería más o menos este:
Y el código del correspondiente archivo "configuracion.ini sería tal que así:
No consigo hacerle funcionar a la parte de asignar una acción al clic del botón, lo único que he conseguido es que se ejecute en bucle infinito la acción que lee del .INI de la clave "ruta". Por eso he comentado la función "RUN" del case de $botón, así si lo probáis no os revienta el PC (literalmente).
Espero vuestros consejos, a mi me sale ya humo de la cabeza y no doy con el asunto, gracias.
El tema es el siguiente:
La finalidad es crear una ventana de herramientas con botones que llamen a distintos ejecutables del sistema, pero dichos botones no existen en la GUI, se crean dinámicamente leyendo los datos de un .INI donde está la información de cada botón a crear. La idea es que con un exe compilado, poder cambiar el número de botones y sus propiedades cambiando solamente el fichero .INI evitando tener que recompilar de nuevo el script. Esa parte la tengo funcionando sin problemas, el problema lo encuentro a la hora de llamar a la acción de cada botón que he creado, sencillamente no encuentro la manera de hacerlo y me estoy volviendo loco.
El código del script sería más o menos este:
Código: Seleccionar todo
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$sFilePath = "configuracion.ini"
$botones = IniReadSectionNames($sFilePath)
$Form1 = GUICreate("Mi Menú", @DesktopWidth, 75, -4, 0,Default, $WS_EX_TOOLWINDOW)
GUISetBkColor(0xBFCDDB)
For $i = 1 To $botones[0]
$boton = GUICtrlCreateButton(IniRead($sFilePath, $botones[$i], "Caption", "Default Value"), IniRead($sFilePath, $botones[$i], "posicion_x", "Default Value"), IniRead($sFilePath, $botones[$i], "posicion_y", "Default Value"), IniRead($sFilePath, $botones[$i], "ancho", "Default Value"), IniRead($sFilePath, $botones[$i], "alto", "Default Value"), $BS_FLAT)
GUICtrlSetFont(-1, IniRead($sFilePath, $botones[$i], "fontsize", "Default Value"), 800, 2, IniRead($sFilePath, $botones[$i], "font", "Default Value"))
GUICtrlSetColor(-1, IniRead($sFilePath, $botones[$i], "fontcolor", "Default Value"))
GUICtrlSetBkColor(-1, IniRead($sFilePath, $botones[$i], "color", "Default Value"))
$accion = IniRead($sFilePath, $botones[$i], "ruta", "Default Value")
Next
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $boton
;Run($accion)
EndSwitch
WEnd
Código: Seleccionar todo
[Boton1]
Caption=Explorador
Ruta=C:\Windows\explorer.exe
Color=0x000080
Font=Arial
FontColor=0XFFFFFF
FontSize=10
Alto=50
Ancho=200
Posicion_x=8
Posicion_y=8
Visible=1
[Boton2]
Caption=CMD
Ruta=C:\windows\system32\cmd.exe
Color=0xff0000
Font=Arial
FontColor=0XFFFFFF
FontSize=10
Alto=50
Ancho=200
Posicion_x=210
Posicion_y=8
Visible=1
Espero vuestros consejos, a mi me sale ya humo de la cabeza y no doy con el asunto, gracias.