EJEMPLO DE FUNCIONAMIENTO
Funcionamiento del ejemplo.
Este será el ejemplo que realizaremos y que servirá para explicaros el funcionamiento del programa.
![]() |
Como os he comentado antes, el programa se basa en comandos, formando conjuntos de ellos que se llaman grupos (en nomenclatura Windows, carpetas). Cada grupo puede tener subgrupos para, por ejemplo, diferenciar tipos de comandos (como si fueran las carpetas de vuestro disco duro).
Los comandos son los encargados de ejecutar las acciones que nosotros requerimos en la ventana de funciones de comando. Estos comandos pueden ser activados por un evento como podéis ver en el comando marcado. Los eventos son definidos en la ventana de evento y pueden, normalmente, captarse con los plugins activados, se pulsa el botón LearnEvent y en cuanto se detecte el evento (pulsar el botón de un mando) éste se quedará grabado y cuando se pulse dicho botón del mando, el programa testeara si para ese evento hay algún comando y ese se activará. También se puede activar un comando saltando hacia él por medio de una opción de la pestaña Girder de las funciones de comando. Apuntar que si varios comandos tienen el mismo evento todos se activaran , en orden correlativo de arriba hacia abajo. Hay otra figura que en este ejemplo no emplearemos, llamado MultiGrupo , éste se activará cuando suceda el evento que escojamos o saltemos a él (como un comando), y en ese momento las funciones de todos los comandos que hayamos asociado a él se activarán de forma correlativa (como una macro); por ejemplo, se puede utilizar para activar de golpe varios programas que se necesiten a la vez .
|
En resumen y simplificando, nuestro ejemplo funcionará de la siguiente manera:
- TestPrograma se ha configurado para que se active cuando ocurra cualquier evento. Al activarse uno, verifica si Media Player está en la ventana activa; si lo está salta al comando Habilitar_Menu, si no, no hace nada.
- Habilitar_Menu habilitará el grupo Menu_Teclado.
- Al habilitar el grupo los comandos, se activan, y si uno de ellos tiene configurado como evento el que se usó, en nuestro caso Play que activa el avance de Media Player.
- Por último, deshabilitar_Menu, que está configurado para activarse con cualquier evento, deshabilita el menú de nuevo.
Con este sistema, conseguimos que si Media Player no está como ventana activa, no reciba ninguna orden, si este procedimiento lo hacemos con varios programas tendremos que nuestro mando tiene diferentes configuraciones según el programa que esté activo. Por ejemplo podríamos hacer el grupo WindowsMedia , otro ZoomPlayer y cada uno con sus diferentes configuraciones y la orden de play sólo la recibiría el programa que esté en la ventana activa.
Creación del ejemplo.
Creación del árbol.
En este apartado crearemos, paso a paso, el ejemplo anteriormente detallado, notar que he cambiado los nombres, no es un error , es para forzaros a comprender lo que hacemos y que se pueden poner los nombres que cada uno estime oportuno, la estructura es la misma.
Primero crearemos nuestra estructura de grupos y comandos, para después configurar los eventos y las funciones de los comandos.
![]() |
Dando al botón derecho sobre la ventana del árbol de funciones, escogemos Add Toplevel Group, para tener un grupo raíz, al que le cambiaremos el nombre pinchando sobre ella como antes y escogiendo renombrar.
Añadiremos un comando pinchando con botón derecho sobre la carpeta MediaPlayer y escogiendo Añadir Comando. Renombramos el comando de la misma manera que el grupo quedando MediaplayerActivo. Volvemos a repetir la acción y creamos HabilitarMediaPlayer .
|
![]() |
Acabado esto, crearemos el subgrupo MenuMediaPlayer, hacemos el mismo procedimiento como con los comandos pero escogeremos Añadir Grupo, cambiamos el nombre y hecho. Para los comandos en el subgrupo, marcaremos éste, daremos al botón derecho y seguiremos el mismo procedimiento que hemos seguido con los demás, creando esta vez, Play/Pause y Deshabilitar.
|
Asignar funciones y eventos.
Ahora llega el momento, creado ya nuestro árbol de comandos, de empezar a dar función y el evento que disparará a cada uno para estructurar nuestra lógica de funcionamiento que he explicado anteriormente.

Empezaremos con MediaplayerActivo?. Lo marcamos pinchando sobre él y vamos a la ventana de comando para escoger la función que realizará. En este caso la pestaña Girder y seleccionamos Is Foreground, esta opción es un salto condicional si la aplicación que marcaremos como objeto esta en la ventana activa entonces saltamos a HabilitarMediaPlayer sino MenuMediaPlayer (o también no hacer nada). La localización de nuestro salto la obtendremos con los botones Explorar.
Ahora sólo queda marcar el objetivo, si tenemos el programa que queremos que sea el objetivo activo, mucho mejor.
Al pulsar el botón Objetivo se nos abrirá la ventana Seleccionador de Objetivo, y de allí obtendréis un listado de las aplicaciones que están en funcionamiento y los objetos de cada una. Para no liar el tema, a nosotros nos interesa la aplicación en si. Seleccionamos wmplayer para que quede como en la foto y marcamos las opciones Ejecutable y La cadena coincide. Normalmente con estas opciones es suficiente, pero os animo a experimentar con cada opción y veréis su funcionamiento, pues podemos si añadimos las opciones de hijos (child) por ejemplo incidir en la ventana que nos convenga en un programa que tiene varias ventanas abiertas.
El evento asignado a este comando será un evento genérico universal, éste se dispara siempre que cualquier evento suceda. Para ello marcamos el comando al que le asignaremos el evento, después nos desplazamos a la ventana de eventos , escogemos Girder Events y pulsamos Learn; se abrirá un ventana de opciones buscamos On Event , pulsamos Select y listos.
|
|
Pasamos al comando HabilitarMediaPlayer: seguimos el procedimiento anterior pinchando sobre él y prestamos nuestra atención en la ventana comando, pestaña Girder , buscamos la opción Grupo habilitado, con el botón Explorar escogemos el grupo que se habilitará: MenuMediaPlayer . Como accederemos a este comando por un salto, no necesitamos evento para que se active.
|




