|
|
|
El Evento "On 1:Dialog"
Este es el evento que se usará para controlar la función y habilidad del diálogo, la sintaxis es la siguiente:
on 1:dialog:<nombre_dialogo>:<evento>:<id>:{ comandos }
En seguida se explicará la sintaxis anterior, antes debe saber que mediante el evento ON DIALOG usted podrá:
-
Hacer que se ejecuten los comandos que usted quiera al pulsar sobre cada uno de los botones del diálogo.
-
Asignar a las variables mostradas en campos de texto, el valor que el usuario indique en ese campo.
-
Inicializar campos de texto u otros objetos con la posibilidad de poder usar variables si no lo ha hecho al declarar la tabla.
-
Asignar funciones a ciertos objetos cuando se produzca un doble clic sobre los mismos.
-
El identificador $dname se puede usar dentro del evento y devolverá el <nombre_diálogo>.
-
El identificador $did se puede usar dentro del evento y devolverá la ID del objeto que haya causado el evento.
-
El identificador $devent se puede usar dentro del evento y devolverá el <evento>.
Pasemos a analizar, por tanto, cuales son las variantes del evento ON DIALOG:
on 1:dialog:<nombre_dialogo>:INIT:0:{ ...comandos... }
Se ejecutan los comandos que especifiquemos justo antes de mostrar el diálogo en pantalla, es decir que usaremos este evento para inicializar ciertos objetos, por ejemplo si queremos poner el contenido de una variable en un campo de texto, lo haremos en este evento mediante un /did –a <nombre_dialogo> <%variable>.
on 1:dialog:<nombre_dialogo>:SCLICK:<id>:{ ...comandos... }
Se ejecutan los comandos especificados cuando se produce un clic sobre el objeto con la id indicada.
Ejemplo:
on 1:dialog:midialogo:sclick:3:{ %variable = 0 }
on 1:dialog:<nombre_dialogo>:DCLICK:<id>:{ ...comandos... }
Se ejecutan los comandos especificados cuando el usuario haga un doble clic sobre el objeto de la <id> especificada.
Ejemplo:
on 1:dialog:midialogo:dclick:3:{ echo –s Doble clic sobre objeto $did }
Se ejecutan los comandos cada vez que el usuario introduce o borra un carácter de una caja de texto.
Ejemplo:
on 1:dialog:midialogo:edit:5:{ %variable = $did(5).text
Bien, hasta aquí el manual de ventanas de diálogo, no son realmente complicadas, sobre todo si se compara con la dificultad de hacer una ventana de este tipo mediante ventanas de imagen. Por último vamos a acabar el ejemplo que iniciamos en una de las primeras secciones de este documento, sólo que esta vez podremos acabarlo y darle toda su función y habilidad con lo que hemos aprendido:
Ejemplo:
Creación de un Diálogo con toda su función y habilidad.
Antes que nada recordemos el código que ya escribimos:
Copie lo siguiente en Aliases:
/Dialogo2 {
dialog –m dialogo2 mitabla2
}
Y ahora copie lo siguiente en Remotes:
dialog mitabla2 {
title "Qué información se muestra dónde"
size 30 30 330 260
box "Mostrar información",1,10 10 150 100
radio "En Status",2,20 30 130 20,right,group
radio "En Ventana aparte",4,20 80 130 20,right
box "Otras opciones",5,170 10 150 100
check "Mostrar Nombre",6,180 30 130 20,push
check "Mostrar E-Mail",7,180 55 130 20,push
check "Mostrar Web",8,180 80 130 20,push
box "Datos",9,10 115 310 100
text "Su Nombre:",10,20 135 100 20
text "Su E-Mail:",11,20 160 100 20
text "Su Web:",12,20 185 100 20
edit "",13,100 135 180 20
edit "",14,100 160 180 20
edit "",15,100 185 180 20
button "Mostrar Información",16,40 225 130 25,ok
button "Cancelar",17,190 225 90 25,cancel
}
Este código ya ha sido visto anteriormente así que doy por hecho que ya lo entiende. Lo siguiente que haremos será declarar en la sección Remotes una serie de eventos ON DIALOG para asignarle nuevos valores a esas variables (según lo desee el usuario) y después para implementar la función del botón “Mostrar información”. Copiemos lo siguiente en la sección “Remotes”:
on 1:dialog:dialogo2:init:0:{
if (%mostrar.donde == status) { did -c dialogo2 2 }
if (%mostrar.donde == aparte) { did -c dialogo2 4 }
if (%mostrar.nombre == si) { did -c dialogo2 6 }
if (%mostrar.email == si) { did -c dialogo2 7 }
if (%mostrar.web == si) { did -c dialogo2 8 }
did -a dialogo2 13 %sunombre
did -a dialogo2 14 %suemail
did -a dialogo2 15 %suweb
}
En el evento INIT inicializaremos el diálogo, es decir, que si la variable %mostrar.donde vale status, se activará el botón de radio correspondiente, lo mismo pasa con los checkbox, que son activados por código puesto que las ventanas de diálogo aparecen con todos sus objetos desactivados a no ser que se especifique lo contrario. Por último se pone el contenido de las variables del nombre, email y web en sus campos de texto correspondientes:
on 1:dialog:dialogo2:sclick:2:{ %mostrar.donde = status }
on 1:dialog:dialogo2:sclick:4:{ %mostrar.donde = aparte }
Con ese código haremos que según pulse el usuario el un botón de radio u otro la variable %mostrar.donde cambie y así podamos saber después donde quiere mostrar el usuario la información, puesto que quedará almacenado en dicha variable.
on 1:dialog:dialogo2:sclick:6:{ %mostrar.nombre = $iif(%mostrar.nombre == si,no,si) }
on 1:dialog:dialogo2:sclick:7:{ %mostrar.email = $iif(%mostrar.email == si,no,si) }
on 1:dialog:dialogo2:sclick:8:{ %mostrar.web = $iif(%mostrar.web == si,no,si) }
Este otro trozo hará que según el usuario de clic sobre los checkbox estos activen o desactiven la variable según su posición anterior, de ahí el uso del identificador $iif, que devolverá la primera opción si la condición se cumple, y en caso contrario devolverá la segunda opción siendo $iif(condicion,1ªopcion,2ªopcion).
on 1:dialog:dialogo2:sclick:16:{
if (%mostrar.donde == aparte) {
window –a @Informacion 100 10 300 200
if (%mostrar.nombre == si) { aline @Informacion Nombre: %sunombre
}
if (%mostrar.email == si) { aline @Informacion E-Mail: %suemail }
if (%mostrar.web == si) { aline @Informacion Web: %suweb }
}
else {
if (%mostrar.nombre == si) { echo –s Nombre: %sunombre }
if (%mostrar.email == si) { echo –s E-Mail: %suemail }
if (%mostrar.web == si) { echo –s Web: %suweb }
}
}
En este trozo hemos especificado la conducta que esperamos del botón “Mostrar Información" cuando sea pulsado, a pesar de la cantidad de líneas es un código muy simple y se limita a comprobar el valor de la variable %mostrar.donde para averiguar donde quiere el usuario mostrar la información, y después comprueba si están activadas las variables %mostrar.donde web, %mostrar.web y %mostrar.email: para mostrar o no esa información.
on 1:dialog:dialogo2:edit:13:{ %sunombre = $did(13).text }
on 1:dialog:dialogo2:edit:14: { %suemail = $did(14).text }
on 1:dialog:dialogo2:edit:15:{ %suweb = $did(15).text }
Por último le tenemos que decir al script que cuando el usuario edite los campos de texto13,14 y 15 asigne el texto de esos campos como valor a sus respectivas variables, para que después puedan ser mostradas.
Nos alegramos que haya llegado hasta aquí, ya que en esta sección se han tocado detalladamente todos los aspectos de las ventanas de diálogo, espero que haya aprendido de él.
|
|
|
|
|
|
|
Hoy habia 16 visitantes (30 clics a subpáginas) ¡Aqui en esta página! |
|
|
|
|
|
|
|