![]() |
![]() |
Ventanas de Diálogo
VENTANAS DE DIALOGO.-
INTRODUCCION.-
Las
ventanas de diálogo o “dialogs” son un nuevo recurso que nos
ofrecen las versiones de mIRC 5.5 y
superior para auténticas ventanas tipo windows (con botones de radio, campos te
texto, etc) de una forma relativamente sencilla, al menos es muchísimo más
fácil que hacerlo mediante ventanas de imagen. Puesto que se supone que usted
ya es medianamente experto en el uso de Alias y Remotes, pasemos a ver los
comandos que os 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 abierto usted podrá acceder
a las otras ventanas del mIRC (cosa
que no pasa 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 diálogo:
-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 (titulo, tamaño,…)
serán especificados en la tabla de diálogo). Ejemplo: /dialog –m
midialogo mitabla
-ma: Crea
una ventana de diálogo sin atributos (como la anterior) pero ahora además usa
la ventana activa como
“madre”, es decir que al cerrar la “ventana
madre” 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 titulo de una ventana de diálogo. Ejemplo: /dialog –t midialog
Este es el nuevo titulo
-s:
Cambia el tamaño y la posición del diálogo en base a las coordenadas y
dimensiones que especifiquemos.
Ejemplo: /dialog –t midialogo 10 20 300 400.
Nota.- Recuerde
la definición de “rectángulo”, el ejemplo 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 diálogo, 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 diálogo, pero
más adelante veremos que le podrá asignar más funciones.
Ejemplo:
/dialog –k midialogo
-c:
Provoca el efecto de pulsar en un botón “cancel” de un diálogo, que
por defecto es exactamente el mismo que el de un botón “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 DIALOGO.-
Como hemos
dicho anteriormente en la creación del diálogo, es necesario especificar el
nombre de una tabla en la que definiremos el titulo, tamaño y objetos que habrá
en e mismo. En esta sección usted aprenderá a crear tablas de diálogo revisando
todas las posibilidades que nos ofrece mIRC.
La declaración de las tablas de diálogo se hace en las 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 valida tendremos que incluir en ella la declaración de 3 cosas
imprescindibles: el título del diálogo (que aparecerá en la barra de título del
mismo), el tamaño y posición del diálogo (en el formato x y w h), y al menos un
botón 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_botón”,<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 diálogo (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 botón que cierre el
diálogo al pulsarlo.
·
cancel: Crea un botón que también cierra
el dialogo al pulsarlo.
·
default: Crea un botón que no cierra el
diálogo, le podremos asignar otra función 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 “¡¡Adios!!”,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
botón de tipo “ok” (cierra el diálogo al pulsarlo), las coordenadas
y tamaño de la misma serán: “20 20 120 100”.
A
continuación veremos ya la relación de objetos que podemos declarar en una
ventana de diálogo:
title “titulo”
Como hemos
visto en el ejemplo anterior, el texto que pongamos entre “” será
el texto que salga en la barra de título del diálogo.
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 de a cada objeto que
ponga en el diálogo le ha de asignar un número id, el que usted quiera para
después referirse a ese objeto más adelante. El estilo es opcional, si no se
especifica ninguno el texto estará alineado a la izquierda el rectángulo
“x y w h”, los estilos que puede utilizar son:
·
right: para alinear el texto a la
derecha.
·
center: para centrarlo en el rectángulo
“x y w h”.
edit “texto
inicial”id,x y w h,estilo
Inserta
una caja de texto en el lugar indicado, con una posición y tamaño dados en
“x y w h”, y con uno de los estilos siguientes:
·
<en_blanco>: si no especificamos ningún
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
múltiples líneas, para ello debemos además de especificar este estilo tendrá
que hacer el campo más alto (aumentar el valor “h”).
·
pass: útil para introducir passwords,
transforma 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 en texto que pongamos en ese campo
no podrá ser modificado por el usuario.
·
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 desplace
automáticamente 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 desplace
automáticamente 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
coordenadas “x,y” con un tamaño de “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
diálogo.
·
default: al pulsar el botón no se cierra
el diálogo, especificaremos la función 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
(pausado, 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
coordenadas “x y w h” y con el texto “texto”. Los
estilos posibles son:
·
right: el texto se coloca a la derecha
del botón de radio.
·
left: el texto se coloca a la izquierda
del botón de radio.
·
push: pone un tipo especial de botón de
radio hecho a base de botones estandar.
box “titulo”,id,x y w h
Crea un
rectángulo con el título, posición y tamaño especificados, se suele usar para
enmarcar grupos de objetos, por ejemplo un grupo de botones de radio.
list id,x y w h,estilo
Crea una
lista de objetos en las coordenadas 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 más 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 más adelante.
·
sort: ordena los objetos de la lista
por orden alfabético.
·
extset: permite seleccionar varios
objetos de la lista a la vez.
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 especificarlo 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 comentando, cualquier objeto puede además contar con los siguientes:
·
disable: inhabilita el 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 diálogo al pulsar el botón
“ok”. Solo se usa cuando el diálogo lo abrimos mediante el
identificador $dialog (explicado más
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
1000 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 donde”
size 30 30
300 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
explicar 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 de 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 número total de objetos, de esa forma más adelante nos será
fácil 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 sección del diálogo haríamos lo mismo,
indicaríamos en el primer botón el estilo group.
·
El
uso de “box” da un aspecto más agradable al diálogo, su uso está
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, quizás
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 [-ftebvhnmeukradiog]
<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 botón <id> sea
el botón por defecto (sus función se producirá también al pulsar ENTER).
Ejemplo: /did –t midialgo 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 botón de
radio (para ello NO se especifica [N], o selecciona la línea N en una lista de
objetos.
Ejemplo: /did –c midialogo 13 5
-u: desactiva un checkbox o botón de
radio (no se especifica [N], o la línea [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 ka 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 42
-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 en el objeto <id>.
Ejemplo: /did –a midialogo 6 %variable
-d: borra la línea [N] de texto de un
objeto.
Ejemplo: /did –d midialogo 8 2
-i: inserta una línea de texto en la
posición [N].
Ejemplo: /did –i midialogo 10 2 Insertando entre 2º
y 3º líneas
-o: sobrescribe la línea [N] con el
texto especificado.
Ejemplo: /did –o midialogo 10 1 Sustituimos la línea
uno por este texto
-g: pone una imagen .bmp a un objeto
de icono.
Ejemplo: /did –g midialogo 10 c:\imagen.bmp
Vistas ya
las formas de crear una ventana de diálogo y modificarla a nuestro gusto, y
antes de entrar en los eventos 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 diálogo
especificamos en unos de los objetos el estilo “result”, y después creamos un diálogo usando ese
identificador, el valor que nos devuelve 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 recoger, 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 número <N> en caso de que optemos por especificar ese
parámetro.
Ejemplo: %variable = $dialog(3)
Le da a la
variable %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 longitud en
caracteres de la línea <N> del objeto <id>.
·
$did(<nombre>,<id>).lines: devuelve el número total de
líneas del objeto <id>.
·
$did(<nombre>,<id>).sel: devuelve el número de la línea
seleccionada.
·
$did(<nombre>,<id>).state: devuelve el estado del objeto
<id> (0 = off ; 1 = on ; 2 = indetermindado).
·
$did(<nombre>,<id>).next: devuelve la id del próximo objeto
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 determinado control que ejecute
determinados comandos, decirle a determinado campo de texto que ponga su
contenido dentro de una determinada variable,… etc. Esto se consigue con
un evento remoto, el ON DIALOG, que
se expone con detalle a continuación.
EL EVENTO “ON
1:DIALOG”.-
Este es el
evento que se usará para controlar la funcionabilidad 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 e produzca un doble clic sobre los mismos.
·
El
identificador $dname se puede usar
dentro del evento y devolverá el <nombre_dialogo>.
·
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 doble clic sobre el
objeto de la <id> especificada.
Ejemplo: on 1:dialog:midialogo:dclick:3:{
echo –s Doble clic sobre objeto $did }
on
1:dialog:<nombre_dialogo>: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, solo 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 ha 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 donde”
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,80 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
evento 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 incializaremos 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 un todo 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 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 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.nombre,
%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 texto
13, 14 y 15 asigne el texto de esos campos como valor a sus respectivas
variables, para que después puedan ser mostradas.