SCRIPTING
INTRODUCCIÓN
Las ventanas de diálogo o “dialogs” son un nuevo recurso
que nos ofrecen las versines de mIRC 5.5 y superior
para crear auténticas ventanas tipo windows (con botones de
radio, campos de texto, etc) de una forma relativamente
sencilla, al menos es muchísimo más fácil que hacerlo
mediante ventanas de imagen, más adelante veremos por qué.
En realidad este tipo de ventanas ya existían antes de la
versión 5.5, me refiero a los identificadores $?,$sdir,$dir,...
etc. que no eran más que ventanas de diálogo ya configuradas
para hacer una tarea concreta. La gran ventaja de los nuevos
“dialogs” es que ahorá usted no está limitado al uso de
esas ventanas preconfiguradas, sino que podrá crear las suyas
propias para todo tipo de funciones. Sin más, y puesto que se
supone que usted ya es medianamente experto en el uso de Alias
y Remotes, pasemos a ver los comandos que nos permitirán la
creación de ventanas de diálogo:
EL COMANDO /dialog
Creará una ventana de diálogo totalmente independiente de la
tarea que el mIRC esté realizando en ese momento, es
decir que mientras la ventana de diálogo permanece abierta
usted podrá acceder a las otras ventanas del mIRC
(cosa que no pasaba con los diálogos $?, $dir,...
etc). Para mostrar en pantalla un diálogo, usaremos la
sintaxis:
/dialog [–mda] <nombre_dialogo>
<nombre_tabla>
Donde <nombre_dialogo> es aquel con el que usted se
referirá al mismo, y <nombre_tabla> es el nombre de una
tabla de diálogo que usted tendrá que declarar más adelante
y en la que diseñará su aspecto, dimensiones y contenido
(posición de los botones, botones de radio,... etc).
NOTA: Se puede, y de hecho es recomendable, usar el
mismo nombre para el nombre del diálogo y para la tabla, para
evitar posteriores confusiones.
A continuación tiene una explicación de la función de los
tres parámetros disponibles, tenga en cuenta que el parámetro
-m es obligatorio y sin él no se
creará nuestra ventana de dialogo:
-m: Es el
parámetro que usará normalmente, sirve para crear una
ventana de diálogo sin ningún atributo, es decir que todos
los atributos (título, tamaño...) serán especificados en la
tabla del diálogo.
Ejemplo: /dialog –m midialogo
mitabla
-ma: Crea una ventana de diálogo sin atributos (como
la anterior) pero además usa la ventana activa como
“madre”, es decir que al cerrar la “ventana madre” se
cerrará también la que hemos creado.
Ejemplo: /dialog –ma midialogo
mitabla
-md: Crea un diálogo sin atributos (puesto que lleva
el parámetro -m) y lo abre como ventana de escritorio
(será mostrada en la barra de tareas inferior de Windows).
Ejemplo: /dialog –md midialogo
mitabla
Una vez creado, podemos volver a usar el comando /dialog,
pero esta vez para cambiar alguna de sus propiedades, y con la
sintaxis:
/dialog [-tsonkc] <nombre_dialogo> [atributos]
Y dependiendo del parámetro que especifique en [-tsonkc],
usaremos unos atributos u otros (o a veces ninguno):
-x: Cierra una ventana de diálogo.
Ejemplo: /dialog –x midialogo
-t: Cambia el título deuna ventana de diálogo.
Ejemplo: /dialog –t midialogo
Este es el nuevo título
-s: Cambia el tamaño y la posición del diálogo en
base a las coordenadas y dimensiones que se especifiquen:.
Ejemplo: /dialog –s midialogo
10 20 300 400
NOTA: Recuerde la definición de “rectángulo” en
el tutorial de ventanas de imagen, el ejemplo de arriba pondrá
la esquina superior izquierda del diálogo en las coordenadas
x(10) y(20) y le dará un tamaño de 300 pixels de largo por
400 de alto.
-o: Pone el diálogo encima de todas las ventanas que
tenga abiertas (on top), y sigue estando encima aunque pulse
fuera de ella.
Ejemplo: /dialog –o midialogo
-n: Quita el atributo
“on top” de un dialogo, es decir que ya no estará
permanentemente encima de todas las ventanas.
Ejemplo: /dialog –n midialogo
-k: Provoca el efecto de pulsar el botón “ok” de
un diálogo. Por defecto, el efecto de este botón es
simplemente el de cerrar el dialogo, pero más adelante
veremos que le podrá asignarle más funciones.
Ejemplo: /dialog –k midialogo
-c: Provoca el efecto de pulsar en un boton
“cancel” de un diálogo, que por defecto es exactamente el
mismo que el de un boton “ok”, pero al igual que en el
anterior, se podrá modificar.
Ejemplo: /dialog –c midialogo
Vista la creación de ventanas de diálogo, ahora el tema será
como crear las ya nombradas “Tablas de diálogo”
TABLAS DE DIÁLOGO
Como hemos visto anteriormente en la creación de diálogos,
es necesario especificar el nombre de una tabla en la que
definiremos el título,tamaño y objetos que habrá en el
mismo. En está sección usted aprenderá a crear tablas de diálogo
revisando todas las posibilidades que nos ofrece el mIRC.
La declaración de tablas de dialogo se hace en la sección
Remotes, y de la siguiente forma:
DIALOG
<nombre_tabla> {
.........
}
Todo lo que
hemos hecho es decirle al script que existe una tabla de diálogo
de nombre "nombre_tabla", pero para que esta
sea válida tendremos que incluir en ella la declaración de 3
cosas imprescindibles: El título del diálogo (que aparecera
en la barra de título del mismo), el tamaño y posición del
dialogo (en el formato x y w h ), y al menos un boton de tipo
“ok” o “cancel” para cerrar el diálogo. Para ello
escribiremos lo siguiente:
dialog mitabla {
title
“Aquí el título”
size <x y w h>
button
“Texto_del_boton”,<ID>,<x y w
h>,<estilo>
}
Donde dice x y w h recuerde que ha de poner las coordenadas
que definen el rectángulo al que se refiere: posición de la
esquina superior izquierda del dialogo (x,y), longitud (w) y
altitud (h) en pixels. Donde dice “ID” se refiere a un número
que asignaremos a cada objeto que añadamos a la tabla, ese número
nos servirá más adelante para referirnos a ese objeto, por
lo tanto no se puede repetir la misma ID en dos objetos dentro
de una misma tabla. Y por último el estilo, al tratarse de un
botón, en este caso será uno de los siguientes:
-
ok:
Crea un boton que cierre el dialogo al pulsarlo.
-
cancel:
Crea un boton que tambien cierra el dialogo al pulsarlo.
-
default:
Crea un boton que no cierra el dialogo, le podremos
asignar otra funcion más adelante.
Antes de entrar en el resto de objetos que podrá usar, veamos
este pequeño ejemplo para que vaya entendiendo el
funcionamiento de las tablas, copie lo siguiente en
“Aliases”:
/Dialogo { dialog –m midialogo mitabla
}
Copie esto otro en “Remotes”:
dialog mitabla {
title
"Hola Mundo!!"
size 20 20 120 100
button "¡¡Adiós!!",1,20 20
80 50,ok
}
Si ahora escribe el alias que acaba de crear: "/dialogo",
verá como le aparece una ventana con el título que ha
especificado y con un bóton de tipo “ok” (cierra el
dialogo al pulsarlo) , las coordenadas y tamaño de la misma
serán: “20 20 100 100”.
A continuación veremos ya la relación de objetos que podemos
declarar en una ventana de dialogo:
title “Título”
Como hemos visto en el ejemplo anterior, el texto que pongamos
entre “ “ será el texto que salga en la barra de título
del dialogo.
size x y w h
Indica la posición y tamaño del diálogo. Si indicamos el
valor ‘-1’ para x e y, el diálogo aparecerá centrado en
la pantalla.
text “Texto”,ID,x y w h,estilo
Pone el texto que indiquemos en las coordenadas x y w h.
Recuerde que a cada objeto que ponga en el diálgo le ha de
asignar un número ID, el que usted quiera para despues
referirse a ese objeto más adelante. El estilo es opcional,
si no se especifica ninguno el texto estará alineado a la
izquierda del rectángulo “x y w h”, los estilos que puede
utilizar son:
edit “Texto inicial”,ID,x y w h,estilo
Inserta una caja de texto en el lugar indicado, con una
posicion y tamaño dados en “x y w h”, y con uno de los
estilos siguientes:
<en_blanco> : si no especifica ningun estilo: campo de
texto normal con el texto inicial alineado a la izquierda.
-
right:
alinea el texto inicial a la derecha.
-
center:
centra el texto inicial.
-
multi:
crea un campo de texto con multiples líneas, para ello
ademas de especificar este estilo tendrá que hacer el
campo más alto (aumentar el valor ‘h’).
-
pass:
útil para introducir passwords, trasforma cada carácter
que escribamos en el campo en un asterisco (*).
-
read:
para que el campo sea solo para mostrar información al
usuario, es decir que el texto que pongamos en ese campo
no podrá ser modificado por el usario.
-
hsbar:
pone una barra de desplazamiento horizontal en la parte
inferior.
-
vsbar:
pone una barra de desplazamiento vertical a la derecha.
-
autohs:
hace que el campo se desplaze automaticamente en
horizontal cuando introduzcamos un texto que ocupe más
que el tamaño de la caja de texto.
-
autovs:
hace que el campo se desplaze automaticamente en vertical
cuando introduzcamos un texto que ocupe más que el tamaño
de la caja.
button “Texto del boton”,ID,x y w h,tipo
Crea un botón en cuyo interior ponga el texto que
especifiquemos, y lo posiciona en las coordinadas x,y con un
tamaño de ‘w’ pixels de largo por ‘h’ de alto. Los
tipos posibles son:
-
ok:
Al pulsar el botón se cerrará el diálogo.
-
cancel:
Al pulsar el botón se cerrará el dialogo.
-
default:
Al pusar el botón no se cierra el diálogo,
especificaremos la funcion de este tipo de botones más
adelante.
check “Texto”,ID,x y w h,estilo
Crea un botón “checkbox” o botones de selección de
opciones (sirven principalmente para activar/desactivar algo)
en las coordenadas y con el texto especificado. Los estilos
posibles son:
-
right:
el texto se coloca a la derecha del checkbox.
-
left:
el texto se coloca a la izquierda del checkbox.
-
3state:
pone un checkbox de 3 estados (pulsado, no pulsado, e
intermedio).
-
push:
pone un tipo especial de checkbox que en vez de con
casillas pulsables, se hace mediante botones que
permanecen pulsados.
radio “Texto”,ID,x y w h,estilo
Crea un botón de radio (sirven para elegir entre una entre
varias opciones) en las coordinadas “x y w h” y con el
texto “Texto”. Los estilos posibles son:
-
right:
el texto se coloca a la derecha del boton de radio.
-
left:
el texto se coloca a la izquierda del boton de radio.
-
push:
pone un tipo especial de boton de radio hecho a base de
botones estandar.
box “Titulo”,ID,x y w h
Crea un rectángulo con el titulo, posicion y tamaño
especificados, se sule usar para enmarcar grupos de objetos,
por ejemplo grupos de botones de radio.
list ID,x y w h,estilo
Crea una lista de objetos en las coordinadas especificadas
(siempre relativas a la ventana de diálogo) en la que se podrán
elegir uno o mas objetos a la vez de la lista dependiendo del
estilo. El cómo añadir mas objetos a la lista lo veremos más
adelante. Los estilos posibles son:
<en_blanco>: si no especificamos estilo, se crea una
lista en la que solo podemos seleccionar un objeto a la vez y
el
orden de estos será el mismo en que los añadamos mas
adelante.
combo ID,x y w h,estilo
Crea una lista de objetos en la que solo se podrá elegir uno
de ellos, en las coordenadas especificadas. Los estilos
posibles son:
-
sort:
ordena los objetos de la lista por orden alfabético.
-
edit:
pone una editbox arriba de la lista. Al pulsar en un
objeto de la lista éste aparece en la editbox y puede ser
editado.
-
drop:
pone un recuadro en el que al pulsar aparecerá la lista
de objetos.
icon ID,x y w h,[archivo]
Inserta una imagen en formato .bmp en las coordenadas que
indiquemos. Si los valores ‘w’ y ‘h’ no coinciden con
el tamaño de la imagen, ésta será estrechada o ensanchada
al tamaño que hayamos especificado, el parámetro archivo no
hace falta especficarlo ahora, lo podrá hacer más adelante.
Hasta aquí todos los objetos que puede poner en un diálogo.
Adicionalmente a los estilos que se han comentado, cualquier
objeto puede además contar con los siguientes:
- disable: Inabilita
en objeto.
- hide: Esconde el
objeto.
- group: Indica el
comienzo de un grupo, útil para marcar el comienzo de un
grupo de botones de radio, para ello en el primer botón
del grupo indicaremos el estilo “group”.
- result: Indica que
el contenido de este objeto será el resultado que
devuelva el dialogo al pulsar el boton “ok”. Solo se
usa cuando el diálogo lo abrimos mediante el
identificador $dialog (explicado má adelante).
Una cosa importante que debe
saber es que se pueden especificar VARIOS estilos a la vez con
solo ponerlos separados con comas, por ejemplo:
edit “Texto”,4,10 10 100
20,autohs,right
NOTA: En la declaración de objetos puede usar
variables, es decir podrá, por ejemplo, mostrar en un campo
de texto el valor de una variable.
Ya hemos visto todos los tipos de objetos que podrá usar a la
hora de crear una tabla de diálogo, por supuesto no usará
todos estos tipos en el mismo diálogo, aunque podría hacerlo
si quisiera... antes de seguir vamos a hacer un ejemplo de una
ventana algo más complicada ya que con lo que sabemos hasta
ahora es posible crear la interfaz gráfica de cualquier
ventana de diálogo imaginable, lo próximo será proporcionar
funcionabilidad a cada uno de los objetos... pero antes, lo
dicho, vamos a un ejemplo:
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
}
No se va a comentar el código línea por línea puesto que
sería repetir lo ya explicado, pero una vez leído y probado
(usando el alias "/dialogo2" ) se debe haber
dado cuenta de unas cosas importantes:
- Cada objeto tiene su ID,
en este ejemplo se van numerando de 1 a N siendo ‘N’
el numero total de objetos, de esa forma más adelante nos
será más facil acordarnos de la ID de un objeto.
- Cuando el texto inicial
de, por ejemplo, un campo de texto queremos que sea nulo,
es decir, que no haya texto inicial, se especifican las
comillas vacías “”.
- Al pulsar en uno de los
botones de radio, el resto quedan sin pulsar, esto se ha
conseguido indicando en el primero de ellos el estilo
“group”. Si hubiera otro grupo de botones de radio en
otra seccion del diálogo haríamos lo mismo, indicaríamos
en el primer boton el estilo group.
- El uso de “box” da un
aspecto más agradable al diálogo, su uso esta muy
recomendado para encuadrar objetos del mismo tipo o tema.
EL COMANDO /did
Una vez abierta una ventana de diálogo lo normal es que
queramos modificar algo, quizas queramos añadir texto a un
campo de texto, o poner una variable en éste, para ello
usaremos el comando /did que
sirve para modificar una ventana de diálogo que ya está
abierta. La sintaxis es:
/did [–ftebvhnmcukradiog] <nombre_dialogo>
<id> [N] [texto/archivo]
Y a continuación la explicación de los diferentes parámetros
que podemos usar con este comando:
-f: Enfoca el objeto <id>.
Ejemplo: /did –f midialogo 20
-t: Hace que el bóton
<id> sea el bóton por defecto (su funcion se producirá
tambien al pulsar ENTER).
Ejemplo: /did –t midialogo 23
-b: Hace que no se pueda interactuar con el objeto
<id>.
Ejemplo: /did –b midialogo 12
-e: Devuelve la interacción al objeto <id>, en
caso de que se le hubiera quitado con el parámetro anterior.
Ejemplo: /did –e midialogo 16
-v: Hace
que el objeto <id> sea visible.
Ejemplo: /did –v midialogo 10
-h: Esconde el objeto <id> (lo hace invisible).
Ejemplo: /did –h midialogo 10
-m: (Sólo funciona en campos de texto) Hace que el
texto NO sea editable.
Ejemplo: /did –m midialogo 30
-n: (Sólo funciona en campos de texto) Deshace el parámetro
anterior, es decir el texto ya se puede editar en el campo de
texto.
Ejemplo: /did –n midialogo 29
-c: Activa un checkbox o boton de radio (para ello NO
se especifica [N] ), o selecciona la linea N en una lista de
objetos. Ejemplo: /did –c midialogo 13
5
-u: Desactiva un checkbox o boton de radio (no se
especifica [N]), o la linea [N] en una lista de objetos deja
de estar seleccionada. Para marcar un checkbox como
indeterminado (en caso de que sea de estilo 3state) usaremos
los parámetros [-cu] a la vez.
Ejemplo: /did –u midialogo 2
-k: (Sólo funciona en listas de objetos) Al usarse
junto con los parámetros [-c] o [-u] hará que se mantenga la
selección que ya había y añada o quite a ésta la que
acabamos de hacer.
Ejemplo: /did –ck midialogo 4 2
-r: Borra todo el texto del objeto <id> (usado
generalmente para campos de texto).
Ejemplo: /did –r midialogo 3
-a: Añade una línea de texto al final de la que
ya haya en el objeto <id>.
Ejemplo: /did –a midialogo 6
%variable
-d: Borra la linea [N] de texto de un objeto.
Ejemplo: /did –d midialogo 8 2
-i:
Inserta una linea de texto en la posición [N].
Ejemplo: /did –i midialogo 10 2
Insertando entre 2ª y 3ª linea
-o: Sobreescribe la linea [N] con el texto
especificado.
Ejemplo: /did –o midialogo 10 1
Sustuimos la linea uno por este textpo
-g: Pone una imagen .bmp a un objeto de icono.
Ejemplo: /did –g midialogo 10
c:\imagen.bmp
Vistas ya las formas para crear un a ventana de diálogo y
modificarla a nuestro gusto, y antes de entrar a ver el evento
ON DIALOG que nos servirá para asignarle ciertas funciones a
cada objeto, veamos un par de identificadores propios de los
diálogos que nos serán muy útiles para recoger información
de las ventanas que creemos.
El identificador $dialog
Este
identificador puede ser usado de varias maneras. Si en una
tabla de un diálogo especificamos en unos de los objetos el
estilo “result”, y después creamos un diálogo
usando este identificador, el valor que nos devoverá el
identificador será el mismo que el de ese objeto cuyo estilo
es “result”. Para crear un diálogo con este identificador
usaremos la sintaxis:
$dialog(<nombre_dialogo>,<nombre_tabla>)
Pero por supuesto siendo un identificador no puede usarse
independientemente (como si fuera un comando) puesto que
devuelve un valor que debemos de recojer, lo tendremos que
utilizar para darle un valor a una variable, por ejemplo:
%resultado =
$dialog(midialogo,mitabla)
También podemos usar este identificador sencillamente para
obtener el nombre de los diálogos abiertos en este momento,
para ello usaremos la sintaxis:
$dialog(<nombre_dialogo>/<N>)
Devolverá el número de diálogo en caso de que
especifiquemos un nombre, o el nombre del diálogo abierto
numero <N> en caso de que optemos por especificar ese
parámetro.
Ejemplo: %variable = $dialog(3)
Le da a %variable el valor del nombre del tercer diálogo que
tengamos abierto en ese momento.
Y el último uso del identificador $dialog es para
recoger información general de un diálogo, como su tamaño o
su título:
-
$dialog(<nombre>).x:
Devuelve la posición en el eje X del diálogo.
-
$dialog(<nombre>).y:
Devuelve la posición en el eje Y del diálogo.
-
$dialog(<nombre>).w:
Devuelve la longitud en pixels del diálogo.
-
$dialog(<nombre>).h:
Devuelve la altitud en pixels del diálogo.
-
$dialog(<nombre>).title:
Devuelve el título del diálogo.
-
$dialog(<nombre>).modal:
Devuelve $true si el diálogo ha sido creado con el
identificador $dialog, o $false si el diálogo ha sido
creado con el comando /dialog.
-
$dialog(<nombre>).table:
Devuelve el nombre de la tabla que está usando el diálogo.
-
$dialog(<nombre>).ok:
Devuelve la ID del botón con estilo “ok”.
-
$dialog(<nombre>).cancel:
Devuelve la ID del botón con estilo “cancel”.
-
$dialog(<nombre>).result:
Devuelve la ID del botón que tenga como estilo
“result”.
El identificador $did
Este otro identificador nos servirá para recoger información
de los objetos de un diálogo. sus posibles usos son:
-
$did(<nombre>,<id>).text:
Devuelve el texto del objeto <id>.
-
$did(<nombre>,<id>,<N>).len:
Devuelve la lingitud en caracteres de la linea <N>
del objeto <id>.
-
$did(<nombre>,<id>).lines:
devuelve el numero total de lineas del objeto <id>.
-
$did(<nombre>,<id>).sel:
Devuelve el número de la linea seleccionada.
-
$did(<nombre>,<id>).state:
Devuelve el estado del objeto <id> ( 0 = off ; 1 =
on; 2 = indeterminado).
-
$did(<nombre>,<id>).next:
Devuelve la id del próximo obejto en el orden del
tabulador.
-
$did(<nombre>,<id>).prev:
Devuelve la id del objeto previo en el orden del
tabulador.
Una vez
aprendidos estos identificadores, aparte de saber crear y
modificar ventanas, tan solo nos falta el último paso, el
decirle a determindo control que ejecute determinados
comandos, decirle a determinado campo de texto que ponga su
contenido dentro de determinada variable,... etc. Esto se
consigue con un evento remoto, el ON DIALOG, que a
continuación se expone con detalle.
EL EVENTO "ON 1:DIALOG"
Este es el
evento que se usará para controlar la funcionabilidad del
dialogo, 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
ejcuten 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 hecvho al declarar la
tabla.
-
Asignar
funciones a ciertos objetos cuando se produzca un doble
click 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 ejcutan los comandos que especifiquemos justo antes de
mostrar el dialogo 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
click 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 click sobre el objeto de la <id> especificada.
Ejemplo: on 1:dialog:midialogo:dclick:3:{ echo –s
Doble click sobre objeto $did }
on 1:dialog:<nombre_diálogo>:EDIT:<id>:{
...comandos... }
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 funcionabilidad con
lo que hemos aprendido:
Ejemplo : Creación de un Diálogo con toda su
funcionabilidad.
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 asingarle nuevos valores a esas variables (según lo
desee elusuario) y despues 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 dialogo, 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 dialgoo 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éss donde quiere mostrar el usuario la
informacion, 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 clickee 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
boton “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 informacion,
y después comprueba si están activadas las variables %mostrar.nombre,
%mostrar.web y %mostrar.email: para motrar 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 texto 13,14 y 15 asigne el texto
de esos campos como valor a sus respectivas variables, para
que después puedan ser mostradas.
Bien, si ha llegado hasta aquí, ya debe ser un pequeño
experto en este tema, en este tutorial se han tocado
detalladamente todos los aspectos de las ventanas de diálogo,
espero que haya aprendido de él.
<---Atrás
|
 |
 |
 |
|