0% encontró este documento útil (0 votos)
169 vistas95 páginas

Guía Visual PRO/5 para Principiantes

Este documento presenta una guía rápida para introducir el uso del entorno gráfico de usuario (GUI) de Visual PRO/5. Explica conceptos básicos como pantallas gráficas, objetos, eventos y cómo controlar la interacción con el usuario a través del GUI. También describe el dispositivo SysWindow y sus modos para emular una terminal y facilitar la migración de aplicaciones desde un entorno de caracteres a uno gráfico.

Cargado por

goyoelen
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
169 vistas95 páginas

Guía Visual PRO/5 para Principiantes

Este documento presenta una guía rápida para introducir el uso del entorno gráfico de usuario (GUI) de Visual PRO/5. Explica conceptos básicos como pantallas gráficas, objetos, eventos y cómo controlar la interacción con el usuario a través del GUI. También describe el dispositivo SysWindow y sus modos para emular una terminal y facilitar la migración de aplicaciones desde un entorno de caracteres a uno gráfico.

Cargado por

goyoelen
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd

GUA RPIDA DE INICIO AL GUI DEL VISUAL PRO/5

Esta gua muestra algunas, pero no todas, las capacidades grficas del Visual PRO/5. Se incluyen
brees e!plicaciones, e"emplos, algunas sugerencias y trucos. El t#rmino $%& a a continuarse
iendo a tra#s de esta gua y su significado se traduce a Interfase Grfica del Usuario.
El manual trata con conceptos bsicos de adentrar al alumno en la programaci'n con Visual PRO/5.
Se a iendo e"emplos y se reali(a alguna prctica, )ue de fi"o, es la )ue me"or ense*an(a puede
de"ar al alumno.
Para dar una bree idea de la diferencia entre el PRO/5 y el Visual PRO/5, se puede decir )ue el
PRO/5 es un lengua"e para desarrollo de aplicaciones ba"o ambiente de caracteres, de una manera
bastante similar a como la +ace cual)uier ersi'n anterior de ,,!, )ue corre en muc+os sistemas
operatios, y )ue sigue siendo poco e!igente en cuanto a los re)uerimientos de memoria y e)uipo.
El Visual PRO/5 es tambi#n un lengua"e para desarrollo de aplicaciones pero destinado a correr
solo en ambiente -S .indo/s. Esta caracterstica no )uiere decir )ue no pueda correr programas
+ec+os para ambiente de caracteres. Perfectamente en PRO/5 como en Visual PRO/5 pueden
correrse cual)uier programa +ec+o con ersiones anteriores de ,,! sin necesidad de +acer cambios
en la programaci'n. 0a adertencia )ue debe +acerse con el Visual PRO/5 es )ue la m)uina en
donde se aya a usar, debe tener buena cantidad de memoria y su propio disco duro, esto no por
e!igencias del Visual PRO/5, sino del -S .indo/s.
Se puede decir )ue en cuanto a erbos, funciones y capacidades, el Visual PRO/5 es casi lo mismo
)ue el PRO/5. 0o )ue sucede es )ue el Visual PRO/5 est proisto de un gran "uego de
mnem'nicos y +erramientas )ue son lo )ue nos permite interactuar con el ambiente $%&. 1dems
de )ue al funcionar en ambiente -S .indo/s, nos permite +acer uso de los diferentes O2,3
disponibles, para poder accesar las ,ases de 2atos correspondientes a cada O2,3, por medio del
S40 estndar propio de cada base de datos. Esta capacidad de usar S40 nos permite
OP3&O510-E56E accesar todos los arc+ios propios de ,,! como si fueran una sola ,ase de
2atos, de manera )ue el programador no tendra )ue estar dando OPE5 a cada arc+io, sino )ue
+ace un solo OPE5 a la base de datos definida, y a partir de a+ continua mane"ando los datos con
instrucciones S40, en donde el acceso a los datos es id#ntico a como se +ace a las tablas de
cual)uier base de datos.
3on relaci'n a las pantallas grficas, estas pueden ser confeccionadas de dos maneras7 8a pie8 y con
el editor de pantallas )ue se ofrece con el Visual PRO/5.
2ecir )ue migrar aplicaciones para ambiente de caracteres a ambiente grfico sea fcil,
sinceramente, no es as. 4ui(s programas como actuali(aciones, generadores de reportes y algunos
otros )ue no re)uieran muc+a entrada de datos de parte del usuario, si son fciles de migrar. 0o )ue
son programas para ingreso masio de datos y de consultas, se puede decir )ue +ay )ue +acerlos
nueos.
3uando se +ace un programa para ambiente $%&, debemos olidarnos de la forma en )ue +acamos
el programa para ambiente de caracteres, el cual generalmente consista en un grupo de
instrucciones )ue generalmente se e"ecutan en el mismo orden en )ue estn escritas dentro del
programa en donde el mismo programa es el )ue controla los eentos )ue se puedan dar. En una
pantalla grfica, los eentos los genera el usuario del programa, la captura de datos es +ec+a por
.indo/s y el Visual PRO/5 lo 9nico )ue debe +acer es controlar los eentos )ue -S .indo/s le
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
reporta. 0os datos en una pantalla grfica estn almacenados en los ob"etos definidos en el conte!to
de la entana y Visual PRO/5 lo )ue +ace es tomarlos para la acci'n )ue se necesite efectuar.
3onte!to es todo el espacio )ue abarca la pantalla grfica en su interior. Ob"etos son todas las
figuras )ue emos dentro del conte!to7 @ca"as de grupos, botones, radio botones, barras de scroll,
botones de lista, ca"as de cierre, etcB. Eentos son los )ue se generan cuando el operador del
programa ocasiona cuando nuee el rat'n o cuando con los botones del rat'n +ace clicI sobre
alguno de los ob"etos, o cuando oprime alguna de las teclas del teclado como el E56ER, etc.
-s adelante, en la secci'n Interaccin SYSGUI se ofrecen algunos conse"os para ayudarle a
entender el mane"o o control de estos eentos. 2ominando esa parte el resto ser ms fcil.
En lo )ue siga del manual, las siguientes pginas an a ir siendo discutidas y anali(adas con el
instructor del curso, adems de )ue se ern algunos e"emplos no cubiertos a)u. Se recomienda
antes de asistir a cada clase, tratar de llegar a la lecci'n +abiendo ledo primero las pginas )ue
supuestamente an a ser istas. Esa es la forma de sacar el me"or proec+o al curso. 19n me"or
sera si por aparte el alumno tuiera oportunidad de reali(ar alguna prctica adicional, sea en su
casa o lugar de traba"o.
Se recomienda a los alumnos )ue frecuentemente +agan un respaldo en disIet de las prcticas )ue
an reali(ando en clase. Recordemos )ue las computadoras tambi#n son utili(adas por otros
alumnos, por lo cual y aun)ue cada uno use directorios diferentes, no tenemos una buena garanta
de lo )ue pueda suceder a toda la informaci'n almacenada en los discos duros.
< ? <
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: >
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
E L D I S P O S I T I V O S Y S W I N D O W
El dispositio SJS.&52O. es un emulador de terminal e!tendido del Visual PRO/5. Se
comporta como una sofisticada terminal de caracteres, respondiendo a un gran grupo de comandos
del dispositio tradicional de terminal del ,,!.
El uso ms bsico de SJS.&52O. es para proeer una entana en la terminal del Visual PRO/5
pudiendo as iniciar en modo de consola. 0a lnea de alias de aba"o, o algo muy similar a ella, es
a*adida al arc+io config!!" automticamente cuando Visual PRO/5 es instalado.
ALIAS T0 SYSWINDOW Console Terminal
M O D O S D E S Y S W I N D O W
0os modos pueden ser a*adidos a la lnea de alias para cambiar el comportamiento del
SJS.&52O. en diferentes formas. 0o ms usado para migrar al $%& son los modos 6&60EK,
-&5&-&LE2 e &5V&S&,0E.
El modo TITLE=
El modo 6&60EK le permite escoger su propio ttulo de entana, reempla(ando por omisi'n del
ttulo el alor MVisual PRO/5 M. 5ormalmente usted podr utili(ar el nombre de su aplicaci'n. El
string suministrado aparecer en la barra de ttulos de la entana de consola y tambi#n deba"o del
icono cuando la entana es minimi(ada. @6ambi#n es posible cambiar el ttulo de la entana en
tiempo de corrida con el mnem'nico N6&60EO, y cambiar el icono utili(ado cuando la entana es
minimi(ada con el mnem'nico N-&5&-&3O5O. Esto ser repasado posteriormente.B
ALIAS T0 SYSWINDOW Terminal Consola TITLE=Contabilidad.
Los modos MINIMIZED e INVISIBLE
El modo -&5&-&LE2 causa )ue la entana comience minimi(ada @e!+ibida como un iconoB.
&5V&S&,0E causa )ue #sta sea inicialmente inisible. Estas son 9tiles si su aplicaci'n comen(ara
con una interfase completamente grfica. El usuario puede interactuar con las entanas del $%&
para )ue no se ea confundido o distrado por la entana de la consola.
P5O61Q Si la propiedad de M3orrer -inimi(adaM es utili(ada para lan(ar Visual PRO/5 desde
.indo/s, este se comportar "ustamente como si el modo -&5&-&LE2 fuera utili(ado.
P5O61Q %n SJS.&52O. no puede comen(ar con minimi(ado e inisible a la e(.
P5O61Q El dispositio SJS.&52O. automticamente saltar si la entrada fuera re)uerida. Esto
significa )ue si usted intenta probar los modos -&5&-&LE2 o &5V&S&,0E @o la propiedad de
M3orrer -inimi(adaMB sin escribir un programa, no funcionar. 0a entana aparecer inicialmente
de la manera en )ue usted la dese', pero luego inmediatamente saltar +asta aceptar entradas con el
cursor en modo RE12J.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: C
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
Para probar el modo &5V&S&,0E @sustituya -&5&-&LE2 si usted lo deseaB7
Vare el config!!" as7
ALIAS T1 SYSWINDOW Ventana Invisible INVISIBLE wait5.pgm:
Entre y S10VE este programa con nombre /ait5.pgm
5 REM ventana saltar para entrada en 5 segundos
10 WAIT 5
20 END
E"ecute el programa as7
vpro5 -tT1 wait5.pgm
1usentes de esta secci'n estn arios modos )ue recorren las preferencias del usuario para el
tama*o de la entana y la posici'n, y la opci'n del tipo de letra, etc. -ientras algunas aplicaciones
tienen una necesidad genuina de for(ar estos parmetros a alores particulares, ellos son de"ados
generalmente para )ue el usuario los adecue.
M N E M N I C O S S Y S W I N D O W
El control adicional sobre la terminal es suministrado con los mnem'nicos para el SJS.&52O..
1)u +ay algunos de los ms 9tiles para migrar al $%&.
TITLE(nuevottulo!"
Este mnem'nico establece el ttulo para el SJS.&52O. en tiempo de corrida.
El ttulo es el te!to mostrado en la barra de ttulo de la entana, y deba"o del icono cuando es
minimi(ada. Por omisi'n, el ttulo )ue aparece es MVisual PRO/5M.
Si usted simplemente )uisiera ponerle un determinado nombre a su aplicaci'n, es ms simple usar
el modo 6&60EK, mostrado anteriormente. Sin embargo, si sus necesidades de aplicaci'n son para
cambiar el ttulo de la entana dinmicamente en tiempo de corrida, as es como lo puede +acer.
PRINT `TITLE'(Mi Super aplicacin: Men Principal),
MINIMIZE #IDE $ESTO$E S#OW
Si su aplicaci'n utili(a tanto entanas del $%& como entanas de caracteres, usted puede )uerer
minimi(ar @conertir en iconoB u ocultar @+acer inisibleB el SJS.&52O. cuando usted cambia
otra e( sobre una entana de $%&. 3uando usted uele a cambiar, usted podra )uerer mostrar
@+acer isibleB y restaurar @des<minimi(andoB el SJS.&52O. de nueo. Esto puede ayudar al
usuario a seguir la pista para saber cul entana est esperando entrada en un momento.
Estos mnem'nicos no toman parmetros. Rustamente se imprimen al dispositio SJS.&52O.
para tomar la acci'n.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: E
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr

PRINT `HIDE', ; REM hacer la ventana invisible
PRINT `SHOW', ; REM hacer la ventana visible nuevamente
PRINT `MINIMIZE', ; REM iconificar ventana
PRINT `RESTORE', ; REM des-hacer evento de MINIMIZE
P3%&212OQ 3omo se discuti' en la secci'n con los modos &5V&S&,0E y -&5&-&LE, el
SJS.&52O. no permanecer minimi(ado o inisible si alguna entrada al usuario estuiera
re)uerida. Por consiguiente, si usted simplemente tecleara las declaraciones de programa anteriores
para e"ecuci'n inmediata, el comportamiento no ser como esperaba. 0as acciones de NS&2EO y
N-&5&-&LEO sern e"ecutadas, y luego des+ec+as inmediatamente. Para erificar )ue el
mnem'nico NS&2EO traba"a @sustituya N-&5&-&LEO si usted lo desearaBT tratando sera7
10 PRINT `HIDE',
20 WAIT 5
30 END
%OC&S $'ISE(ne(t)tle!"
Estos son tambi#n 9tiles en aplicaciones )ue utili(an tanto entanas $%& como de caracteres.
3uando se )uiera cambiar a una entana de caracteres @SJS.&52O.B, usted podra )uerer emitir
uno o ambos de estos mnem'nicos. NFO3%SO asegura )ue subsiguientes entradas de teclado sern
dirigidas al SJS.&52O.. NR1&SEO asegura )ue el SJS.&52O. no est# oculto por cual)uier
parte de cual)uier otra entana. @esto MeleaM la entana a la parte superior de la Morden de
apiladoMB.
Estos mnem'nicos no utili(an parmetros. Son dados "ustamente a como se muestra para traer el
SJS.&52O. al frente y establecer el enfo)ue de teclado.
PRINT `FOCUS','RAISE'
Obsere )ue estas dos acciones son distintas, y puedan ser utili(adas independientemente. Esto es
posible @aun)ue rara e( aconse"ableB para una entana )ue no est delante para recibir entrada de
teclado.
SETC&$SO$(*u+)d"
El cursor del rat'n es normalmente un smbolo de flec+a. %sted puede cambiar la apariencia del
cursor del rat'n mientras est sobre su SJS.&52O. emitiendo este mnem'nico. Say cuatro
posibilidades7
? Flec+a @estandarB
; 3ru( @usado para diersas cosasB
> ,arra ertical @para edici'n de te!toB
C Espera @se*al al usuario para indicar )ue el programa est ocupadoB.
Por e"emplo, la opci'n tres puede ser usada durante operaciones con largos arc+ios.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 5
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
1000 PRINT Copiando archivo ... favor esperar...
1010 PRINT `SETCURSOR'(3), [...]
....
1080 PRINT `SETCURSOR'(0),
1090 PRINT Hecho.

MINICON(,)len-me!. nd)*e"
Por omisi'n, el icono del Visual PRO/5 es e!+ibido cuando el SJS.&52O. est minimi(ado.
Para utili(ar su propio icono, simplemente ene este mnem'nico al dispositio SJS.&52O..
%sted debe especificar el nombre del arc+io )ue contiene el icono. Este puede ser un arc+io
tipo .&3O, .EUE o .200. El parmetro de ndice selecciona el icono del arc+io @en caso de
contener ms de unoB a ser utili(ado. 1l primer icono le corresponde el ndice ?, al segundo el
ndice ;, y as sucesiamente. 0os directorios en la ariable de entorno P16S son utili(ados para la
b9s)ueda del arc+io, pero no en los directorios definidos en la ariable PREF&U del ,,!.
>PRINT `MINICON'(PROGMAN.EXE,1),
5ota7 El mnem'nico N-&5&3O5O es solamente 9til para cambiar el icono )ue est# e!+ibido cuando
su aplicaci'n est corriendo. Para cambiar un icono deseado el usuario tiene )ue +acer un NclicIO en
el inicio de su aplicaci'n, utili(ando el 1dministrador de Programas del .indo/s, u otras
+erramientas del tablero principal.
'S/(t)tulo!. )*on)d. mens-0e!. 1ot2n3!. 41ot2n5! 4. 1ot2n6!77"
El mnem'nico N1SVO puede ser 9til por sus caractersticas grficas en Visual PRO/5, especialmente
si a9n utili(a la reisi'n ;.?!. 3on el, usted puede aproec+ar para generar preguntas de dilogo
grfico con el usuario del programa. 19n si usted est utili(ando el dispositio de SJS$%& para
crear sus propios dilogos de costumbre, puede encontrar )ue el mnem'nico N1SVO, ena
preguntas al dispositio del SJS.&52O., satisfaciendo sus necesidades en algunos casos.
3on N1SVO, una entana de dilogo es e!+ibida con su correspondiente ttulo, un n9mero de icono
opcional, un mensa"e de su opci'n, y uno a tres botones para respuesta del usuario. 3uando el
usuario da clicIs en un bot'n, la respuesta )ue est# programada para ese bot'n es inyectada en el
NbufferO del teclado, "ustamente como si el usuario +ubiera simplemente mecanografiado la
respuesta. El usuario puede tambi#n dar NclicIO en el cierre de la ca"a de dilogo, generando un Q
ERRORK>G en la sentencia PR&56 o .R&6E. 3on la ayuda de un atrape de error, esta iene a ser
efectiamente una cuarta posibilidad de respuesta, )ue puede ser +ec+a para comportarse
id#nticamente a una de las otras respuestas, o tratada de otro modo.
El te!to en tit#$o% aparece en la barra de ttulo de dilogo. El parmetro iconi& puede tener
cual)uiera de las siguientes opciones7
? no muestra ning9n icono
; muestra un icono de Minformaci'n @iBW
> muestra un icono de Madertencia @QBW
C muestra un icono de Mpregunta @XBW
E muestra un icono de Merror fatal @!BW
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: A
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
El te!to en 'en(a)e% es desplegado dentro del dilogo como el cursor de usuario.
%no a tres botones en secuencia pueden ser suministrados. El te!to en el string del bot'n suministra
tanto la eti)ueta de bot'n como el string de respuesta. $eneralmente usted )uerr )ue el string de la
eti)ueta y respuesta sean diferentes. Esto es +ec+o para listar el string de respuesta despu#s de una
coma en el string del bot'n. 3ual)uier caracter en la eti)ueta del bot'n puede ser cambiado a una
tecla caliente precedi#ndola con un ampersand. En el siguiente e"emplo se pretende aclarar esto.
Es un pe)ue*o programa con el )ue una pregunta Si/5o es asumida, con MSW y M5W definidas como
teclas calientes. Si el usuario +ace un MclicIW en la ca"a de cierre, una respuesta de M5oW es
asumida. Obsere la adici'n de terminadores @Y?1YB al final de los string de respuesta, para un
procesamiento de entrada fcil. 5ote tambi#n )ue el Mec+oW es apagado antes de la ariable
destinada para obtener la respuesta, y )ue una coma final es suministrada. 0a funci'n de los
mnem'nicos NEEO y N,EO es para eitar )ue los string de respuesta y terminadores de lnea se
muestren en la pantalla. Este e"emplo tambi#n toma enta"a del +ec+o de )ue el &5P%6 imprime
cuales)uiera tems )ue no pueden ser modificados.
0010 REM "Ejemplo para 'ASK'
0100 INPUT (0,ERR=0120)'ASK'(Si o No,3,Favor indicar si o
0100:no.,&Si:S+$0A$,&No:N+$0A$),'EE',A$,'BE',
0110 GOTO 0130
0120 LET A$=N
0130 PRINT Respuesta fue ,A$

P3%&212OQ El mnem'nico N1SVO puede generar un QERROR >G con la instrucci'n PR&56 o
.R&6E si el usuario opera la ca"a de cierre. 1seg9rese de controlar este error.
El n9mero C )ue se est usando antes del comentario ZFaor indicar si o no.Z sire para seleccionar
el tipo de icono )ue automticamente se muestra en el e!tremo i()uierdo de la entana cuando es
desplegada. Ese puede ser un alor del ? al E.
P5O61Q Probablemente usted )uerr el Mec+oW apagado mientras usted entra el string de respuesta.
1seg9rese luego de )ue el Mec+oW sea restablecido en todos los casos, a9n ba"o la condici'n de
error. Para eitar )ue innecesarios terminadores de lnea se muestren en la pantalla, utilice una
coma despu#s del mnem'nico N1SVO.
8ETS(ttulo!. 9+om9t! 4.de,-ult!7"
El mnem'nico N$E6SO proee un coneniente modo grfico abreiado para indicar al usuario un
string de entrada. 1 diferencia de N1SVO, N$E6SO no siempre serir como un dilogo creado con el
dispositio de SJS$%&. 5o obstante, N$E6SO es simple de usar, y puede bastar +asta )ue otros
dilogos sean creados.
El dilogo es mostrado con un ttulo @tit#$o%B, una literal con una sugerencia al usuario @*ro'*t%B,
y una ca"a de edici'n, )ue inicialmente siempre est aca. Sin embargo, si el parmetro opcional
@&efa#$t%B es suministrado, la ca"a de edici'n contendr el string indicado al iniciar.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: [
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
6res botones de pulsar aparecen deba"o de la ca"a de edici'n7 OV, 3ancelar, y Restaurar. El bot'n
OV confirma el te!to en la ca"a de edici'n como correcto y lo introducir, agregando un caracter de
terminaci'n de lnea, en el flu"o de entrada del SJS.&52O., "ustamente como si el usuario +aya
digitado el te!to por el teclado. %n NclicIO en el bot'n de 3ancelar @o la ca"a de dilogoB generar
un QERROR >G con el PR&56 or .R&6E )ue eni' el mnem'nico N$E6SO. Ser necesario
controlar el error. 6anto el OV como el 3ancel @as como la ca"a de cierreB remueen el dilogo.
El bot'n de Restaurar causa la reersi'n del te!to en la ca"a de edici'n para retornar al te!to
suministrado en el parmetro &efa#$t%, o para reertir a un estado de espacios si ning9n alor
inicial fue suministrado en el parmetro &efa#$t%. El bot'n de Restaurar no remuee el dilogo o
introduce cual)uier te!to.
En el siguiente e"emplo, al usuario se le preguntar un nombre. Si ninguno es digitado, el alor )ue
se asumir es MRorgeW. Si el usuario oprime el bot'n de 3ancelar, la literal M1n'nimoW es asumida
en su lugar.
0010 REM Ejemplo para 'GETS' (Pedir un nombre)
0100 INPUT (0,ERR=0120)'GETS'(Registrar nombre,Favor de entrar
0100:su nombre,Jorge),'EE',N$,'BE',
0110 GOTO 0130
0120 LET N$=Annimo; REM Nombre que se asume si dan Cancelar
0130 PRINT El nombre ingresado fue ,N$
P3%&212OQ El mnem'nico N$E6SO puede generar un QERRORK>G en la instrucci'n PR&56 o
.R&6E si el usuario opera la ca"a de cierre o el bot'n de 3ancelar. 1seg9rese de controlar este
error.
P5O61Q %sted probablemente )uiere )ue el Mec+oW est# apagado mientras se digita el string de
respuesta. 1seg9rese )ue el Mec+oW se uela a encender en todos los casos, a9n ba"o la condici'n
de error. Para eitar )ue innecesarios terminadores de lneas se muestren en la pantalla, utilice una
coma despu#s del mnem'nico N$E6SO.
%ILEO:EN (t)tulo!. 9-t;!. <<. e=t!"
%ILES'VE (t)tulo!. 9-t;!. nom1+e>su?e+)do!. e=t!"
Estos mnem'nicos son muy 9tiles en la inocaci'n de dilogos estndar de 1brir y Salar arc+ios.
3on estos mnem'nicos, no solamente obtiene la enta"a de una interfase grfica estndar para
seleccionar arc+ios, si no )ue usted tambi#n obtiene las capacidades natias de Mbro/seW a tra#s
de los directorios. En m)uinas en red, al usuario se le permite conectar nueos dispositios de red
en el proceso de elegir un nombre de arc+io para abrirlo o salarlo.
Para utili(ar NF&0EOPE5O, todo lo )ue usted tiene )ue +acer es suministrar te!to propio para la
barra de ttulo del dilogo @promptYB, un pat+ inicial @el usuario puede naegar a otra parte si lo
necesitaraB, una ariable )ue es ignorada @esta es un sostenedor de lugar, para preserar similitudes
entre NF&0EOPE5O y NF&0ES1VEOB, y un nombre de arc+io opcional de tres letras Me!tensi'nM
@e!tYB. Si usted no desea limitar el dilogo de 1pertura del 1rc+io a cual)uier e!tensi'n particular
de tres letras, suministre un string aco para e!tY. 5o incluya el perodo inicial en e!tY.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: D
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
Para utili(ar NF&0ES1VEO, suministre su te!to para la barra de ttulo @tituloYB, un pat+ inicial @el
usuario puede naegarB, un nombre de arc+io sugerido para presentar al usuario como un alor por
omisi'n @nombre:sugeridoYB, y una Me!tensi'nW opcional del nombre del arc+io de tres letras
@e!tYB. Si usted no deseara restringir )u# tipos de arc+io el usuario puede er , suministre un string
aco para e!tY. 1l igual )ue con NF&0EOPE5O, no incluya el punto inicial en e!tY.
6anto para NF&0EOPE5O como NF&0ES1VEO, una e( )ue el dilogo es desplegado, permanece
actio +asta )ue el usuario +aga una selecci'n o NclicIO en 3ancelar @o la ca"a de cierreB. Si el
usuario +ace una selecci'n, el pat+ completo del nombre del arc+io seleccionado es introducido en
el flu"o de entrada del teclado, con un terminador de lnea al final, de modo )ue una posterior
instrucci'n de &5P%6 puede leerla fcilmente. Si el usuario +ace NclicIO para 3ancelar @o en la ca"a
de cierreB, el te!to ::CANCEL::, ms un terminador de lnea es introducido. Si un error ocurriera
durante el procesamiento @muy raroB, el te!to ::BAD:: es introducido.
5inguno de estos mnem'nicos realmente causan aperturas de arc+ios o cambios en los directorios.
Permiten simplemente una cierta cantidad de naegaci'n y e!ploraci'n, y retornan el nombre del
pat+ y arc+io elegido al programa de llamada. Say una e!cepci'n7 si el usuario escoge un arc+io
)ue ya e!iste desde el dilogo File Sae, una posterior ca"a de dilogo aparecer, y el usuario tiene
)ue confirmar el rempla(o de ese fic+ero. Si el usuario +ace NclicIO en M5oM, el dilogo File Sae
contin9a actio. Si el usuario +ace NclicIO en MSiM, el dilogo File Sae es remoido y el nombre
seleccionado es introducido en el buffer del teclado para su lectura. E0 1R3S&VO 5O ES
RE10-E56E SO,REES3R&6O. Esto es simplemente asumiendo lo )ue su aplicaci'n +ar en
este punto.
En el siguiente e"emplo, el usuario puede escoger el siguiente programa para correrlo desde el
dilogo grfico File Open.
0010 REM "Ejemplo para 'FILEOPEN' (Iniciar corrida de un programa)
0100 INPUT `FILEOPEN'(Correr Siguiente,DSK()+DIR(),,),
0100:'EE',F$,'BE',
0110 IF F$<>::BAD:: AND F$<>::CANCEL:: THEN RUN F$
P5O61Q E0 tercer parmetro de NF&0EOPE5O no es utili(ado << pasa "ustamente un string aco.
%sted puede )uerer apagar el Nec+oO antes de leer el string de respuesta, y usar una coma al final,
despu#s del mnem'nico, para conserar te!to e!tra para el despliegue.
MO&SE(*ol. ,)l-. *ols. ,)l-s.4.s)m9le>+es9! 4.do1le>+es9!77"
'MO&SE (*ol. ,)l-. *ols. ,)l-s.4.s)m9le>+es9! 4.do1le>+es9!77"
Estos mnem'nicos son de ayuda para aplicaciones en ambiente de caracteres. 0o )ue +acen es
sensibili(ar una regi'n del rea de acci'n de despliegue. 5os referimos a estas regiones
sensibili(adas como Mrea caliente del rat'nM. Si el bot'n del rat'n es presionado y mantenido, y el
cursor del rat'n es arrastrado sobre el SJS.&52O., el rea caliente del rat'n iluminar el cursor
del rat'n cuando pase sobre ella. Si el bot'n de rat'n es oprimido una o dos eces sobre unas de
estas reas, un string de respuesta es introducido en el buffer del teclado, "ustamente como si el
usuario lo +ubiera mecanografiado.
0a aplicaci'n ms 9til para N-O%SEO y N1-O%SEO es en la confecci'n de men9s, ya )ue es
generalmente simple disponer el rat'n para operar el men9 tan rpidamente como el teclado. El
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: G
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
string de respuesta pueden ser preparado a las teclas del men9, de modo )ue el 9nico cambio para
el c'digo es la adici'n de un mnem'nico N-O%SEO o N1-O%SEO dentro del loop )ue presenta los
tems del men9.
0a diferencia entre N-O%SEO y N1-O%SEO est en la naturale(a del rea caliente del rat'n as
creado. N-O%SEO crea un rea caliente para el rat'n )ue son ane!adas a un N.&52O.O o pantalla
irtual de caracter particular. Si la entana es moida, el rea caliente del rat'n tambi#n se muee.
Si la entana es destruida, el rea caliente del rat'n desaparece. 6ambi#n, si una regi'n incluyendo
el rea caliente del rat'n es corrida o limpiada, el rea caliente del rat'n desaparecer. 1reas
calientes del rat'n de N-O%SEO son solamente actias cuando la entana )ue las contiene est en
uso actual. 1reas calientes del rat'n de N1-O%SEO son ane!adas para todo lo desplegado en el
SJS.&52O., y perduran independientemente de cual)uier creaci'n y destrucci'n de entana,
limpie(a o corrimiento por MscrollW.
Para crear un rea caliente del rat'n, suministre una columna y fila para la es)uina superior
i()uierda, ms el anc+o en cols y la altura en filas. Finalmente, especifi)ue al menos un string de
respuesta. El primer string de respuesta es introducido en un simple NclicIO, el segundo en un
doble<clicI.
Para limpiar una o ms reas calientes del rat'n, emita un mnem'nico de llamada sin strings de
respuesta. 6oda rea caliente del rat'n intersectando la regi'n especificada ser limpiada.
N-O%SEO@?,?,?,? B y N1-O%SEO @?,?,?,? B son formas rpidas para limpiar toda rea caliente del
rat'n. 1reas calientes del rat'n N-O%SEO @no N1-O%SEOB tambi#n pueden ser limpiadas
simplemente limpiando la entana.
Poniendo metacaracteres especiales en el string de respuesta, es posible detectar )ue bot'n del
rat'n es operado, as como la condici'n de las teclas de control y conmutaci'n. 0a metasinta!is es
como sigue7
2entro de un string de respuesta, esto... es sustituido con..
\\ un simple \
\b ?, ; o > @bot'n &2B
\c ? o ; @control de estadoB
\s ? o ; @s+ift estatusB
P3%&212OQ N-O%SEO y N1-O%SEO fueron creados para serir a diferentes necesidades.
N-O%SEO es implementado como un niel ms alto de N1-O%SEO. %tili(ndolos "untos en el
mismo dispositio de SJS.&52O. al mismo tiempo puede proocar resultados impredecibles.
P3%&212OQ Si usted )uisiera responder a cada NclicIO del rat'n, aseg9rese de especificar un string
de respuesta para el doble<clicI. Siempre )ue el usuario +aga NclicIO muy rpidamente ser
suficiente para generar un doble<clicI, el string de respuesta para el doble<clicI ser introducido. Si
ninguno fuera suministrado, ning9n string ser introducido por a)uellos NclicIsO )ue sen
considerados @por .indo/sB para ser el segundo de un par de doble<clicIs.
El siguiente es e"emplo de un programa )ue utili(a el mnem'nico 8-O%SE8 con un programa )ue
no necesariamente corre en una pantalla grfica7
0010 REM "Demo para uso del mnemonico MOUSE
0020 BEGIN
0030 LET var$=var$+" 0= Salir ",var=LEN(var$)
0040 LET var$=var$+" 1= Incluir "
0050 LET var$=var$+" 2= Excluir "
0060 LET var$=var$+" 3= Cambiar "
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;?
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
0070 LET var$=var$+" 4= Consultar "
0080 LET var$=var$+" 5= Listar "
0090 REM
0100 PRINT 'WINDOW'(50,2,17,8,"< Opciones >"),'CS',
0110 FOR a=1 TO LEN(var$) STEP var; LET lin=INT(a/var),
0110:opc$=var$(a,var);
0110:PRINT @(0,lin),opc$,'MOUSE'(0,lin,var,1,opc$),; NEXT a
0120 REM
0130 INPUT (0,SIZ=var)'CH',opc$,
0140 PRINT 'POP','LF',"Respuesta fue ",opc$
0150 REM
:L'YSO&ND (,)len-me!. o9*)2n"
Este mnem'nico sire para darle el atractio a su aplicaci'n para un ambiente con -ultimedia, ya
)ue usted puede emitir sonidos mediante el uso de los arc+ios ..1V. El mnem'nico
NP01JSO%52O puede ser utili(ado para interpretar o detener arc+ios de "uegos de sonido en
diersos modos. Por supuesto, esto solamente traba"ar si una tar"eta de sonidos est instalada en su
m)uina. @3uando alg9n sonido no pueda ser interpretado, no ser dado error alguno.B
Para comen(ar a interpretar un sonido, emite un mnem'nico NP01JSO%52O con el nombre del
arc+io fi$ena'e%, y un alor para el parmetro de o*cin, como sigue.
? interpretar normalmente
; interpretar asincr'nicamente @llamada regresa antes de )ue el sonido es +ec+oB
> interpretar continuamente @girado, y asincr'nicoB
Para detener un sonido )ue es interpretado asincr'nicamente, utilice un string aco @MMB para
fi$ena'e%, y cual)uiera alor para el parmetro de o*cin. E"emplo7
PRINT 'PLAYSOUND'("/windows/media/logoff.wav",1)
1usentes de la lista de mnem'nicos anteriores son algunos )ue recorren preferencias de usuario
para tama*o y posici'n de entana, opci'n de fuente, etc. -ientras algunas aplicaciones tienen una
necesidad genuina de for(ar estos parmetros a alores particulares, generalmente es me"or de"ar
estas posibilidades al usuario.
MS8BO@( " %un*)2n 9-+- C+e-+ un- C-0- de D)Alo?o 9-+- d-+ Mens-0es
Esta funci'n se implement' +asta despu#s de la reisi'n ;.?! de Visual PRO/5 y con todo lo )ue
ofrece, realmente se conierte en algo ms atractio de usar )ue el mnem'nico N1SVO. -S$,OU
es una belle(a de funci'n -S$,OU, ya )ue crea una ca"a de dilogo para mensa"es y retorna un
alor )ue identifica el bot'n seleccionado por el usuario.
Sinta!is7 MSGBOX(str1{,expr}{,str2}{,ERR=lineref})
De(cri*cin &e *ar+'etro(
Parmetro 2escripci'n
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;;
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
(tr, String con la e!presi'n para el mensa"e a ser mostrado en la ca"a de dilogo.
e"*r E!presi'n num#rica para el n9mero y tipo de bot'n, tipo de cono, bot'n a asumir
por omisi'n @defaultB, y tipo de dilogo modal @ea aba"o los alores a ser usadosB.
(tr- String con e!presi'n para el ttulo de la ca"a de dilogo. Si este parmetro es
omitido, el nombre del programa es usado como ttulo.
ERR.$ineref 59mero de lnea o eti)ueta a donde el proceso bifurcara si un error ocurre durante la
e"ecuci'n.
6odas las siguientes tablas contienen las opciones de alor para el parmetro e"*r. Para crear un
alor final, seleccione un n9mero de cada con"unto. El alor )ue se asume por omisi'n en cada
con"unto es ?.
Va$ore( *ara /otone( Va$ore( *ara Icono(
Valor ,ot'n@esB a desplegar &cono Valor desplegado
0 O1 0 5inguno.
, O1 y Cance$ ,2 Signo Stop.
- A!ort, Retr3, e Ignore. 4- Signo de &nterrogaci'n.
4 Ye(, No, y Cance$. 56 Signo de 1dmiraci'n.
5 Ye( y No. 25 Smbolo de &nformaci'n.
5 Retr3 y Cance$.
0a posici'n del cono en la ca"a del mensa"e es
determinada por el sistema operatio .indo/s
y podra cambiar.
Va$ore( *or o'i(in *ara $o( /otone( &e$ 7SG/O8
Si dentro de la e!presi'n num#rica ponemos uno de los siguientes alores como tercer parmetro,
lograremos )ue el bot'n indicado apare(ca como seleccionado7
Valor ,ot'n a ser seleccionado
0 Primero
-52 Segundo
5,- 6ercero
Va$ore( &e 7o&o(
Valor 2escripci'n
0 1plicaci'n modal. 3ausar )ue el usuario tenga )ue responder a la ca"a con el
mensa"e, antes de continuar traba"ando con la aplicaci'n actual.
-2,55 Sistema modal. Re)uiere )ue el usuario responda a la ca"a de mensa"e antes de
continuar traba"ando en alguna aplicaci'n. Este alor solamente puede ser
establecido cuando el usuario responda inmediatamente a un mensa"e )ue toma
prioridad sobre cual)uier otra actiidad.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;>
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
-S$,OU@B automticamente parte las lneas de mensa"es en el borde derec+o de la ca"a de
dilogo. Para for(ar la ruptura de una lnea, inserte un delimitador de lnea con el +e!adecimal
@Y?1YB antes del primer carcter de lo )ue sera la nuea lnea. E"emplo7
mK-S$,OU@MEl formato de la fec+a es incorrectoW]Y?1Y]W%tilice el formato 22/--/1111
para digitarlaW,;A,WWB
Lo( Va$ore( retorna&o( *or e$ 7SG/O8
El alor retornado por -S$,OU@B identifica el bot'n )ue el usuario seleccion', como sigue7
Valor ,ot'n Seleccionado
, OV
- 3ancel
4 1bort
5 Retry
2 Jes
9 5o
E)e'*$o(
E"emplo ;
El siguiente crea un dilogo )ue despliega ZEsto es un mensa"eZ y un OV como bot'n. 1dems,
utili(ar el nombre del programa como ttulo de la ca"a y retornar un alor de ;.
LET x=MSGBOX("Esto es un mensaje")
E"emplo >
El siguiente crea un dilogo )ue muestra el contenido de -E5S1REY como el te!to de mensa"eT
)ue contiene los ,otones 3ancel y Retry y un cono con el signo de interrogaci'nT y despliega el
contenido de 6&6%0OY como el ttulo de dilogo.
LET x=MSGBOX(mensaje$,5+32+256,titulo$)
Seleccionando el bot'n 3ancel @alor por omisi'nB retorna un alor de >.
Seleccionando el ,ot'n Retry retorna un alor de E.
Otro( e)e'*$o(:
0E6 mK-S$,OU@M2esea cancelar la impresi'nW,E]C>,W3ancelarWB
0E6 mK-S$,OU@M0a impresora no est listaW,;A,WErrorWB
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;C
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
& S O D E L %IN( " D E L S Y S W I N D O W
1l igual )ue con cual)uier otro dispositio, la funci'n F&5@B regresa informaci'n 9til relatia a la
condici'n de ese dispositio. Siguientes son algunos alores regresados por la funci'n F&5@B en un
canal SJS.&52O. )ue podra ser usado cuando migre al $%&.
%IN(sBs()ndo("
3on esta funci'n normal F&5@B obtenemos informaci'n de cual)uier dispositio de terminal. 2e
inter#s particular son los campos ^'a"co$(_ y ^'a"ro;(_. Estos pueden ser cambiados cuando el
SJS.&52O. es cambiado de tama*o por el usuario. @Esto solamente ocurre si la ca"a M0ocI
3ols/Ro/sM en el dilogo de Fuentes/6ama*o no est marcada o c+e)ueadaB.
El siguiente e"emplo nos trae e imprime las dimensiones actuales del SJS.&52O. abierto al
canal ?.
0010 DIM F$:TMPL(0,IND=0)
0020 F$=FIN(0)
0030 PRINT Cols,F.MAXCOLS,, Filas,F.MAXROWS
>run
Cols 80, Filas 25
%IN(sBs()ndo(.IND=3"
Esta funci'n F&5@B nos retorna informaci'n )ue es 9til para aplicaciones )ue necesitan seguir el
moimiento y actiidad del bot'n del rat'n mientras est sobre el rea de despliegue del
SJS.&52O.. Esta es una rara necesidad, pero puede ser utili(ada para algunos efectos
interesantes, como con un te!to de arias lneas ^drag<and<drop_.
El siguiente e"emplo nos informa si el bot'n i()uierdo del rat'n est oprimido, y donde el cursor
del rat'n est locali(ado @o +a sido locali(adoB dentro del SJS.&52O.. E"ec9telo algunas eces,
moiendo el rat'n y oprimiendo a eces el bot'n i()uierdo del rat'n, para notar el efecto completo.
0001 PRINT 'CS',"Para apreciar los movimientos del MOUSE: muvalo,
0001:oprimiendo y soltando el botn"
0010 DIM F$:TMPL(0,IND=1)
0020 F$=FIN(0,IND=1)
0030 PRINT "El botn del ratn est ",
0040 IF AND(BIN(F.MOUSE_BUTTONS,1),$01$)=$01$ THEN PRINT oprimido
0040:ELSE PRINT "sin oprimir"
0050 PRINTCursor en col,F.MOUSE_TERM_COL, ln.,F.MOUSE_TERM_ROW
0060 WAIT 1; GOTO 20
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;E
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
M C l t ) 9 l e s d ) s 9 o s ) t ) v o s S Y S W I N D O W S
Visual PRO/5 inicia cada sesi'n en el canal ? abriendo un SJS.&52O. @e"7 Z6?ZB. Sin embargo,
es posible abrir ms dispositios SJS.&52O. en otros canales @e"7 Z6;ZB. Esto puede ser 9til
para el despliegue de te!to adicional. En lugar de subdiidir la terminal, usted puede crear otra
terminal en una entana grfica separada, e imprimir te!to a+ tambi#n. 1s mismo, es igualmente
posible obtener entrada de datos desde un SJS.&52O. )ue no sea el canal ?.
Say muy pocas diferencias entre una MconsolaW SJS.&52O. @canal ?, apertura implcitaB y un
SJS.&52O. Mno:consolaW @otro canal )ue no es ?, apertura e!plcitaB. ,sicamente, son estas7
Ventanas de consola siempre tienen la misma barra de men9s del Visual PRO/5.
Ventanas de no:consola pueden tener un men9 simplificado @Edici'n e &mpresi'n solamenteB o
ning9n men9, dependiendo esto del modo de -E5%.
Ventanas de consola tiene un dilogo de fuentes / tama*o.
Ventanas de no:consola solo le pueden ser asignadas nueas fuentes y dimensiones del programa o
los modos.
6odos los SJS.&52O.S responden igualmente a los cambios del -apeador de 3olor.
Ventanas de no:consola tienen el 8ec+o8 puesto en 8off8 desde el inicio, o sea, no se e lo )ue uno
escribe.
1parte de todas #sas diferencias, un SJS.&52O. es tan bueno como cual)uier otro. %sted puede
utili(ar esa capacidad para e!pandir su uso a una pantalla grfica, sin tener )ue +acer elaboradas
me"oras grficas.
Para abrir un SJS.&52O. adicional, usted necesitar una lnea de 10&1S e!tra en su arc+io
config!!". 0uego solo abra el dispositio por su nombre. En este caso, los modos pueden ser
indispensables para poder er la entana y actuar de la forma en )ue usted lo )uiera.
P3%&212OQ Si dos diferentes tareas de Visual PRO/5 abren el mismo alias de SJS.&52O., en
cada una se crear su propia entana para el dispositio del alias. 5o +ay forma de obtener
m9ltiples tareas de Visual PRO/5 )ue abran la misma entana al mismo tiempo.
Este es un e"emplo triial, en el )ue su config!!" deber contener las siguientes lneas7

ALIAS T0 SYSWINDOW "Ventana principal"
ALIAS T1 SYSWINDOW "Ventana extra"
2eclaraciones necesarias en el programa para +acer un despliegue en el SJS.&52O. 6;7
OPEN (1)T1"
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;5
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
3uando el dispositio es abierto, una entana es creada, con la fuente y tama*o de fuente )ue se
asumen por omisi'n, en el tama*o de alor por omisi'n @D?!>5B. Para obtener otra fuente o
atributos de tama*o, tendr )ue utili(ar modos o mnem'nicos.
M o d o s - d ) * ) o n - l e s d e S Y S W I N D O W
Estos modos de SJS.&52O. son ms 9tiles para abrir SJS.&52O.S en otro )ue canal )ue no
sea el ?, como se describi' en la secci'n anterior. 5o fueron mencionados anteriormente, ya )ue la
adecuaci'n de la entana de la consola es delegada generalmente al usuario. Sin embargo, todo lo
del modo M-E5%M aplica igualmente al modo de consola SJS.&52O.. 0os siguientes
parmetros para la adecuaci'n de cada SJS.&52O., (e &efinen en $a $<nea &e a$ia( &e$
SYS=INDO= &e inter>( en e$ config!!"
@:OS= Y:OS=
Estos modos determinan la ubicaci'n de la es)uina superior i()uierda del SJS.&52O.. 0a
unidad est en pi!eles.
P3%&212OQ Esta es la es)uina superior i()uierda del `rea de cliente` @la parte )ue mantiene
te!toB la cual est siendo posicionada. Esto significa )ue UPOSK?, JPOSK? colocarn la entana
de modo )ue la barra de ttulo no puede ser ista.

COLS= $OWS=
Estos son usados para definir el tama*o de la entana. Especifican la cantidad de filas y columnas
deseadas. 2ependiendo de la fuente en uso, el tama*o real de la entana podra ariar.
%ONT= %ONTSIZE=
Estos son utili(ados para especificar la fuente a utili(ar con el SJS.&52O.. 0os alores no son
portables. Solamente fuentes de punto fi"o @fi!ed<pitc+B pueden ser usadas. El tama*o es
especificado en puntos.
LOCKMODE=Normal
LOCKMODE=VARYFONTS
LOCKMODE=SCROLLBARS
%tilice uno de estos para determinar el comportamiento del SJS.&52O. cuando este sea
cambiado de tama*o. 0O3V-O2EK5OR-10 es el alor )ue se asume por omisi'n. Este traba"a
de la misma forma )ue el bot'n de c+e)ueo ^c+ecIbo!_ y los radio botones ^radio buttons_ en el
dilogo de Fuentes/6ama*o, e!cepto )ue estos pueden traba"ar con SJS.&52O.S de no consola
@las cuales no tienen un dilogo de Fuentes/6ama*oB tambi#n.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;A
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
MEN&
SJS.&52O.S de no consola normalmente no tienen una barra de men9. Si este modo es
especificado, una barra de men9 es proista, la cual contiene los men9s de Edici'n e &mpresi'n.
INVE$T
Este causa la M&nersi'n de 0u(/OscuridadM en un men9 con tems marcables en el men9 de
impresi'n a ser inicialmente marcado.
M'@IMIZED
3ausa )ue el SJS.&52O. inicialmente sea ma!imi(ado. Obsere )ue el tama*o es a9n
significatio, ya )ue regresar a ese tama*o cuando sea restaurado.
Este es un me"or e"emplo en su config!!", de un SJS.&52O. )ue no sea de consola7

ALIAS T1 SYSWINDOW Ventana extra title=Monitor de trabajo,XPOS=100,
YPOS=100, COLS=40, ROWS=10, FONT=Courier, FONTSIZE=10, MENU
M n e m 2 n I * o s - d ) * ) o n - l e s 9 - + - S Y S W I N D O W
Estos mnem'nicos no fueron mencionados anteriormente, ya )ue la adecuaci'n de la entana de
consola es generalmente delegada al usuario. Sin embargo, aplican igualmente a la consola
SJS.&52O..
M'@IMIZE
Este ma!imi(a la entana. %n NRES6OREO la uele a minimi(ar. Otro uso para 8-1U&-&LE8 es
para restaurar el SJS.&52O. luego de +aberlo minimi(ado. E"emplo7
0010 REM "Ejemplo para 'MAXIMIZE'
0020 BEGIN
0030 PRINT 'MINIMIZE',
0040 WAIT 3
0050 PRINT 'MAXIMIZE'
%ONT(nom1+e,uente!.t-m-Do"
El mnem'nico NFO56O cambia el nombre de la fuente familiar @nombrefuenteYB y fi"a el tama*o
@tama*oB. El nombre de la fuente no es transportable, y tiene )ue representar una fuente de punto
fi"o @fi!ed<pitc+B disponible en el sistema. En la mayora de los sistemas .indo/s, M3ourierM,
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;[
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
M3ourier 5e/M, y MFi!edsysW traba"arn. Vea el bot'n de lista en el dilogo de Fuentes/6ama*o.
1+ se muestran todas las fuentes )ue pueden traba"ar con el mnem'nico NFO56O.
SIZE(*ols.,)l-s"

%tilice este mnem'nico para for(ar un SJS.&52O. a tener un tama*o dado. El comportamiento
puede ariar dependendiendo del alor del modo 0O3V-O2E @isto anteriormenteB. 0as
siguientes lneas dan una idea de los efectos del 8FO568 y el 8S&LE87
0010 REM "Ejemplo para 'FONT' y 'SIZE'
0020 PRINT 'FONT'("BBX",23),'CS',"BBX #23"; WAIT 3
0030 PRINT 'SIZE'(40,10),'LF',"Cambio a 40x10"; WAIT 3
0040 PRINT 'SIZE'(40,15),'LF',"Cambio a 40x15",'LF'; WAIT 3
0050 PRINT 'CS'
0060 PRINT 'FONT'("Courier",10),'LF',"Courier #10 en 40x15";WAIT 3
0070 PRINT 'SIZE'(60,20),'LF',"Cambio a 60x20",'LF'; WAIT 3
0080 PRINT 'FONT'("Courier New",12),'LF',"Courier New #12"; WAIT 3
0090 PRINT 'FONT'("Courier New",15),"Courier New #15"
0100 PRINT 'FONT'("BBX",15),'LF',"BBX #15"
0110 PRINT 'SIZE'(80,25),'LF',"Restaura a 80x25"
5o se confunda los parmetros arriba mostrados para 8FO568 y 8S&LE8, ya )ue para su uso con las
pantallas $%& llean ms parmetros.
E l d ) s 9 o s ) t ) v o S Y S : $ I N T
Visual PRO/5 puede imprimir ya sea directamente a un puerto de 0P6 @el cual puede dirigir la
salida a otra parte si el puerto est proyectado a una impresora de redB o a tra#s del Print -anager
del .indo/s. El +ec+o de imprimir directamente al puerto, permite control preciso sobre la
impresora )ue e!actamente sea usada, as como de los c'digos y caracteres )ue an a la impresora.
&mprimiendo por medio del Print -anager del .indo/s presenta al programador un reporte con un
dispositio impresor uniforme con un con"unto mnimo de capacidades, y permite al usuario @a
tra#s del panel de control o diersos dilogos estndarB seleccionar )u# impresora, disposici'n de
pgina, etc. a a usar.
El dispositio SJSPR&56 representa un importante paso en el camino al $%& por)ue se comporta
muc+o como un dispositio impresor ordinario, no obstante, atado al sistema del $%&, permite al
usuario utili(ar dilogos grficos estndar para cambiar parmetros de la impresi'n. El alias de
SJSPR&56 es integro o directo.
alias PD sysprint "Print Manager" font=Corier!"ols=#0!ro$s=%&!PRE'IE(
alias LP )*e+)prn "Epson" CR!CP=0,!-P=1&!CPC./-=10&!-PC./-=#0!EP.1=0E!
EP.,,=12!EPC./-=&!EP/I1E-=1
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;D
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
3uando el canal es abierto con ZP2Z, es +ec+o un intento para establecer la impresi'n de un
conte!to grfico. Si esto fallara, un QERRORK;C es reportado con el OPE5.
M o d o s d e S Y S : $ I N T

Say algunos modos )ue afectan el comportamiento de SJSPR&56. Por omisi'n, un OPE5 al
SJSPR&56 causa )ue se use la impresora de alor por omisi'n con las posiciones de alor por
omisi'n sea abierta @configurada en el Panel de 3ontrolB.
DI'LO8
3on el modo 2&10O$, el OPE5 causa )ue el dilogo de impresoras estndar del .indo/s
apare(ca. Si el usuario +ace un NclicIO para 3ancelar, un QERRORK;C es reportado. 2e otra manera,
el canal es abierto a cual)uier impresora )ue el usuario seleccione. 0a disposici'n de pgina,
calidad de impresi'n y otros atributos pueden tambi#n ser seleccionados en ese momento.
E"emplo7 OPEN (1,MODE=DIALOG)PD
SET&:
Este es similar al modo 2&10O$, e!cepto )ue el dilogo del Print Setup... es mostrado en lugar del
dilogo Print ...
:$EVIEW
El parmetro PREV&E. en la lnea de alias de la impresora, nos proee la facilidad de )ue todo
reporte )ue sea eniado +acia esa impresora, primero sea cargado Men pantallaW, para )ue desde a+
lo podamos isuali(ar, de una manera tal )ue podemos ia"ar a tra#s de todo el reporte y poder
decidir al final si lo imprimimos todo o solo las pginas )ue nos interese o si del todo desec+amos
la impresi'n. Solo est disponible a partir de la reisi'n >.?!.
EOBID=
&mprime los traba"os presentados en el Print -anager del .indo/s siempre )ue tengan un nombre.
Este nombre aparece en las listas de cola del Print -anager. Por omisi'n, un traba"o de SJSPR&56
tiene el nombre MVisual PRO/5 2ocumentoM, pero usted podra llamarlo a como guste con este
modo.
%ONT=DEVICE
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;G
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
%ONT=SYSTEM

3on FO56K2EV&3E @el alor por omisi'nB, el dispositio de SJSPR&56 intentar locali(ar una
fuente de dimensiones aceptables )ue sea natia para la impresora y as puedan imprimir
rpidamente y )ue se mire bien. 3on FO56KSJS6E-, un tipo de letra @tipo erdaderoB de la
fuente siempre es usado, dando ms fle!ibilidad pero elocidades de impresi'n ms lentas. 1l igual
)ue con la mayora de los detalles de esta gua, no se pretende )ue este tema sea del todo entendido.
3onsulte el manual para ms detalle.

E l d i s p o s i t i v o S Y S P L O T
Si usted tiene soft/are )ue utilice un dispositio tradicional de ploteo de ,,! @nombre del alias
inicia con una letra 2B, usted puede lograr un $%& instantneo actuali(ado ofreciendo la opci'n de
plotear una entana grfica. 0ograr esto es tan fcil como a*adir una lnea de alias en el config!!"
como la siguiente7
A/IA- 30 -4-P/.5
3uando el canal es abierto, una entana grfica es creada para representar la superficie )ue puede
ser tra(ada. Permanece isible +asta )ue el canal sea cerrado.
M o d o s d e S Y S : L O T
Para e"ercer control de refinamiento sobre el rea de ploteo, usted puede suministrar los siguientes
modos opcionales en el 10&1S )ue corresponda, en el config!!".
@:OS= Y:OS=
Estos modos controlan la ubicaci'n de la entana de ploteo en pi!eles. El punto )ue se posiciona es
la es)uina superior i()uierda del rea del cliente @superficie para ploteoB. Por lo tanto,
suministrando UPOSK?, JPOSK? de"ar la barra de ttulo como NapagadaO.

WIDT#= #EI8#T=
Estos suministran el anc+o y altura de la entana de ploteo en pi!eles.
%n e"emplo ms elaborado de un alias de SJSP0O6 sera el siguiente.
A/IA- 30 -4-P/.5 6'entana *e Ploteo XP.-=100!4P.-=100!
(I357=200! 7EI875=000
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: >?
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
E l d i s p o s i t i v o S Y S G U I
El dispositio SJS$%& es una poderosa +erramienta grfica )ue permite a un programa de Visual
PRO/5 crear y manipular elaboradas entanas y dilogos grficos. Este es el )ue ms utili(aremos
en lo )ue siga del curso y en el traba"o real.
Para abrir el dispositio SJS$%&, usted necesitar un alias como el siguiente en su arc+io
config!!"
A/IA- X0 -4-89I

El nombre de alias tiene )ue comen(ar con U, pero no necesariamente tiene )ue ser U?. Ja )ue
nada responde realmente a #l, U? sera como cual)uier otro nombre. Para preparar el comien(o
interactio con SJS$%&, simplemente abra el dispositio as7
GUI=UNT
OPEN(GUI)X0
5inguna entana grfica se crear +asta )ue los comandos +ayan sido eniados al canal SJS$%&.
P3%&212OQ Es posible tener arios canales abiertos al SJS$%&, pero los dos canales se
comportarn como uno s'lo. Esto es, )ue algunos modos cambian u otras definiciones afectarn
todos los canales de SJS$%& igualmente abiertos.
3uando el 9ltimo canal abierto al SJS$%& es cerrado, todas las entanas de SJS$%& y sus
contenidos son destruidos automticamente.
Inte+-**)2n SYS8&I
6oda la interacci'n con SJS$%& corresponde a una de tres categoras.
;. -nem'nicos para acci'n inmediata. Si una acci'n inmediata es deseada, como por e"emplo crear
una entana o des+abilitar un control @Pnombrado -%J pocoQB, un mnem'nico es utili(ado.
>. El 36R0@B y F&5@B para e!aminar componentes del sistema $%&. Si su programa necesita conocer
el estatus actual de un control o entana, u otra condici'n del sistema como la resoluci'n
desplegada, informaci'n de la impresora, etc., 36R0 @B y F&5@B son las funciones a ser usadas.
C. RE12 RE3OR2 para recibir el informe de los eentos del usuario. 3uando el usuario opera un
control grfico o de otra manera interact9a con el sistema $%&, un informe de las acciones del
usuario, llamadas un `eento`, puede ser generado y colocado en una cola @la `cola de eentos`B.
3ual)uier programa completo )ue utili(a una interfase grfica usar todos los tres m#todos
mostrados arriba. 3omo un e"emplo tpico, un dilogo para seleccionar preferencias de usuario ser
mostrado con mnem'nicos, y luego, un RE12 RE3OR2 en un loop esperar a )ue el bot'n OV
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: >;
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
sea tocado con un clicI del rat'n. En ese punto, 36R0 @B e!aminara la condici'n de las diersas
ca"as de c+e)ueo @c+ecI bo!esB, botones de radio @radio buttonsB y barras de despla(amiento @scroll
barsB, para determinar )u# posiciones el usuario +a elegido. 0uego un mnem'nico podra ser usado
para destruir el dilogo.
1 manera de recomendaci'n, estos son los pasos )ue podran seguirse para la confecci'n de
cual)uier programa )ue utilice pantallas grficas.
;B 2efinir la pantalla, ya sea manualmente o mediante el editor de pantallas.
>B 1brir arc+ios o ,ase de 2atos a utili(ar.
CB 0eer los datos )ue necesiten ser cargados a los ob"etos o listas de tems en el conte!to.
EB Sacer )ue la pantalla grfica se +aga isible.
3ontrolar eentos reportados por .indo/s, ba"o las siguientes prioridades7
- Primero se trata de controlar en cual conte!to @pantallaB ocurri' el eento.
- 0uego se debe controlar la acci'n a seguir con el resto de eentos. %na buena forma de lograrlo es
por medio de sub<rutinas adecuadas a la necesidad de cada eento.
E0e+*)*)o de SYS8&I F3G #ol- Mundo
1ntes de foguearnos ms aba"o con algunos de los detalles del dispositio SJS$%&, amos a
intentar traba"ar con un e"emplo. Este es un programa clsico )ue seguiremos llamando MSola,
-undoM, con una interfase grfica. %na entana aparecer con el ttulo MSolaM. 3ontiene un bot'n
9nico, marcado MOVW. 0a entana desaparece despu#s de )ue el usuario +aga clicI en la ca"a de
cierre o en el bot'n MOVW. Esto deber ayudarnos para introducir algunos de los conceptos y
t#cnicas de SJS$%& de una forma manual, y posteriormente podamos agregar otros detalles.
0010 OPEN (1)"X0"
0020 PRINT (1)'SEMICHARS'
0030 PRINT (1)'WINDOW'(50,50,50,50,"Hola",$83$); REM "El $83$ hace que
0030:tenga opcin de esconderse=$80$, maximizarse=$01$ y cerrarse=$02$
0040 PRINT (1)'BUTTON'(1,5,15,40,0,"OK",$$); REM "Id, Col, Lin, Anch,
0040: Alto, Ttulo
0050 DIM EVENT$:TMPL(1)
0060 READ RECORD (1,SIZ=LEN(EVENT$))EVENT$
0070 END
-ecanografe este programa y slelo como E"erc;. &ntente correrlo con un SE66R13E.
PS%$ERE53&1Q SE66R13E es ms 9til )ue siempre para la depuraci'n de programas $%&,
desde la entana de consola si no es utili(ada para cual)uier otra cosa.
&ntente correrlo paso por paso a tra#s de #l. @%sted podra usar a1ltb]a6abb para er la entana
del $%& si lo +ace paso por pasoB. 5ote )ue la entana puede ser cambiada de tama*o sin )ue
ninguna declaraci'n de programa sea e"ecutada. 6odo eso es mane"ado por el sistema del $%&. 1
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: >>
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
menos )ue usted pregunte por reportes de eentos opcionales, usted puede )uedarse )uieto y
permitir al sistema del $%& +acer una gran cantidad del traba"oQ
1+ora amos a comentar cada una de las lneas de ese programa.
0010 OPEN (1)X0
Esto e!actamente nos prepara el ambiente para interactuar con el dispositio de SJS$%&.
0020 PRINT (1)'SEMICHARS'
Esto establece la unidad de medida para la colocaci'n de entanas y controles a una unidad llamada
MsemicaracteresM. NSE-&3S1RSO no debe ser usado para colocar dibu"os, solamente campos. ,a"o
la modalidad de semicaracteres, normalmente una pantalla @completaB se compone de E?? por C??
semicaracteres.
P3%&212OQ Por omisi'n las entanas y controles son posicionados en unidades de pi!el, pero esto
podra ser un problema debido a los tama*os ariables de fuentes del sistema en uso en diferentes
m)uinas. Por e"emplo, si un bot'n fue +ec+o lo suficiente y "ustamente alto para acomodar el te!to
MOVW en una m)uina, podra resultar demasiado pe)ue*o en otra m)uina donde una fuente ms
grande del sistema se tenga en uso.
En ista de )ue la fuente del sistema es una funci'n del NdrierO de despliegue, y adems es
establecida de acuerdo a la preferencia del usuario, Visual PRO/5 no puede cambiar nada al
respecto. Sin embargo, #ste puede, a"ustar el tama*o y locali(aci'n de todo ob"eto grfico para
compensar la diferencia de las fuentes entre los distintos sistemas, y esto es e!actamente al
determinar cul unidad de MsemicaracteresM es considerada.
%n semicaracter es definido como de un cuarto del anc+o de un caracter tpico en la fuente del
sistema actual y de un octao la altura. %n pi!el siempre es igual a un punto en el despliegue, pero
un Msemic+arM podra ser igual a >.E pi!eles a tra#s y de >.; pi!eles erticalmente, o alguna otra
combinaci'n rara. El tama*o e!acto de un semicaracter no es lo )ue es importante @aun)ue es
posible determinar esto en tiempo de corridaB, pero el +ec+o es )ue controles con te!to @como el
bot'n en nuestro e"emploB pueden ser +ec+os para mirarse bien en todos los despliegues.
El editor de recurso de ,1S&S soporta semicaracteres, )ue +acen la unidad de fcil mane"o. Para
m!ima portabilidad, la unidad de semicaracteres debera ser utili(ada en todas las entanas donde
e!istan controles )ue contengan una lnea 9nica de te!to @el cual podra ser truncado si la fuente es
largaB. 2e toda manera, es aceptable y ms coneniente, )ue utili(ar pi!eles.
0030 PRINT (1)'WINDOW'(50,50,50,50,Hola,$83$)
El mnem'nico N.&52O.O es usado para crear entanas grficas. %sted lo utili(ar una y otra e(.
0os primeros cuatro parmetros describen la ubicaci'n y tama*o de la entana @!loc, yloc, anc+o,
alturaB. En este caso, +emos situado la entana a 5? semicaracteres de la es)uina superior i()uierda
a la e( en ambas coordenadas, y el tama*o de entana de 5? por 5? semicaracteres. Enti#ndase
bien, )ue las coordenadas se refieren a los semicaracteres de la pantalla completa.
El siguiente parmetro es el ttulo de entana inicial. 0a ubicaci'n, tama*o y ttulo pueden ser
completamente cambiados en cual)uier momento con otros mnem'nicos como NS&LEO y N6&60EO.
El 9ltimo parmetro re)uerido es un string de banderas o condiciones. Este es un string binario )ue
contiene la suma de uno o ms bits de bandera. %n s#ptimo parmetro puede opcionalmente ser
a*adido, )ue es una mscara de eento, tambi#n en un string binario. 0a mscara de eento puede
ser usada para re)uerir informe de eentos opcionales.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: >C
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
P3%&212OQ 0os parmetros de mscara de banderas y eento son de cuatro bytes @oc+o dgitos
+e!adecimalesB de largo. Si menos bytes fueran especificados, los dgitos )ue falten sern asumidos
a la i()uierda a como ocurre con el ector de SE6OP6S. %na bandera puesta como Y?;Y se
asumira como Y???????;Y. Es "ustamente un n9mero.
El parmetro de banderas especificado a)u tiene una combinaci'n de tres banderas. Estas son7

Y???????;Y entana puede ser cambiada de tama*o por el usuario
Y???????>Y entana tiene una ca"a de cierre
Y??????D?Y entana puede ser minimi(ada por el usuario
6rate de cambiar los parmetros de la bandera por algunos de estos bits. @Valores buenos para el
intento son Y?CY, Y?;Y y Y?>YB. P%sted tiene el controlQ
0040 PRINT (1)'BUTTON'(1,5,15,40,0,OK,$$)
El mnem'nico N,%66O5O a*ade un control de bot'n a la entana actual. El primer parmetro es
un &2 @identificadorB para el bot'n. El &2 puede ser un n9mero cual)uiera desde el ; al C>[A[,
aun)ue &2 ; es utili(ado tpicamente para los botones OV. 0os siguientes cuatro n9meros son la
ubicaci'n @!, yB y dimensiones @anc+o, alturaB del bot'n, en las unidades actuales de la entana
preiamente definida @semicaracteresB.
5ote la altura de cero. 1lgunos controles tienen un alor de dimensi'n )ue se asume Mpor
omisi'nM. 0os botones tienen un alor de altura )ue se asume por omisi'n, )ue puede ser solicitado
suministrando una altura de ?. %sando dimensiones con alor )ue se asume por omisi'n puede
ayudar a )ue sus controles sean agradables para ser utili(ados en otras aplicaciones. En este caso, el
bot'n ser lo "ustamente alto como para acomodar el te!to adecuadamente.
El se!to parmetro es el ttulo. Este es el te!to )ue aparece dentro del bot'n. El 9ltimo @s#timoB
parmetro es un string de banderas. En este caso, +emos suministrados un string aco, el cual es
e)uialente al n9mero cero @Y????????YB. 5inguna de las banderas opcionales )ueda establecida.
En este punto, la entana y bot'n son mostrados, y todo lo )ue contin9a es para esperar a )ue el
usuario tome alguna acci'n.
0050 DIM EVENT$:TMPL(1)
0a nuea funci'n 6-P0@B permite recuperar un string con la informaci'n )ue es retornada por la
funci'n F&5@B, y en algunos casos especiales @los canales SE0E36 J SJS$%&B pueden ser
inocados sin el parmetro &52K para recuperar un 6E-P016E o patr'n para el registro de
informaci'n mismo.
En este caso, estamos recuperando el 6E-P016E o patr'n para datos de eento, )ue pueden
entonces ser ledos desde el canal SJS$%&. Recordar )ue eentos son reportados debido a la
interacci'n del usuario con el sistema del $%&. 5o suministramos un parmetro de mscara de
eento cuando se crea la entana, de modo )ue recibiremos solo el eento obligatorio @no
opcionalB. 1fortunadamente, un bot'n )ue se presiona y una ca"a de cierre )ue se opera, ambos son
eentos obligatorios, de modo )ue son automticamente reportados
0060 READ RECORD (1,SIZ=LEN(EVENT$))EVENT$
El programa esperar con este RE12 RE3OR2 +asta )ue un eento sea reportado o el programa
sea interrumpido. %sted puede interrumpir el programa +aciendo clicI con el rat'n en la entana de
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: >E
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
la consola @para establecer el foco de teclado a elB y luego oprimiendo a3trl b]3. 3ambiando de
tama*o la entana se genera un eento opcional pero ese no es pasado por la mscara de eentos,
de modo )ue las 9nicas acciones de usuario )ue +ar )ue el programa sea completado son el clicI
en la ca"a de cierre o el clicI en el bot'n OV.
3omo un e"ercicio final, amos a conertir este programa en algo ms completo, para una
aplicaci'n $%& con Visual PRO/5. Para +acer eso, amos a crear una entana de terminal inisible
en el config!!".
ALIAS T2 SYSWINDOW Terminal Invisible INVISIBLE
0uego entonces cambie el programa de modo )ue termine con un RE0E1SE, no con un E52.
0070 RELEASE
1+ora tambi#n amos a adaptar un icono cual)uiera.
0035 PRINT (1)'MINICON'(PROGMAN.EXE,10)
1+ora modificaremos un icono en .indo/s para )ue ino)ue el comando de esa lnea @y utilice un
icono cual)uiera a opci'n suyaB.
vpro5 -tT3 Ejerc1
El programa E"erc; a+ora correr y terminar sin )ue apare(ca la entana de la consola.

E0e+*)*)o de SYS8&I F5G #-*)endo Hue l-s *os-s t+-1-0en
En este E"ercicio, amos a traba"ar en modo inmediato, para reali(ar un e!perimento con algunos
de los mnem'nicos )ue traba"an con el sistema del $%&.
Vamos a comen(ar creando una entana y poniendo un bot'n en ella, similarmente a como se +i(o
con el programa Sola -undo. Obseremos )ue esta e( no usaremos banderas para la creaci'n de
entanas.
0001 REM EJERC2 Prctica de pg.25/26
0010 BEGIN; OPEN (1)X0
0020 PRINT (1)'SEMICHARS'
0030 PRINT (1)'WINDOW'(50,50,50,50,Test,$$)
P5O61Q 2esde )ue usted est traba"ando en modo inmediato, el SJS.&52O. inmediatamente
llegar al frente, para obtener su siguiente lnea de entrada. 0o normal es )ue al dar E56ER, la
entana de $%& )ue usted est creando apare(ca y desane(ca en forma inmediata. 6odo eso es
correcto. %sted puede +acer )ue reapare(ca oprimiendo a1ltb]a6abb. Escriba a+ora7
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: >5
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
0040 PRINT (1)'BUTTON'(1,5,15,40,0,"ok,$$)
El uno en negrita corresponde al &2 asignado al bot'n.
En este punto, la entana debera ser similar a la del e"emplo de Sola -undo, e!cepto )ue la
entana no tiene ca"a de cierre, no puede ser minimi(ada, y tampoco cambiada de tama*o.
Seguidamente, trate a+ora de crear otro bot'n usando como &2 siempre el n9mero ;.
0050 PRINT (1)'BUTTON'(1,5,30,40,0,Cancelar,$$)
3'rralo y er )ue un ERRORK>G ser dado, cuyo 63,@;?B ser igual a ;>.
PS%$ERE53&1Q 0os mnem'nicos de SJS$%& generalmente dan ERRORK>G como falla, pero el
alor del 63,@;?B generalmente es de gran ayuda. Recuerde )ue un c'digo de 63,@;?B positio
generalmente es dado cuando el error es detectado desde el interior del lengua"e @contrario a como
ocurre con los errores originados en el sistema operatioB. 3uando el 63,@;?B es positio, reste
uno para obtener el c'digo de error real. 63,@;?BK;> forma un QERRORK;;, )ue normalmente es
M0lae 2uplicada o FaltanteM. En este caso, significa )ue ya +ay un bot'n con ese &2.
&ntente el mismo comando, pero con un nueo &2 para el nueo bot'n, como sigue7
0050 PRINT (1)'BUTTON'(2,5,30,40,0,Cancelar,$$)
1+ora usted si podr er el segundo bot'n.
P5O61Q El &2 ; est reserado generalmente para botones OV, y el &2 > est reserado para
botones de 3ancelar. 1dems de esos, al programador se le pide de"ar los alores desde ; a GG
como Mreserados para utili(aci'n futuraM. Esto simplifica la situaci'n un poco c para ms detalles,
ea el manual del Visual PRO/5.
1+ora tenemos una entana con dos botones en ella. Vamos a traba"ar con ellos. 3omen(aremos
e!perimentando para aprender como +acer cosas inisibles.
PS%$ERE53&1Q El &2 ? es un identificador especial )ue se refiere siempre a la entana actual. En
los comandos )ue siguen, estaremos utili(ando &2 ? para operar en toda la entana, e &2s ; y > para
operar en los botones de control.
6rate digitando lo siguiente7
00%0 WAIT 1: PRI15 ;1<'7I3E';1<
00=0 WAIT 1: PRI15 ;1<'-7.(';1<
0os WAIT 1 se agregan para )ue obsere en forma pausada los cambios )ue se an dando en la
pantalla. 1preciar muy bien )ue el bot'n OV se +ace inisible y de nueo isible. El primer
n9mero entre par#ntesis es el &2 del ob"eto a ser ocultado o mostrarlo. Recuerde )ue ?, ; y > son
lidos para este e"emplo. E!perimente ocultando y mostrando los dos botones y la entana misma.
0os mnem'nicos NS&2EO y NSSO.O soportan ms de un parmetro, para cambiar ms de un tem a
la e(. E"7
PRINT (1)'SHOW'(0,1,2)
3on la lnea anterior se asegurar )ue la entana y ambos botones sern isibles de nueo.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: >A
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
1+ora usted est listo para otro par de mnem'nicos )ue son muy similares al NS&2EO y NSSO.O.
6rate agregando estas lneas.
0080 WAIT 1
0090 PRINT (1)'DISABLE'(1)
0100 WAIT 1
0110 PRINT (1)'ENABLE'(1)

El mnem'nico N2&S1,0EO des+abilita el uso de campos definidos para entrada de datos del
usuario. En el caso de un control, el tem es rellenado con un color gris para indicar al usuario )ue
no puede usarlo. En el caso de una entana, simplemente no de"a )ue responda. 0as entanas y
controles desactiados no pueden ser moidos, cambiados de tama*o, actiados con clicI, o
operados de otra manera, +asta )ue sean permitidos de nueo. E!perimente con N2&S1,0EO y
NE51,0EO como se muestra arriba. 3uando lo +aya +ec+o, digite la siguiente lnea para asegurarse
de )ue todo es permitido de nueo.
PRINT (1)'ENABLE'(0,1,2)
Seguidamente, amos a utili(ar el mnem'nico N6&60EO para cambiar el te!to de ttulo de la entana
y los controles.
PRINT (1)'TITLE'(0,Nuevo Ttulo de Ventana)
PRINT (1)'TITLE'(1,okay)
E!perimente con el mnem'nico N6&60EO, cambiando los ttulos de los controles por lo )ue usted
)uiera. d4u# ocurre si el mensa"e es demasiado largo para el campoX 3uando usted +aya +ec+o la
prueba, agregue lo siguiente para restablecer los ttulos.
0120 WAIT 1
0130 PRINT (1)'TITLE'(0,TEST)
0140 WAIT 1
0150 PRINT (1)'TITLE'(1,OK)
0160 WAIT 1
0170 PRINT (1)'TITLE'(2,CANCELAR)
0180 WAIT 1
0os mnem'nicos N-OVEO y NS&LEO le permiten cambiar la ubicaci'n y posici'n de algo una e(
)ue +a sido creado. &ntente eso, para +acer )ue el bot'n OV )uede ms alto.
0190 REM Siguiente lnea cambia de tamao el botn OK
0200 PRINT (1)'SIZE'(1,40,30)
0210 WAIT 1
El primer parmetro del NS&LEO es el &2 del control @? para la entanaB a ser afectado, y los
siguientes dos parmetros son los nueos alores U y J, en unidades actuales @semicaracteresB.
El bot'n OV a+ora estar tan alto )ue absorbe al bot'n de 3ancelar. 1+ora amos a +acer la
entana misma ms alta
0220 PRINT (1)'SIZE'(0,50,100); rem "El cero subrayado se
0220:refiere a la ventana.
0230 WAIT 1
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: >[
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
y entonces moeremos el bot'n de 3ancelar +acia aba"o.
0240 PRINT (1)'MOVE'(2,5,50)
0250 WAIT 1
1+ora )ue usted conoce como los mnem'nicos N-OVEO y NS&LEO traba"an, e!perimente sus
propios moimientos y cambios de tama*o de los tres ob"etos grficos @&2 ?, ; y >B )ue estn
mostrados en este momento. d4ue ocurre si usted locali(ara un bot'n afuera del rea isible en una
entanaX dPuede usted moerla detrs y er de nueoX dPuede una entana ser +ec+a mayor )ue la
mostradaX
Vamos a aprender manipulaci'n ms general con el mnem'nico7 N2ES6ROJO. %sted puede
des+acerse de cual)uier control o entana con solo generar un N2ES6ROJO@idB con el &2 del ob"eto
a ser destruido. 2es+agmonos a+ora del bot'n de 3ancelar.
0260 PRINT (1)'DESTROY'(2)
0270 WAIT 1
Si no )uiere esconder un ob"eto, puede entonces destruirlo y el ob"eto se pierde por completo. El
n9mero del &2 puede ser reutili(ado en este punto.
1 diferencia de NS&2EO, NSSO.O, NE51,0EO, y N2&S1,0EO, el mnem'nico N2ES6ROJO solo
puede aceptar un parmetro. N2ES6ROJO@?B elimina la entana actual y todos sus contenidos de
un solo golpe. 1+ora amos a intentar, acabar este e"ercicio. En este caso, +ay dos cosas )ue se
pueden destruir de inmediato, la entana y el bot'n OV.
0280 PRINT (1)'DESTROY'(0)

En este punto, usted puede crear una nuea entana, o cerrar simplemente el canal SJS$%&.
0290 CLOSE (1)

E0e+*)*)o de SYS8&I F6G E=9lo+-ndo l- ,un*)2n CT$L("
0a funci'n 36R0@B le permite e!aminar el estado del sistema del $%& en diersos modos. Por
e"emplo, usted puede utili(ar la funci'n 36R0 Mobtener te!toM para recuperar el te!to de ttulo de la
mayora de los controles. Para probarlo mecanografe el siguiente programa7
0010 OPEN (1)X0
0020 PRINT (1)'SEMICHARS'
0030 PRINT (1)'WINDOW'(50,50,70,70,CTRL test,$$)
0040 PRINT (1)'EDIT'(101,10,10,30,15,,$$)
0050 ESCAPE
1l dar R%5 a ese programa, el conte!to se desplegar y 8saltar8 debido a la instrucci'n ES31PE.
Para lograr er el conte!to )ue genera, debe oprimir a 1ltb ] a6abb.
0a mayor parte de este programa ya le debe ser muy familiar. El nueo mnem'nico )ue est usando
es el NE2&6O, )ue crea un control llamado 3a"a de Edici'n. Este es un control estndar de .indo/s
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: >D
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
para obtener una lnea 9nica de entrada del usuario. 0a sinta!is es id#ntica a la indicada para el
mnem'nico N,%66O5. En este e"emplo, estamos asignando control &2 ;?; a la ca"a de edici'n, y
suministramos un string aco para el te!to del ttulo. 3ual)uier te!to de ttulo )ue se suministre
ser preestablecido como el te!to actual en la ca"a de edici'n.
%na e( )ue usted +a corrido el programa, usted deber poder er la nuea entana del $%& y
editar el control. Saciendo un 3licI del rat'n dentro de la ca"a de edici'n producir )ue usted ea
una barra intermitente, la cual es conocida como Msigno de intercalaci'nM, e indica donde el te!to
ser insertado. Entonces, para lograr FO3O en dic+o control, +gale clicI y luego proceda a digitar
alg9n te!to.
1+ora utili(aremos la funci'n 36R0 para atisbar en el control y er lo )ue usted +a entrado. 2igite
este comando despu#s de +aber digitado algo en la ca"a de edici'n7
PRINT CTRL(1,101,1) @3anal $%&, &2 del 3ontrol y 6ipo de Funci'nB
%sted podr er el te!to )ue fue digitado en la ca"a de edici'n. El primer argumento de la funci'n
36R0@B es el n9mero de canal. En este caso, el dispositio SJS$%& fue abierto por medio del
canal ;. El segundo argumento es el &2 del control o entana )ue est siendo e!aminada. 3omo de
costumbre, el &2 ? es un distintio para la entana en uso. Solo por diersi'n, trate de imprimir
36R0@;,?,;B. Ver el te!to del ttulo )ue se le dio a la entana7 36R0 test.
El tercer argumento es la Mfunci'nM, )ue dice al 36R0 )u# tipo de informaci'n usted )uiere
reali(ar. 0a funci'n ; es Mobtener te!toM. Frecuentemente Mobtener te!toM recupera el te!to de ttulo
del control o entana, pero no siempre. 3omo un e"emplo, cuando el ob"eto en cuesti'n es una ca"a
de lista, Mobtener te!toM retorna el te!to del tem seleccionado de la lista en uso. E!isten al menos
)uince diferentes funciones 36R0@B, pero no todas son normalmente usadas.
Si el tercer argumento no fuera suministrado, Visual PRO/5 retorna la ms com9nmente<utili(ada o
MinteresanteM f#ncin para ese control. Esta es siempre ya sea Mobtener te!toM @funci'n ;B u
Mobtener alorM @funci'n >B. $eneralmente, a)uellos controles cuyo estado est descrito
principalmente por un n9mero @lista de ca"a, barra de despla(amiento, ca"a de c+e)ueo, etc.B
asumido por omisi'n para Mobtener alorM. 6odo lo dems es contrario al alor por omisi'n para
Mobtener te!toM.
Para )ue +aga la prueba, digite estas dos lneasQQ
PRINT CTRL(1,101)
PRINT CTRL(1,0)
3omo usted puede er, la funci'n Mobtener te!toM es el alor por omisi'n en estos casos. Si a usted
no le molesta esto con las funciones por omisi'n, no necesita preocuparse. %sted siempre puede
especificar el tercer argumento y obtener la funci'n )ue usted desee.
0a funci'n ? es Mobtener rectnguloM. Eso retorna la ubicaci'n del rectngulo unificador del control
o entana especificada. El rectngulo es retornado como cuatro strings consecutios binarios de dos
bytes. Este es un patr'n )ue traba"ar con 36R0@B funci'n ?.
X>9;&<! 4>9;&<! (>9;&<! 7>9;&<
Vamos a intentar encontrar la ubicaci'n y tama*o de la entana y de la ca"a de edici'n. Para eso
adicione las siguientes lneas al programa definido en la pgina anterior.
0060 DIM RECT$: X:U(2), Y:U(2), W:U(2), H:U(2)"
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: >G
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
0070 RECT$=CTRL(1,0,0)
0080 PRINT RECT.X, RECT.Y, RECT.W, RECT.H
0090 RECT$=CTRL(1,101,0)
0100 PRINT RECT.X, RECT.Y, RECT.W, RECT.H
1+ora intente moer la entana y encontrar los alores de nueo. dSe sorprendi'X 0a ubicaci'n de
la entana es diferente, pero las dimensiones son las mismas. 6odas las coordenadas para la ca"a de
edici'n son reportadas relatiamente a la entana, de modo )ue no cambiaron. %sted podra
encontrar alguna ligera ariaci'n de dimensi'n en errores de conersi'n debido a la conersi'n
entre pi!eles y semicaracteres.
0a funci'n ? retorna los alores en las unidades actuales. Para er como los pi!eles y
semicaracteres comparan en su sistema, trate de +acerlo digitando
0020 PRINT (1)'PIXELS'
para cambiar las unidades actuales a pi!eles. Entonces bus)ue los rectngulos dndole R%5 al
programa de nueo. 5ote )ue los ob"etos e!+ibidos no cambiaron repentinamente su tama*o.
3ambiando las unidades solamente sern afectados los nueos ob"etos )ue sean posicionados y
cambiados de tama*o, y como las dimensiones actuales sean reportadas por 36R0@B.
Vamos a combinar lo )u# +emos aprendido en los e"ercicios preios y +agamos un 5%EVO
PRO$R1-1 )ue presente una ca"a de edici'n y un pulsador en una entana. 3ada e( )ue el
bot'n OV es presionado, el ttulo de la entana es dispuesto para concordar con el te!to en la ca"a
de edici'n.
0010 OPEN(1)X0
0020 PRINT (1)'SEMICHARS'
0030 PRINT (1)'WINDOW'(50,50,50,50,Ttulo a Variar,$$)
0040 PRINT (1)'BUTTON'(1,5,15,40,15,OK,$$)
0050 PRINT (1)'EDIT'(101,5,30,40,15,,$$)
0060 DIM E$:TMPL(1)
0070 REM
0080 READ RECORD(1,SIZ=LEN(E$))E$
0090 REM
0100 T$=CTRL(1,101)
0110 PRINT (1)'TITLE'(0,T$)
0120 GOTO 70
5ota ;7 Este programa no tiene como terminar o salirse normalmente. Para oler a la entana de la
consola, tendr )ue dar a1ltb]a6abb o dar un 3licI fuera del conte!to, y luego +acer un a3trlb]3
para interrumpirlo.
5ota >7 %sted a a notar )ue ning9n eento es reportado +asta )ue usted +aga clicI en el bot'n. 0as
ca"as de edici'n pueden reportarlo cada e( )ue sean modificadas, o cada e( )ue ganen o pierden
foco de teclado. Sin embargo, esos eentos son opcionales y deliberadamente no los +emos
solicitado. En muc+os casos esto es preferible para esperar a )ue el usuario +aga clicI en un bot'n,
y entonces lea los otros controles, tanto ms para )ue usted le siga la pista a todo y obtenga los
eentos desde todos los controles.
5ota C7 &ntente dar clicI, doble clicI y arrastre en la ca"a de edici'n. %sted a a obserar el
comportamiento estndar de .indo/s en los controles de edici'n de te!to. Visual PRO/5 es
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: C?
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
completamente compatible con estos. %sted er )ue se puede cortar, copiar y pegar con el la
combinaci'n estndar de teclas a3trlb]U, a3trlb]3 y a3trlb]V. 1cceso al clipboard de un men9
tambi#n se tiene disponible, pero est fuera del prop'sito de este e!perimento.
1+ora me"oremos el programa anterior, cambindole las siguientes lneas, para )ue ea como se
optimi(a el funcionamiento del mismo.
0030 PRINT (1)'WINDOW'(50,50,50,50,Ttulo a Cambiar,$00010002$);
REM Esa bandera activa gravedad y cierre de caja para la ventana
0070 PRINT (1)`FOCUS'(101); REM Posiciona cursor en Objeto 101.
0090 IF E.CODE$=X STOP; REM Termina si cierre de caja es activado
E0e+*)*)o de SYS8&I FIG El $e9o+te+o de Eventos
Semos estado leyendo la cola de eentos para detectar eentos de bot'n y ca"as de cierre, pero
realmente nunca +emos anali(ado la informaci'n de los eentos. El me"or modo de e!perimentar
esto es creando una entana )ue reporte todos los eentos, entonces escriba un programa )ue aya
mostrando el contenido de cada eento en la pantalla. @Sale este programa, ya )ue luego lo
oleremos a usar una y otra e(.B
0010 OPEN(1)X0
0020 PRINT (1)'SEMICHARS'
0030 PRINT (1)'WINDOW'(100,100,100,100,Reportero de eventos,$03$,
0030:$FFFFFFFF$)
0040 PRINT (1)'BUTTON'(1,10,10,50,15,OK,$$)
0050 DIM E$:TMPL(1)
0070 READ RECORD(1,SIZ=LEN(E$))E$
0080 PRINT E.CONTEXT, ,E.CODE$,E.ID, ,HTA(BIN(E.FLAGS,1)),
0080:E.X, E.Y
0090 GOTO 60
Vamos a repasar al menos las partes )ue ya nos son familiares en este programa7
0030 PRINT (1)'WINDOW'(100,100,100,100,Reportero de eventos,$03$,
0030:$FFFFFFFF$)
Esta lnea crea una entana, como de costumbre. Estamos usando las banderas de opciones Y?;Y
@cambiar de tama*oB y Y?>Y @tener una ca"a de cierreB. El s#ptimo parmetro es opcional y sire
para enmascarar el eento, al cual en este caso le pusimos el Merbol de 5aidadM @todos los bits
encendidosB, para poder as obtener el m!imo reporte de eentos. Esto normalmente solo es 9til
para pruebas. $eneralmente, usted )uisiera un pe)ue*o reporte a como usted lo pueda tener y
lograr a9n )ue su programa +aga lo )u# usted )uiera.
0a lnea D? muestra todos los campos en la estructura del eento. El primer campo, E.3O56EU6,
siempre ser cero para esta demostraci'n. El conte!to es usado para identificar una entana
particular cuando el dispositio de SJS$%& es manipulando en ms )ue una entana a la e(.
Semos olidado todo lo tratado por)ue +asta el momento no +emos desplegado ms )ue una
entana.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: C;
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
El campo E.3O2E indica el tipo de eento. Say muc+os tipos de eentos. 1lgunos )ue usted
podra er en esta demostraci'n son7
m rat'n moido
U ca"a de cierre operada
, pulsador de bot'n operado
F entana lograda o enfo)ue perdido
S tama*o de entana fue establecido o borrado
d bot'n del rat'n est aba"o
u bot'n del rat'n est arriba
> doble clicI en bot'n del rat'n
El campo E.&2 contiene el &2 del control o entana )ue est generando el reporte. En esta
demostraci'n, usted er solamente ? @la entanaB y ; @el bot'nB.
0os campos restantes @F01$S, U, JB no son siempre usados, pero cuando si lo estn, dan el detalle
acerca del eento. Por e"emplo, si un bot'n de rat'n es oprimido ^clicIed_, F01$S indica la
condici'n de las teclas de 3trl y S+ift, y U y J reportan la posici'n del cursor del rat'n en el
momento del clicI. Probablemente usted puede obserar fuera de la figura cules campos son
utili(ados para otros tipos de eento.
%na e( )ue el programa est corriendo, intente las siguientes acciones.
muea el rat'n sobre la entana
+aga clicI en el bot'n
+aga clicI en la ca"a de cierre
cambie el tama*o de la entana
0o primero )ue a a notar cuando +aga lo anterior, es )ue +ay tantos mensa"es NmO )ue es difcil
darle seguimiento. Estos son eentos de moimiento del rat'n, y es una buena idea omitir su
reporte, aparte de si usted lo necesitara. Para desactiar ese reporte, debe cambiar la mscara de
eentos en la lnea C? debe ariar el tercer byte as7 YFFFFFEFFY, de"ando todos los otros
encendidos.
Va a notar tambi#n )ue cuando el rat'n +ace clicI en el bot'n, el informe no contiene detalle
alguno. %sted no ser informado en cual bot'n del rat'n ocurri' el clicI, donde fue el clicI, o la
condici'n de las teclas de 3trl y S+ift. Say otro tipo especial de control de bot'n conocido como
6OO0 ,%66O5 el cual si retorna esa informaci'n. @Sepa )ue botones +erramienta y botones
regulares no siempre son intercambiablesB. &ntente cambiar el mnem'nico N,%66O5O en la lnea
E? a N6,%66O5O. @6odos los parmetros son los mismosB. 3orra el programa de nueo y er
muc+o ms detalle del reporte @esta e( tipo de eento NbOB cuando el bot'n del MOVW es
presionado.
P5O61Q Ver )ue al operar la ca"a de cierre no +ace )ue la entana se ale"e. Si este fuera el
comportamiento )ue usted desea, el programa deber preguntar por los eentos NUO para destruir la
entana con N2ES6ROJO@?B.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: C>
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
E0e+*)*)o de SYS8&I FJG D)1u0-ndo e Im9+)m)endo
0o )ue en esta secci'n se e, realmente solo puede interesar a )uienes desean aprender a reali(ar
tra(os lineales en un conte!to grfico.
3ada entana de SJS$%& es no solamente un tenedor potencial de controles sino tambi#n una
superficie para dibu"ado y tra(ado.
P3%&212OQ 0os controles y dibu"ado tienen completamente diferentes coordenadas en el sistema. Es de
gran ayuda imaginarse )ue la coordenada del sistema 3O56RO0 est incrustada encima de la
coordenada 2R1.&5$ del sistema. 3uando los controles estn situados en una entana de SJS$%&,
son situados siempre encima de cual)uier dibu"o +ec+o @P+asta agrupan temOs dibu"ados en ca"as
obscurecidasQB. 5o es posible dibu"ar sobre un control. 0as unidades tambi#n son diferentes lo cual
puede causar )ue el alineamiento sea a eces enga*oso.
PS%$ERE53&1Q Si usted deseara dibu"ar en una entana )ue utili(a semicaracteres y contiene controles,
y tienen el alineamiento de dibu"o predic+o con los controles, coloca un control inisible @una ca"a de
grupo funciona agradablementeB en la entana donde usted )uiera dibu"ar. 19n cuando el control est#
inisible, la funci'n 36R0 ? reportar su ubicaci'n. 3ambie las unidades de control actuales a NP&UE0SO
lo suficientemente largos como para contener el rectngulo unificador para el control inisible. Entonces
usted tendr coordenadas en pi!eles para colocar su dibu"o. V&S%10 PRO/5 se despac+a con programas
de demostraci'n )ue utili(an esta t#cnica.
Vamos a comen(ar dibu"ando un crculo en una entana )ue puede ser ariada de tama*o, entonces
enco"amos la entana y utilicemos ,arras de 2espla(amiento para er parte del crculo a la e(. 6eclee
inmediatamente las siguientes lneas.
0010 REM "Hacer un dibujo
0020 OPEN(1)X0
0030 PRINT (1)'WINDOW'(100,100,200,200,Dibujando,$0D$)
0040 PRINT (1)'ARC'(100,100,30)
5o es necesario cambiar a semicaracteres por)ue no estamos ploteando algunos controles. El flag
Y?2Y para la creaci'n de la entana re)uiere una barra de despla(amiento ertical, una barra de
despla(amiento +ori(ontal, y una entana )ue permita ser cambiada de tama*o.
P3%&212OQ 1+ora mismo usted a a notar )ue se en las barras de despla(amiento. Esto es
normal. 0a ra('n es )ue las barras de despla(amiento son solamente agregadas a una entana si @;B
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: CC
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
lo indicamos en el flag, y @>B si parte del rea de dibu"o no est actualmente isible. &nicialmente
todo el rea de dibu"o es isible.
El mnem'nico N1R3O en SJS$%& traba"a e!actamente como el conocido mnem'nico N1R3O usado
con los dispositios tradicionales de ploteo del ,,!. &gualmente a como es utili(ado desde antes,
este dibu"a un crculo con un radio de C? pi!eles, y el centro posicionado en el pi!el ;??,;??.
P5O61Q El origen para dibu"ar es normalmente en la es)uina superior i()uierda de la entana, y las
unidades son normalmente pi!eles. El origen y escala pueden ser alterados con el mnem'nico
N.OR2O, y las unidades pueden ser cambiadas @aun)ue nunca a semicaracteresB con
N2R1.%5&6SO.
6rate de cambiar el tama*o a la entana. %sted notar )ue a9n no puede er alguna barra de
despla(amiento. En lugar de eso, la imagen dibu"ada es adaptada al tama*o y escala de la entana.
Para mantener la imagen el mismo tama*o )ue la entana cambiada de tama*o, utilice el
mnem'nico N6R13VO, a como sigue.
0050 PRINT (1)'TRACK'(0)
Eso impedir )ue la superficie de dibu"o sea re<escaleada "unto con la entana. 1+ora usted debera
poder reducir la entana y de poner en operaci'n las ,arras de 2espla(amiento.
0060 PRINT (1)'PLOTTEXT'(150,100,"Comentario"); REM "Sirve
0060:para agregar texto a los dibujos
6rate de aciar el dibu"o a una impresora, si tuiera una disponible. Estos comandos debern
permitirle esa acci'n, ya )ue ocasionan el despliegue del dilogo de impresi'n del .indo/s.
PRINT (1)'PSETUP','PWINDOW'
El mnem'nico NPSE6%PO nos trae el dilogo de impresi'n, de modo )ue usted puede seleccionar
una impresora. Esto solamente es necesario si usted no deseara aceptar las omisiones del sistema,
como estn configuradas en el panel de control. NP.&52O.O descarga los contenidos de la
entana actual a la impresora como "ob de impresi'n de una pgina. @Robs de impresi'n de
multiples<pginas son posibles con NP,E$&5O y NPE52OB.
P5O61Q 0os controles nunca son impresos por NP.&52O.O... solamente el contenido de una
superficie de dibu"o de la entana es transferido.
Ver e"emplo de 8SE6%P8 y 8P.&52O.8 al final de esta secci'n.
%sted puede notar )ue su dibu"o aparece muc+o mayor o ms pe)ue*o @generalmente ms
pe)ue*oB en la pgina )ue en la pantalla. 0a ra('n es )ue fue ploteado en unidades de pi!el. Su
impresora probablemente tiene un diferente tama*o de pi!el )ue el de su pantalla. -ientras sea
posible utili(ar las funciones 36R0@B y F&2@B para determinar tama*os de pi!eles tanto para
impresora como pantalla, es muc+o ms fcil de dibu"ar simplemente de unidades absolutas.
El mnem'nico N2R1.5&6SO selecciona unidades de dibu"o. N2R1.%5&6SO@?B selecciona
pi!eles, )ue es lo )ue se asume por omisi'n. N2R1.%5&6SO@;B selecciona mil#simas de pulgada.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: CE
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
Q31%6E01Q 0os tems dibu"ados en unidades de pi!el no aparecern del mismo tama*o absoluto
cuando se imprimen. %tilice mil#simas de pulgada ;?3RA(91I5-@;1<< para la mayor parte de
aplicaciones impresas.
Vamos a limpiar la entana al color bacIground actual ;?C/EARA8@< y redibu"ar el crculo
utili(ando mil#simas de pulgada.
0032 PRINT (1)'CLEARBG'
0034 PRINT (1)'DRAWUNITS'(1)
0040 PRINT (1)'ARC'(1000,1000,300<

Esta e( estamos dibu"ando el crculo con mayores n9meros, desde unas unidades )ue a+ora son
muy pe)ue*as. Este crculo tiene un radio de tres d#cimos de una pulgada, y es ploteado en una
pulgada a lo largo de cada dimensi'n de la es)uina de la superficie de dibu"o.
P3%&212OQ -uc+as impresoras no pueden dibu"ar la pgina completa. 1s, la superficie dibu"ada
es situada en una direcci'n desde de la es)uina de la pgina. Si usted necesitara recuperar estas
cantidades de margen, usted puede utili(ar la funci'n 36R0@B.
Say muc+as, muc+as funciones ms para dibu"o. 0os mnem'nicos proeen apoyo para colores
ariables, modos de relleno, patrones de pluma, y montones de diferentes formas y modos de
dibu"o. 4ui(s el mnem'nico para dibu"o ms 9til es N&-1$EO, el cual permite plotear un bitmap
desde un arc+io .,-P. Pruebe el siguiente e"emplo7
0010 REM "Mostrar BMP's
0020 BEGIN
0030 PRINT 'CS',"Este programa muestra los archivos .BMP
del directorio que indique.",'LF',
"Dar directorio a revisar:",
0040 LET path$="c:\windows"; INPUTE 26,1,30,"_",path$;
IF path$="" THEN GOTO final
0050 LET a=POS(path$(LEN(path$))="/\");
IF a THEN LET path$=path$(1,a-1)
0060 OPEN (1,ERR=0030)path$; LET c=UNT
0070 REM
0080 ver_si_es_bmp:
0090 READ RECORD(1,END=final)fil$;
IF POS(".BMP"=CVS(fil$,4))=0 THEN GOTO ver_si_es_bmp
0100 OPEN (c)"X0"; PRINT (c)'WINDOW'(131,69,397,355,fil$,$$)
0110 PRINT (c)'IMAGE'(64,64,64,64,path$+"\"+fil$)
0120 PRINT (c)'SHOW'(0)
0130 WAIT 2; CLOSE (c)
0140 GOTO ver_si_es_bmp
0150 REM
0160 final:
0170 END
1d"unto un e"emplo del uso de 8PSE6%P8 y 8P.&52O.8 para imprimir una entana $%&.
0010 OPEN (1)"X0"
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: C5
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
0020 PRINT (1)'WINDOW'(50,50,300,200,"",$01$)
0030 PRINT (1)'TRACK'(0)
0040 PRINT (1)'DRAWUNITS'(1)
0050 PRINT (1)'WORLD'(0,0,8000,10540)
0060 PRINT (1)'VIRTUAL'(0,0,8000,10540)
0070 PRINT (1)'IMAGE'(0,0,8000,10450,"Logotipo.bmp",1)
0080 PRINT (1)'PSETUP'
0090 PRINT (1)'PWINDOW'
0100 END
E0e+*)*)o de SYS8&I FKG Botones ;e++-m)ent- (Tools Buttons"
En este e"ercicio, introducimos un nueo tipo de control llamado Mbot'n +erramientaM. 0os botones
+erramienta son muy utili(ados, pero tienen algunas diferencias muy importantes respecto a los
pus+ buttons7
,O6O5ES 2E P%0S1R
son un ob"eto intrnsico o de .indo/s
pueden recibir enfo)ue de teclado
tiene significaci'n especial cuando la naegaci'n de teclado es permitida.
,O6O5ES SERR1-&E561
son un control de +bito suministrado por ,1S&S
pueden erse me"or )ue los botones de pulsar
pueden mostrar un ttulo regular o una imagen de un bitmap
no pueden recibir enfo)ue de teclado
estn e!cluidos de la orden de naegaci'n de teclado
pueden operar normalmente o como un Mbot'n de conmutaci'nW
informa una gran cantidad de detalle en cada eento
son idealmente apropiados para uso en Mbarras de +erramientasW
Para aproec+arnos ms del bot'n +erramienta, por faor teclee en la ersi'n modificada del
reportero de eentos del E"ercicio fE. Si usted sal' el reportero original de eentos, la 9nica
diferencia con el original es )ue no estamos mostrando los eentos de moimiento de rat'n
@mscara con YFFFFFEFFYB, y una lnea E? )ue dice NtbuttonO en lugar de NbuttonO. 6ambi#n
usaremos &2 ;?; en lugar de &2 ;, desde a+ no +ay forma de usar un bot'n +erramienta para el
prop'sito estndar de )ue control &2 ; es supuesto a serir. 2e otra manera, eso es "ustamente el
reportero de eentos del E"ercicio fE.
0010 OPEN (1)X0
0020 PRINT (1)'SEMICHARS'
0030 PRINT (1)'WINDOW'(100,100,100,100,Reportero de Eventos,$03$,
0030:$FFFFFEFF$)
0040 PRINT (1)'TBUTTON'(101,10,10,50,15,OK,$$)
0050 DIM E$:TMPL(1)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: CA
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
0060 READ RECORD (1,SIZ=LEN(E$))E$
0070 PRINT E.CONTEXT,, E.CODE$, E.ID,, HTA(BIN(E.FLAGS,1)),
0070:E.X, E.Y
0080 GOTO 60
0o primero )ue usted a a notar al correr el programa es )ue el bot'n +erramienta mira y act9a
"ustamente como el regular bot'n de pulsar. O lo +aceX ,ien, conocemos ya )ue no se comporta de
la misma manera si la naegaci'n de teclado estuiera permitida, pero eso es algo muc+o ms
diferente.
&ntente +acer clicI en el bot'n +erramienta algunas pocas eces y mire el reporte de eentos. 0a
informaci'n de eentos realmente cambia en dependencia de `donde` usted +aga clicI, dentro del
bot'n. 3unto 9til esto sea depende de su aplicaci'n. -uc+o ms 9til es el +ec+o )ue el informe
tambi#n indica si el control y/o teclas s+ift estn oprimidas durante el clicI, y cul bot'n del rat'n
es oprimido.
19n ms interesante es el +ec+o )ue el bot'n +erramienta pueda ser +ec+o para operar como un
bot'n conmutador. Para +acer esto, interrumpa y termine el programa @+aga clicI en la entana de
la consola para enfocar, luego de 3trl<3, y digite E52B, y +aga este pe)ue*o cambio7
0040 PRINT (1)'TBUTTON'(101,10,10,50,15,OK,$0400$
3uando usted lo corra de nueo, a a notar )ue el bot'n +erramienta a+ora permanece aba"o de
donde usted +i(o clicI la primer e(, y cambia el estado con cada clicI. Si usted )uisiera el estado
inicial del bot'n )ue est aba"o, use "ustamente la bandera estndar Minicialmente c+e)ueadaM.
3omo usted e, un bot'n +erramienta cambiable se comporta muy parecido a una ca"a de c+e)ueo.
@Si usted )uisiera intentarlo, use "ustamente Y?E?EY en lugar de Y?E??Y. Estos medios son
Mcambiables e inicialmente c+e)ueadosMB.
-ientras el programa est corriendo, intente dar clicI en el bot'n algunas eces. %sted a a notar
)ue el estado del conmutador es informado "unto con todo lo dems en el parmetro de banderas. El
estado del conmutador @E.F01$SB tiene un alor Y;?Y. 2e otra manera, todo eento reportado es
id#ntico, independientemente de si el bot'n +erramienta es cambiable o no.
0os botones +erramienta pueden tambi#n sostener ^bitmaps_ en lugar de te!to ordinario. Para +acer
eso, solamente estable(ca el ttulo del control @ya sea inicialmente o en cual)uier momento
posteriorB a el te!to M,&6-1PKM, seguido por el nombre del pat+ de un ^bitmap_ @arc+io .,-PB.
P3%&212OQ 3uando especifi)ue el nombre del arc+io para un arc+io .,-P para mostrarlo en
un bot'n +erramienta, los directorios definidos dentro del PREF&U no son utili(ados para la
b9s)ueda.
Este es un e"emplo )ue traba"ar en las instalaciones de .indo/s ms estndar.
0041 WAIT 1
0042 PRINT (1)'TITLE'(101,"BITMAP=C:\Basis\VPRO5\HELP.BMP")
Si no traba"ara, usted a a er "ustamente el te!to anotado entre comillas como el ttulo dentro del
bot'n. $eneralmente esto ocurre si el pat+ es inlido. Si esto ocurriera, intente locali(ar el
arc+io .,-P en su sistema para suministrar as el pat+ correcto.
1+ora interrumpa el programa @+aciendo clicI fuera del conte!to y luego oprima 3trl<3B y e"ecute
los siguientes comandos de modo inmediato para interactuar con el bot'n +erramienta.
0043 WAIT 1
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: C[
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
0044 PRINT (1)'DISABLE'(101)
0045 WAIT 1
0046 PRINT (1)'ENABLE'(101)
5ote el color gris utili(ado para el te!to del ttulo o ^bitmap_ cuando el bot'n est desactiado.
1seg9rese de escoger ^bitmaps_ con suficiente contraste para )ue sean distinguibles cuando el
bot'n est# desactiado. 0os botones +erramienta pueden ser desactiados en cual)uier estado de
cambio, y el despliegue refle"ar a9n el estado actual. El bot'n puede ser conmutado mientras est#
desactiado, pero solamente desde una sentencia de programa, nunca por el usuario.
1)u +ay dos nueos mnem'nicos.
002= (AI5 1: PRI15 ;1<'CHECK';101<
002# (AI5 1: PRI15 ;1<'UNCHECK';101<
Estos operan el bot'n conmutador sin necesidad de usar el rat'n. 0os eentos no son generados en
este caso. Similarmente como NE51,0EO/O2&S1,0EO y NS&2EO/OSSO.O, estos pueden operar en
una lista de &2s. Estos pueden tambi#n ser usados con ca"as de c+e)ueo y botones de radio
@discutidos posteriormenteB, e tems de men9 c+e)ueables.
P5O61Q El mnem'nico ?C@EC1A siempre causar )ue un bot'n +erramienta sea cambiado a
estado Mc+e)ueadoW o MdeprimidoM, aun)ue el bot'n no sea cambiable. 5ormalmente usted no
)uerra utili(ar N3SE3VO e!cepto con botones +erramienta cambiables.
0049 WAIT 1; PRINT (1)'TITLE'(101,Hola)

El mnem'nico N6&60EO le permite cambiar el ttulo de bot'n en cual)uier momento. 2esde el ttulo
codifica cual)uier informaci'n del ,&6-1P, este puede tambi#n ser usado para cambiar el
,&6-1P utili(ado por este bot'n.
En la siguiente secci'n se muestra un programa en donde se donde se pone en prctica el uso de los
mnem'nicos aprendidos en esa secci'n.
E0e+*)*)o de SYS8&I FLG Cont+oles C;eHue-1les (C#EC/BO@ B $'DIOB&TTON"
En este e"ercicio, aprender a usar las ca)a( &e cBeC#eo y los !otone( &e ra&io. Estos son
similares en concepto y operaci'n, e!cepto )ue los botones de radio operan en grupos e!clusios
@c+e)ueando uno y des<c+e)ueando otros en el grupoB y operando las ca"as de c+e)ueo
independientemente.
Estaremos reutili(ando nuestro ie"o amigo el reportero de eentos, del e"ercicio E. Si a9n lo tiene
salado, solo necesitar re<entrar la lnea E?, del listado de aba"o.
0010 OPEN (1)X0
0020 PRINT (1)'SEMICHARS'
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: CD
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
0030 PRINT (1)'WINDOW'(100,100,100,100,Reportero de Eventos,$03$,
0030:$FFFFFEFF$)
0040 PRINT (1)'CHECKBOX'(101,10,10,50,15,Chequear,$$)
0050 DIM E$:TMPL(1)
0060 READ RECORD (1,SIZ=LEN(E$))E$
0070 PRINT E.CONTEXT, ,E.CODE$, E.ID, ,HTA(BIN(E.FLAGS,1)), E.X, E.Y
0080 IF E.CODE$<>"X" GOTO 60
3uando este programa es corrido crea por si mismo una ca"a de c+e)ueo en una entana. 6rate de
operar la ca"a de c+e)ueo y er los eentos )ue son generados. %sted obtiene unos eentos del tipo
NcO cuando una ca"a de c+e)ueo es c+e)ueada o des<c+e)ueada, y las banderas indican si estuo
c+e)ueada o des<c+e)ueada @?; y ??B.
Si usted )uisiera la ca"a de c+e)ueo inicialmente puede ser c+e)ueada, use el alor Y?EY en la
bandera @inicialmente c+e)ueadoB en la lista de parmetros Nc+ecIbo!O. El )ue sigue es un e"emplo
de como usted puede cambiar la lnea E? para obtener una ca"a de c+e)ueo )ue inicialmente est#
c+e)ueada @Y?EYB, y tambi#n inicialmente desactiada @Y?;YB.
0040 PRINT (1)'CHECKBOX'(101,10,10,50,15,Chequear,$05$)
-ientras el programa est corriendo, interr9mpalo @+aga clicI en la entana de la consola a
enfocar, y luego oprima 3trl<3B. 1+ora amos a interactuar con la ca"a de c+e)ueo directamente.
0041 WAIT 1; PRINT (1)'DISABLE'(101)
0042 WAIT 1; PRINT (1)'ENABLE'(101)
0as declaraciones anteriores +acen )ue el control se desactie, y actie nueamente. %sted a a er
el indicador de color gris cuando es desactiado. En este momento esos mnem'nicos ya le deberan
ser muy familiares.
0047 WAIT 1; PRINT (1)'CHECK'(101)
0048 WAIT 1; PRINT (1)'UNCHECK'(101)
Estos mnem'nicos pueden ser usados en cual)uier momento para cambiar el estado de los
controles c+e)ueables @bot'n +erramientas cambiable, ca"as de c+e)ueo, botones de radioB. Pueden
tambi#n ser usados en tems de men9 c+e)ueables. %na lista de &2s puede ser proista en la lista de
parmetros, al igual )ue NE51,0EO/O2&S1,0EO y NSSO.O/OS&2EO.
0049 WAIT 1; PRINT (1)'TITLE'(101,No chequear)
3omo siempre, el mnem'nico N6&60EO puede ser utili(ado para cambiar un ttulo de un control en
cual)uier momento. En el caso de una ca"a de c+e)ueo, el ttulo es el te!to de eti)ueta mostrado a
continuaci'n de la ca"a de c+e)ueo.
';o+- v-mos - e=9e+)ment-+ *on l- ,un*)2n CT$L ( "
1ntes de )ue pasemos a los ,otones de Radio, amos a aprender a usar la funci'n 36R0@B para
obtener el estado de una ca"a de c+e)ueo. %tili(ando los mismos mnem'nicos del programa )ue
tenemos cargado en memoria asegur#monos de )ue la ca"a de c+e)ueo est# +abilitada. Entonces
digite7
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: CG
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
PRINT DEC(CTRL(1,101,2))
Esto imprimir ya sea un ? o un ;, dependiendo esto del estado actual de la ca"a de c+e)ueo. &ntente
conmutaci'n con el rat'n, y obtenga la funci'n > de 36R0 nueamente para er el cambio.
Recuerde )ue la funci'n > de 36R0 es Mobtener alorM. 0a lnea de arriba permite obtener el estado
actual del bot'n, )ue normalmente solamente nos puede interesar si el bot'n es cambiable.
6rate de usar la funci'n > del 36R0 @como se muestra arribaB dos eces, intercambiando entre el
bot'n y el rat'n.
6ambi#n podr er )ue la funci'n > nos sire para recuperar el ttulo de un 6OO0 ,%66O5, el
cual, si lo )ue est e!+ibiendo es un ,&6-1P, el te!to del ttulo es retornado como se estableci',
con la sinta!is del ,&6-1PK.
PRINT CTRL(1,101,1)
P3%&212OQ En todos los casos, el alor por omisi'n para la funci'n 36R0 es > @Mobtener alorWB,
mientras )ue el alor por omisi'n para la funci'n 36R0 para los botones de pulsar es ; @Mobtener
te!toMB.
Para practicar un poco ms con el 36R0 y con los mnem'nicos y funciones aprendidos en este
captulo, podemos escribir el siguiente programa, el cual nos muestra un conte!to en el )ue aparece
un bot'n para indicar OV, dos ca"as para c+e)ueo y dos campos para mostrar n9meros. 3ada e(
)ue sea oprimido el bot'n OV se inicia un ciclo del ; al ;?, en el )ue an siendo mostrados los
n9meros pares o impares, seg9n lo +ayamos indicado en los botones de c+e)ueo.
0010 REM "Ejer"=a .p"iBn *e mostrar nCmeros pares)impares *el 1 al 10 ;1D1<
00&0 AE8I1 : .PE1 ;1<"X0"
0000 PRI15 ;1<'-EMIC7AR-'
0020 PRI15 ;1<'(I13.(';100!100!100!100!"PreEa "on Controles"!F00F!F,,,,,E,,F<
00G0 PRI15 ;1<'CHECKBOX';101!10!G!G0!1G!"Impares"!FF<: PRI15 ;1<'CHECK';101<
00%0 PRI15 ;1<'CHECKBOX';10&!10!&0!G0!10!"Pares"!FF<
00=0 PRI15 ;1<'5EX5';100!%G!#!1G!10!"D D D D"!FF<: REM "Ponga giones normales
00#0 PRI15 ;1<'5EX5';102!%G!&&!1G!10!"D D D D"!FF<
00H0 PRI15 ;1<'5EX5';10G!#!0#!#2!20!"/a i*ea es Ie "a*a +eJ Ie oprima .K se
00H0>genere n "i"lo *el 1 al 10! para mostrar los nCmeros Ie in*iIe arriEa
00H0>L"!FF<
0100 PRI15 ;1<'A955.1';1!&0!#0!G0!1G!".K"!FF<: REM "I3 *el Aoton .K es 1L
0110 3IM eF>5MP/;1<
01&0 REM
0100 leeMe+entos>
0120 REA3 REC.R3;1!-IZ=/E1;eF<<eF
01G0 PRI15 eL"onteNt!" "!eL"o*eF!eLi*!" "!75A;AI1;eLflags!1<<!eLN!eLy
01%0 REM
01=0 I, eL"o*eF="X" 57E1 PRI15 ;1<'3E-5R.4': -5.P
01#0 I, eL"o*eFOP""" 57E1 8.5. +erMsiMoQ
01H0 REM "-e nos reporta Ie sario a"ti+B na "aja *e "ReIeo! enton"es Ray
01H0>Ray Ie *esa"ti+ar la otra
0&00 PRI15 ;1<'UNCHECK';100DeLi*S100<: REM "3esa"ti+a C7ECKA.X 101 o 10&
0&10 PRI15 ;1<'5I5/E';10GDeLi*S100!"D D D D"<: REM "Afe"ta 5EX5 100 . 102
0&&0 8.5. leeMe+entos
0&00 REM
0&20 +erMsiMoQ>
0&G0 I, eL"o*eFOP"A" 57E1 8.5. leeMe+entos
0&%0 I, eLi*OP1 .R 3EC;CTRL;1!101!2<<S3EC;CTRL;1!10&!2<<=0 57E1 8.5. leeMe+ent
0&%0>os
0&=0 I, 3EC;CTRL;1!101!2<<=1 57E1 /E5 "aja=100!ini"io=1 E/-E /E5 "aja=102!ini"
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: E?
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
0&=0>io=&
0&#0 ,.R t=ini"io 5. 10 -5EP &: PRI15 ;1<'5I5/E';"aja!-5R;t>"0000"<<: (AI5 1:
0&#0>1EX5 t
0&H0 8.5. leeMe+entos
Ja en la realidad, el programa anterior )uedara me"or implementado si cambiramos los
83SE3V,OU8 por 8R12&O,%66O58, pero como a9n no los +emos estudiado, de"#moslo as. Este
cambio le )ueda de tarea para cuando aprenda a usarlos en lo )ue sigue de esta secci'n.
Para poder er ms los !otone( &e ra&io, necesitaremos cambiar el programa en dos modos.
@;B 5ecesitamos crear al menos dos ,otones de Radio, ya )ue operan siempre como un
con"unto, y
@>B 5ecesitaremos a*adir una lnea al programa para agrupar los botones despu#s de creados.
0as siguientes tres lneas cambiarn al reportero de eentos )ue +emos estado utili(ando para +acer
ese traba"o.
0040 PRINT (1)'RADIOBUTTON'(101,10,10,50,15,Opcin 1,$04$)
0041 PRINT (1)'RADIOBUTTON'(102,10,30,50,15,Opcin 2,$$)
0042 PRINT (1)'RADIOGROUP'(101,102)
0as primeras dos lneas ya deben serle familiares. 3ausan )ue nos sean colocados controles de
botones de radio, con alores ;?; y ;?> en sus &2. El Y?EY es la bandera de Minicialmente
c+e)ueadoM.
P5O61Q 5o es un re)uisito actiar un bot'n de radio inicialmente, pero es buena prctica de
programaci'n, ya )ue al usuario nunca se le debe permitir des<c+e)uear todos los botones.
0a lnea E> introduce el mnem'nico NR12&O$RO%PO. 3oge una lista de dos o ms controles de
&2s de botones de radio y los asigna a un grupo. 0os botones de radio no operarn +asta )ue sean
asignados a un grupo. %sted puede crear tantos grupos de botones de radio como usted guste en una
entana. 5unca asigne un mismo bot'n de radio a ms de un grupo.
1+ora amos a correr el programa y obserar el reporte de eentos. 3ada uno de los botones de
radio genera eentos del tipo NcO, indicando cul bot'n +a sido c+e)ueado. 5ing9n reporte de Mdes<
c+e)ueadoM ser generado para los botones de radio.
&nterrumpa el programa y trate de operar los botones de radio directamente con las siguientes
declaraciones de programa7
PRINT (1)'CHECK'(101)
PRINT (1)'CHECK'(102)
Obsere )ue al c+e)uear el bot'n de radio de un grupo, causa )ue todos los dems botones de radio
del grupo se des<c+e)ueen. Esta es la naturale(a de los botones de radio. El mnem'nico
N%53SE3VO no traba"a con los botones de radio.
Para er cual es el estado de un grupo de botones de radio, es necesario utili(ar la funci'n - de
36R0 @MObtener alorMB en cada uno de los botones en el grupo.
PRINT DEC(CTRL(1,101,2))
PRINT DEC(CTRL(1,102,2))
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: E;
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
PS%$ERE53&1Q 19n cuando los botones de radio y ca"as de c+e)ueo informen unos eentos del
tipo NcO cada e( )ue son operados, frecuentemente es ms oportuno esperar a )ue un bot'n OV sea
presionado, y entonces puedan ser ledos los botones con la funci'n > de 36R0, para determinar
cules estn c+e)ueados.
1+ora es un buen momento como para introducir el control $RO%P,OU, el cual es una ca"a )ue
agrupa controles para proeer al usuario una asociaci'n isual entre estos. 5o +ay reglas reales en
cuanto a su colocaci'n, solamente lineamientos generales.
1*ada la siguiente lnea al programa para agregar una ca"a de grupo alrededor los botones de radio.
0043 PRINT (1)'GROUPBOX'(103,5,0,80,80,Botones de Radio,$$)
Esto no cambiar el comportamiento del programa, solamente la apariencia. 0as ca"as de grupo
nunca generan eentos algunos.
P3%&212OQ 0as ca"as de grupo aparecen siempre detrs de otros controles, pero no son
transparentes. Obscurecern cuales)uier tem dibu"ado )ue se superponga en la entana.
P3%&212OQ Say tres modos en )ue los botones de radio pueden ser MagrupadosM, y esto es
importante para eitar confundirlos. 0a primera forma en )ue puedan ser agrupados es )ue sean
programados para operar como un con"unto. 0os botones de radio no traba"an +asta )ue sean
agrupados de esta manera. Esto puede ser +ec+o con los mnem'nicos NR12&O$RO%PO o por la
asignaci'n de los n9meros de &2 desde el interior del Editor de Recursos de ,1S&S. 0a segunda
forma en )ue los botones de radio puedan ser agrupados, es asignando n9meros de &2 consecutios
y encendiendo el atributo de la bandera MgroupW para todas ellos. Esta forma es solamente para
naegaci'n de teclado, y no afecta el modo en )ue operan. Esto simplemente causa )ue podamos
usar la tecla 6ab para tratar todo el grupo de ,otones de Radio @o ca"as de c+e)ueo, en cuanto a
esoB como un con"unto, en funci'n de naegaci'n. 0a tercer forma de MagruparM botones de radio es
isualmente, dibu"ando un control de ca"a de grupo alrededor a ellos. Esto no tiene efecto en la
operaci'n del programa y es solamente para beneficio del usuario. En la mayora de los programas,
los tres m#todos de agrupar son usados en acuerdo, pero es importante entender cules son
re)ueridos y cules no, y como aplicar cada m#todo.
1lgo )ue no se controla, como la ca"a de grupo, es el control de te!to esttico. Es creado con el
mnem'nico N6EU6O, y simplemente causa un mensa"e de te!to @el ttulo del controlB )ue aparece
en la ubicaci'n prescrita. &nt#ntelo adicionando la siguiente lnea al programa.
0044 PRINT (1)'TEXT'(104,10,90,50,15,Hola,$$)
El uso ms com9n de controles de te!to estticos es el eti)uetado para controles )ue no muestran
sus ttulos, como ca"as de listas, barras de despla(amiento, etc. Estos pueden ser utili(ados
libremente, pero usted debera ser consciente de )ue, como las ca"as de grupo, no son transparentes.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: E>
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
E0e+*)*)o de SYS8&I FMG Cont+oles de L)st-s
E!isten tres tipos de controles )ue permiten al usuario escoger tems de una lista. El ms bsico de
estos es el LISD /O8. Este es mostrado como una ca"a con una barra de despla(amiento ertical.
2entro de la ca"a tenemos arios tems de te!to, )ue pueden ser MseleccionadosM por el usuario.
2ependiendo del tipo de ca"a de lista, el usuario puede seleccionar solamente un tem, o alg9n
n9mero de tems, de la lista. 1 eces un clicI, y ms frecuentemente un doble clicI en un tem de la
lista, puede proocar una acci'n especial a tomar.
0os otros tipos de controles de lista son el LISD /UDDON y el LISD EDID. 1mbos son
mostrados como una ca"a de edici'n con un bot'n a continuaci'n de esta. Presionando el bot'n se
actia una lista, y seleccionar un tem en la lista causa su selecci'n para ser mostrado en la ca"a de
edici'n, y la lista se desactia. En el control de bot'n de lista, solamente selecciones de la lista
pueden ser +ec+as, mientras )ue el control de la lista de edici'n permite al usuario teclear una
entrada libremente en la ca"a de edici'n, as como para seleccionar un tem desde la lista.
Este es nuestro bien gastado programa reportero de eentos, con una nuea lnea E? y E;.
0010 OPEN (1)X0
0020 PRINT (1)'SEMICHARS'
0030 PRINT (1)'WINDOW'(100,100,100,100,Reportero de eventos,$03$,
0030:$FFFFFEFF$)
0040 PRINT (1)'LISTBOX'(101,10,10,80,80,,$$)
0041 PRINT (1)'LISTADD'(101,-1,John,Paul,George,Ringo)
0050 DIM E$:TMPL(1)
0060 READ RECORD (1,SIZ=LEN(E$))E$
0070 PRINT E.CONTEXT, ,E.CODE$, E.ID, ,HTA(BIN(E.FLAGS,1)), E.X, E.Y
0080 IF E.CODE$<>"X" GOTO 60
6rate de correr el programa y e!perimente con la ca"a de lista. 5ote )ue la barra de despla(amiento
no opera por)ue a9n no tenemos suficientes tems en la lista. 0a barra de despla(amiento se
actiar automticamente por si misma cuando suficientes tems sean a*adidos. El tipo de eentos
NlO solamente indica )ue un clicI o doble<clicI fue +ec+o en un tem de la lista. Para determinar la
selecci'n +ec+a nueamente +ay )ue usar 36R0, como se muestra ms adelante. $eneralmente,
solamente un tem puede ser seleccionado a la e(.
El nueo mnem'nico NLISD/O8O tiene la sinta!is )ue ya nos es familiar para crear un control. El
ttulo es especificado como un string aco en este caso debido a )ue el ttulo no tiene importancia.
3a"as de lista nunca muestran un ttulo. El mnem'nico N0&S6122O puede ser usado para a*adir
detalles a una lista. 5ueos tems son a*adidos antes del ndice de detalle especificado en el
segundo parmetro. Se necesita un <; como segundo parmetro para a*adir los nueos detalles al
final de la lista. E!iste una Mforma largaM para el mnem'nico N0&S6122O, para eitar colocar lotes
de tems en el parmetro de lista del mnem'nico @)ue son de tama*o limitadoB. Este es un e"emplo
de la forma larga7
0041 PRINT (1)'LISTADD'(101,-1,4),
0042 WRITE (1)John,Paul,George,Ringo
5o olide la coma al final de la lnea E;. Esta es importante debido a )ue la forma larga de
N0&S6122O prepara el canal para recibir un n9mero de tems @E en este casoB escritos luego
directamente al canal. Estos tems tienen cada uno un NlinefeedO como terminador de campo. Si la
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: EC
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
lnea E; no es finali(ada con una coma, un NlinefeedO es eniado al canal inmediatamente despu#s
de la sentencia N0&S6122O, lo )ue causar )ue los primeros E tems de la lista sean blancos.
PS%$ERE53&1Q Obsere tambi#n en lnea E> el uso de .R&6E en lugar del PR&56. El .R&6E
inserta un NlinefeedO despu#s de cada tem escrito, )ue "ustamente es lo )u# deseamos en este caso.
%tili(aremos de nueo este truco con controles de barras de despla(amiento, y nueamente con
men9s, posteriormente.
1+ora amos a cambiar el programa de modo )ue la ca"a de lista permitir selecciones m9ltiples.
Esto es fcil... solamente debemos cambiar la lnea E? agregando la bandera para Mselecciones
m9ltiplesM.
0040 PRINT (1)'LISTBOX'(101,10,10,80,80,"",$0400$)
3'rralo de nueo, y er )ue con 3trl<clicI se seleccionarn y des<seleccionarn tems
indiiduales, y tambi#n er )ue S+if<clicI puede ser usado para seleccionar rangos.
En este e"emplo, ning9n tem es seleccionado inicialmente, pero podemos lograrlo con el
mnem'nico N0&S6SE0O, el cual selecciona algunos tems en una lista y automticamente des<
selecciona todos los otros. Vamos a a*adirlo al programa.
0045 PRINT (1)'LISTSEL'(101,1)

0a lnea anterior proocar )ue el tem MPaulW @segundoB sea seleccionado. 0a lista de ndices est
basada en cero.
Say un grupo adicional de otros mnem'nicos especiales para manipulaci'n de los controles de
tipos de lista. 3orra el programa e interr9mpalo para e!perimentar con estos en modo inmediato.
Recuerde )ue para oler a isuali(ar la entana grfica puede dar a1ltb]a6abb.
PRINT (1)'LISTDEL'(101,0)
Esto elimina un tem de la lista. El ndice ? es el )ue corresponde al primer tem en la lista. %sted
puede e!perimentar eliminando otros tems.
PRINT (1)'LISTUNSEL'(101,1)
El mnem'nico N0&S6%5SE0O des<selecciona algunos tems de la lista. En el e"emplo anterior, el
segundo tem de la lista no es seleccionado. &nt#ntelo seleccionando con el rat'n, y luego des<
selecci'nelo con esta declaraci'n de programa.
PRINT (1)'LISTMSEL'(101,0)

El mnem'nico N0&S6-SE0O es para ser usado con ca"as de lista )ue permitan selecciones
m9ltiples. N0&S6SE0O, como usted recordar, selecciona un tem y des<selecciona todos los dems.
N0&S6-SE0O le permite seleccionar un tem y le de"a los )ue ya estuieran seleccionados tambi#n
actios. 5aturalmente, estos solo traba"an con ca"as de lista )ue permiten selecciones m9ltiples.
Este e"emplo selecciona el primer tem en una lista, de"ando todos los dems tems solos.
PRINT (1)'LISTADD'(101,0,Peter)

%sted puede a*adir tems a una lista )ue ya contenga algunos. Este e"emplo a*ade MPeterW como el
nueo primer tem en la lista, corriendo los otros tems +acia aba"o un espacio.
PRINT (1)'LISTCLR'(101)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: EE
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
Para borrar todos los tems de una lista, use N0&S630RO.
1 como lo detallamos en la Secci'n C, la funci'n 36R0 puede ser utili(ada para obtener
informaci'n de un control de tipo de lista en cual)uier momento. Recordemos )ue la funci'n
36R0 ; @MObtener 6e!toMB recupera el te!to de todos los tems seleccionados en la lista. &ntente
seleccionar uno o ms tems y emitir este comando.
PRINT CTRL(1,101,1)

%sted er el te!to de todos los tems seleccionados en la lista. %n caracter ^linefeed_ es a*adido
despu#s de cada uno e!cepto del 9ltimo tem listado. Para er el te!to de absolutamente todos los
detalles en la lista @seleccionados o noB, use la funci'n de 36R0 [ @ MObtener 6odo el 6e!toMB. En
este caso, un caracter de ^linefeed_ es a*adido despu#s de a todos los tems, incluyendo el 9ltimo.
PRINT CTRL(1,101,7)
1 eces es ms fcil operar con el ndice de tem seleccionado@sB )ue con las eti)uetas @labelsB. 0a
funci'n de 36R0 > @MObtener ValorMB nos da un c'digo<binario de dos bytes por cada tem
seleccionado. Estos estn concatenados, de modo )ue la longitud del string es siempre dos eces la
cantidad de tems seleccionados. Para obtener cada uno de los ndices en el string debemos utili(ar
la funci'n 2E3.
A$=CTRL(1,101,2)

0a funci'n de 36R0 C @MObtener 3uentaMB nos retorna dos alores binarios de dos bytes
consecutios. El primero nos informa la cantidad de tems seleccionados. El segundo nos informa
del n9mero total de tems en la lista.
A$=CTRL(1,101,3) 2E3@1Y@;,>BB K 3antidad registros seleccionados
2E3@1Y@C,>BB K 3antidad de registros en la lista.
Sasta el momento solamente +emos considerado el tipo de control de una ca"a de lista.
3ambi#monos a+ora al NLISD/UDDONO, para lo cual amos a cambiar el programa de modo )ue
la lnea E? nos genere un control de bot'n de lista, como sigue.
0040 PRINT (1)'LISTBUTTON'(101,10,10,80,80,,$$)
El bot'n de lista no puede permitir selecciones m9ltiples, de modo )ue tuimos )ue eliminarle la
bandera. Por lo dems, el programa es id#ntico. 6rate de correrlo y obsere la diferencia.
El mnem'nico N0&S6SE0O en la lnea E5 a9n traba"a, as )ue MPaulW aparece como la selecci'n
inicial. 5ormalmente, el control del bot'n de lista ocupa solamente la porci'n principal de su
rectngulo unificador, pero el tama*o puede ser ms grande @como en este e"emplo tiene D? ! D?
semicaracteresB para permitir tener espacio para la lista cuando este es actiado. 0istas de tems de
doble<clicI no son posibles, pero selecciones son todaa reportadas como eentos tipo MlW @eleB.
Es por eso )ue, un bot'n de lista opera id#nticamente a una ca"a de lista. &nterrumpa el programa e
intente practicar con algunos de los mnem'nicos )ue io anteriormente, como N0&S6SE0O,
N0&S6122O, N0&S62E0O, y N0&S630RO. 0a funci'n 36R0 traba"a igual de bien, aun cuando la
cantidad de tems seleccionados siempre sea ? o ;.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: E5
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
El control del mnem'nico NLISDEDIDO muestra algo parecido al N0&S6,%66O5O, pero se
comporta de otro modo, ya )ue una entrada de te!to de formato libre puede ser +ec+a. En muc+os
formas, el control del N0&S6E2&6O es un cruce entre una ca"a de edici'n y un bot'n de lista. El
programa puede poblar la lista, pero solamente el usuario puede tomar tems de la lista y usarlos
para poblar la ca"a de edici'n. El programa nunca podr establecer una selecci'n actual, pero puede
en su lugar for(ar te!to en una porci'n de la ca"a de edici'n del control utili(ando el mnem'nico
N6&60EO.
Por lo tanto tenemos )ue +acer dos cambios a nuestro programa. Primero, tenemos )ue crear una
lista de edici'n en lugar de un bot'n de lista. Eso es fcil @cambie la lnea E?B. Segundo, no
podemos utili(ar N0&S6SE0O ya ms @eliminar lnea E5B. Para establecer el contenido inicial del
control, amos a especificar "ustamente un ttulo cuando creamos el ob"eto. 0a otra opci'n sera
utili(ar el mnem'nico N6&60EO.
0040 PRINT (1)'LISTEDIT'(101,10,10,80,80,Paul,$$)
DELETE 45
3uando usted corra el programa, usted a a notar )ue traba"a muy igualmente a la forma en )ue
di"imos, con la e!cepci'n )ue usted puede a+ora digitar cual)uier cosa en el control. 0os eentos
del tipo NlO @eleB no son reportados por ms tiempo, ya )ue la operaci'n de la lista es solamente una
manera de como los contenidos de control pueden ser cambiados. 0os eentos tipo NfO @enfo)ue del
control de edici'nB y NeO @modificaci'n del control de edici'nB son reportados en lugar de eso,
"ustamente como estos son reportados para una ca"a de edici'n ordinaria.
0os mnem'nicos para manipular listas como @N0&S6122O, N0&S630RO, N0&S62E0OB a9n traba"an,
pero algunos mnem'nicos para e"ecutar selecciones @N0&S6SE0O, N0&S6-SE0O, N0&S6%5SE0OB no
traba"arn. Para cambiar el estado del control desde el interior de un programa, usted tiene )ue
utili(ar el mnem'nico N6&60EO.
Similarmente, las funciones de 36R0 se comportan igualmente al modo en )ue traba"an las ca"as
de edici'n. 0a funci'n de 36R0 ; @MObtener 6e!toMB lee el te!to desde el control. Si se necesitara
)ue un dato actual sea mostrado en la lista, el programa tendr )ue +acer esa determinaci'n por s
mismo.
&nterrumpa el programa y mecanografe lo siguiente.
PRINT (1)'TITLE'(101,Peter)
Podr notar )ue a9n cuando MPeterW no est en la lista, se puede poner en la ca"a, ya sea por acci'n
del programador o del usuario.
PRINT CTRL(1,101,1)
0a funci'n de 36R0 ; @MObtener 6e!toMB muestra el te!to actual en el control. 6rate de cambiar
nueamente el contenido del control con el rat'n, y obtenga el alor de 36R0 de nueo. %sted
puede er )ue siempre est actuali(ado.
0os siguientes tres programas son para poner en prctica el aprendi(a"e de todo lo aprendido en
esta secci'n. El primero abre un conte!to con dos entanas o listas de nombres, en donde la idea es
marcar nombres en cual)uiera de las listas y poder pasarlos a la otra, al oprimir el bot'n llamado
P1S1R.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: EA
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
0001 REM "Ejerc8a Practica pasando tems entre 2 listas de un contexto
0010 OPEN (1)"X0"
0020 PRINT (1)'SEMICHARS'
0030 PRINT (1)'WINDOW'(60,100,200,120,"Cantantes",$03$,$FFFFFEFF$)
0040 REM
0050 PRINT (1)'LISTBOX'(101,10,10,80,80,"",$0400$); REM Lista izquierda
0060 PRINT (1)'LISTADD'(101,-1,"John","Paul","George","Ringo","Madonna",
0060:"M.Jackson","Sting","Pink Floyd","Aaaaa","Bbbbbb","Cccccc")
0070 REM
0080 PRINT (1)'LISTBOX'(102,110,10,80,80,"",$0400$); REM Lista derecha
0090 PRINT (1)'LISTADD'(102,-1,"Maria","Jose","Miguel","Angel","Pablo")
0100 PRINT (1)'TEXT'(105,10,110,180,10,"La idea es marcar y pasar tems
0100:de una ventana a otra.",$$)
0110 REM
0120 PRINT (1)'BUTTON'(1,88,90,25,15,"Pasar",$$); REM "Define botn que
0120:servir para indicar trasiego de tems de una ventana hacia la otra
0130 DIM e$:TMPL(1)
0135 REM
0140 eventos:
0150 READ RECORD(1,SIZ=LEN(e$))e$
0160 PRINT e.context," ",e.code$,e.id," ",HTA(BIN(e.flags,1)),e.x,e.y
0170 IF e.code$="X" THEN PRINT (1)'DESTROY'; STOP
0180 IF e.code$="B" THEN GOTO pasar
0190 REM
0200 REM "Si hubo actividad en lista Izq. Des-selecciona los de la Der.
0210 IF e.id<>101 THEN GOTO 0250
0220 LET a$=CTRL(1,101,1),radio=DEC(CTRL(1,101,2)); PRINT a$,radio
0230 PRINT (1)'LISTUNSEL'(102,-1); GOTO eventos
0240 REM
0250 REM "Si hubo actividad en lista Der. Des-selecciona los de la Izq.
0260 IF e.id<>102 THEN GOTO eventos
0270 LET a$=CTRL(1,102,1),radio=DEC(CTRL(1,102,2)); PRINT a$,radio
0280 PRINT (1)'LISTUNSEL'(101,-1); GOTO eventos
0290 REM
0300 pasar:
0310 LET ven=101; REM "Detectar si hubo tems marcados
0320 LET ven$=CTRL(1,ven,2); IF ven$="" THEN IF ven=101 THEN LET
0320:ven=ven+1; GOTO 0320 ELSE GOTO eventos
0330 LET a$=CTRL(1,ven,3); PRINT (1)'LISTADD'(203-ven,-1,DEC(a$(1,2))),
0330:CTRL(1,ven,1); REM "Agrega tems seleccionados en la otra ventana
0340 FOR a=LEN(ven$)-1 TO 1 STEP -2
0350 PRINT (1)'LISTDEL'(ven,DEC(ven$(a,2))); REM "Elimina tems seleccio
0350:nados en lista original
0360 NEXT a
0370 GOTO eventos
El siguiente programa es una ariaci'n del anterior. 0o )ue tiene diferente es )ue en lugar de un
conte!to nos muestra tres, en donde se permite por aparte para cada uno, poder +acer la misma
migraci'n de nombres del e"emplo inicial. Podr obserar )ue se pone en uso un nueo mnem'nico
llamado 83O56EU68, del cual eremos dos funciones7 una para definir un 3O56EU6O o entana
y la otra, para naegar o migrar de un 3O56EU6O +acia otro.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: E[
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
0001 REM "Ejerc8b Prctica controlando dos contextos
0010 OPEN (1)"X0"
0020 PRINT (1)'SEMICHARS'
0030 FOR ven=0 TO 2
0040 IF ven=0 THEN PRINT (1)'WINDOW'(90,32,190,110,"Cantantes",$03$,
$FFFFFEFF$)
0050 IF ven=1 THEN PRINT (1)'CONTEXT'(1),'WINDOW'(5,160,190,110,"Fut
bolistas",$03$,$FFFFFEFF$)
0060 IF ven=2 THEN PRINT (1)'CONTEXT'(2),'WINDOW'(202,160,190,110,"O
cupaciones",$03$,$FFFFFEFF$)
0065 REM
0070 REM "Define objetos inmediatamente despus de haber definido cada
0070:CONTEXTO
0080 PRINT (1)'BUTTON'(1,82,90,25,15,"Pasar",$$)
0090 PRINT (1)'LISTBOX'(101,10,10,80,80,"",$0400$)
0100 PRINT (1)'LISTBOX'(102,100,10,80,80,"",$0400$)
0110 REM
0120 ON ven GOTO cant,futb,ocup
0122 REM
0128 cant: REM "Define y carga lista de Cantantes
0130 PRINT (1)'LISTADD'(101,-1,"John","Paul","George","Ringo","Madonna",
"M.Jackson","Sting","Pink Floyd","Aaaaa","Bbbbbb","Cccccc")
0140 PRINT (1)'LISTADD'(102,-1,"Maria","Jose","Miguel","Angel","Pablo")
0145 GOTO 0240
0150 REM
0160 futb: REM "Define y carga lista de Futbolistas
0170 PRINT (1)'LISTADD'(101,-1,"Pele","Maradona","El Kaiser","Luis Gar
cia","Reinaldo","Teofilo Cubillas")
0180 PRINT (1)'LISTADD'(102,-1,"Gabelo","Ronald Gomez","Wilmer Lopez",
"Mauricio Montero","Rolando Fonseca")
0190 GOTO 0240
0200 REM
0210 ocup: REM "Define y carga lista de Ocupaciones
0220 PRINT (1)'LISTADD'(101,-1,"Mecanico","Bombero","Fontanero","Ciru
jano","Abogado","Chofer","Guarda")
0230 PRINT (1)'LISTADD'(102,-1,"Secretaria","Doctora","Miscelanea",
"Misionera","Visitadora Social","Maestra","Microbiologa","Super
visora")
0240 NEXT ven; DIM e$:TMPL(1)
0250 REM
0260 main_loop: REM "Obtiene y muestra eventos causados por el usuario
0270 READ RECORD(1,SIZ=LEN(e$))e$
0280 PRINT e.context," ",e.code$,e.id," ",HTA(BIN(e.flags,1)), e.x, e.y
0290 IF e.code$="X" THEN PRINT (1)'DESTROY'; STOP
0295 PRINT (1)'CONTEXT'(e.context); REM "Se posiciona en CONTEXTO activa
0295:por el usuario
0300 IF e.code$="B" THEN GOTO pasar
0310 REM
0320 REM "Ctrl actividad en lista de la izquierda (ID=101)
0330 IF e.id<>101 THEN GOTO 0370
0340 LET a$=CTRL(1,101,1),radio=DEC(CTRL(1,101,2)); PRINT a$,radio
0350 PRINT (1)'LISTUNSEL'(102,-1); GOTO main_loop
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ED
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
0360 REM
0370 REM "Ctrl actividad en lista de la derecha (ID=102)
0380 IF e.id<>102 THEN GOTO main_loop
0390 LET a$=CTRL(1,102,1),radio=DEC(CTRL(1,102,2)); PRINT a$,radio
0400 PRINT (1)'LISTUNSEL'(101,-1); GOTO main_loop
0410 REM
0420 pasar:
0430 LET ven=101
0440 LET ven$=CTRL(1,ven,2); IF ven$="" THEN IF ven=101 THEN LET
ven=ven+1; GOTO 0440 ELSE GOTO main_loop
0450 LET a$=CTRL(1,ven,3); PRINT (1)'LISTADD'(203-ven,-1,DEC(a$(1,2))),
CTRL(1,ven,1)
0460 FOR a=LEN(ven$)-1 TO 1 STEP -2
0470 PRINT (1)'LISTDEL'(ven,DEC(ven$(a,2)))
0480 NEXT a
0490 GOTO main_loop
El 9ltimo e"emplo de esta secci'n nos uele a mostrar los mismos tres conte!tos del programa
anterior, con la diferencia de )ue a+ora permitir +acer el trasiego de nombres dentro del mismo
conte!to, o bien, desde un determinado conte!to +acia cual)uiera de los dems.
0001 REM "Ejerc8c Practica controlando tres contextos
0010 OPEN (1)"X0"
0020 PRINT (1)'SEMICHARS'
0030 FOR ven=0 TO 2
0040 IF ven=0 THEN PRINT (1)'WINDOW'(90,32,190,110,"Cantantes",$03$,$FFFFFEFF$
0040:)
0050 IF ven=1 THEN PRINT (1)'CONTEXT'(1),'WINDOW'(5,160,190,110,"Futbolistas",
0050:$03$,$FFFFFEFF$)
0060 IF ven=2 THEN PRINT (1)'CONTEXT'(2),'WINDOW'(202,160,190,110,"Ocupaciones
0060:",$03$,$FFFFFEFF$)
0070 REM
0080 PRINT (1)'BUTTON'(1,82,90,25,15,"Pasar",$$)
0090 PRINT (1)'LISTBOX'(101,10,10,80,80,"",$0400$)
0100 PRINT (1)'LISTBOX'(102,100,10,80,80,"",$0400$)
0110 REM
0120 ON ven GOTO cant,futb,ocup
0122 REM
0128 cant:
0130 PRINT (1)'LISTADD'(101,-1,"John","Paul","George","Ringo","Madonna","M.Jac
0130:kson","Sting","Pink Floyd","Aaaaa","Bbbbbb","Cccccc","Dddddd")
0140 PRINT (1)'LISTADD'(102,-1,"Maria","Jose","Miguel","Angel","Pablo")
0145 GOTO 0240
0150 REM
0160 futb:
0170 PRINT (1)'LISTADD'(101,-1,"Pele","Maradona","El Kaiser","Luis Garcia","Re
0170:inaldo","Teofilo Cubillas")
0180 PRINT (1)'LISTADD'(102,-1,"Gabelo","Ronald Gomez","Wilmer Lopez","Maurici
0180:o Montero","Rolando Fonseca")
0190 GOTO 0240
0200 REM
0210 ocup:
0220 PRINT (1)'LISTADD'(101,-1,"Mecanico","Bombero","Fontanero","Cirujano","Ab
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: EG
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
0220:ogado","Chofer","Guarda")
0230 PRINT (1)'LISTADD'(102,-1,"Secretaria","Doctora","Miscelanea","Misionera"
0230:,"Visitadora Social","Maestra","Microbiologa","Supervisora")
0240 NEXT ven
0250 REM
0260 main_loop: DIM e$:TMPL(1)
0270 READ RECORD(1,SIZ=LEN(e$))e$
0280 PRINT e.context," ",e.code$,e.id," ",HTA(BIN(e.flags,1)),e.x,e.y
0290 IF e.code$="X" THEN PRINT (1)'DESTROY'; STOP
0295 LET context_act=e.context; PRINT (1)'CONTEXT'(e.context)
0300 IF e.code$="B" THEN GOTO pasar
0310 REM
0320 REM "Ctrl actividad en lista de la izquierda (id=101)
0330 IF e.id<>101 THEN GOTO 0370
0340 LET a$=CTRL(1,101,1),radio=DEC(CTRL(1,101,2)); PRINT a$,radio
0350 FOR ven=0 TO 2; PRINT (1)'CONTEXT'(ven); PRINT (1)'LISTUNSEL'(102,-1); IF
0350: context_act<>ven THEN PRINT (1)'LISTUNSEL'(101,-1)
0355 NEXT ven; GOTO main_loop
0360 REM
0370 REM "Ctrl actividad en lista de la derecha (id=102)
0380 IF e.id<>102 THEN GOTO main_loop
0390 LET a$=CTRL(1,102,1),radio=DEC(CTRL(1,102,2)); PRINT a$,radio
0400 FOR ven=0 TO 2; PRINT (1)'CONTEXT'(ven); PRINT (1)'LISTUNSEL'(101,-1); IF
0400: context_act<>ven THEN PRINT (1)'LISTUNSEL'(102,-1)
0405 NEXT ven; GOTO main_loop
0410 REM
0420 pasar:
0425 FOR context_fte=0 TO 2
0427 PRINT (1)'CONTEXT'(context_fte)
0430 LET ven=101
0435 REM "Obtiene indice de tems seleccionados
0440 LET ven$=CTRL(1,ven,2); IF ven$="" THEN IF ven=101 THEN LET ven=ven+1; GO
0440:TO 0440 ELSE GOTO 0445
0442 EXITTO 0448
0445 NEXT context_fte; GOTO main_loop
0447 REM
0448 PRINT (1)'CONTEXT'(context_act)
0450 LET a$=CTRL(1,ven,3,context_fte); PRINT (1)'LISTADD'(203-ven,-1,DEC(a$(1,
0450:2))),CTRL(1,ven,1,context_fte)
0455 PRINT (1)'CONTEXT'(context_fte)
0460 FOR a=LEN(ven$)-1 TO 1 STEP -2
0470 PRINT (1)'LISTDEL'(ven,DEC(ven$(a,2)))
0480 NEXT a
0490 GOTO main_loop
3uando la cantidad de tems a ser cargados en un 0&S6,OU, 0&S6E2&6, 0&S6,%66O5, o en un
$R&2 es muc+a, ocurre un cierto parpadeo en el ob"eto )ue resulta un poco molesto a la ista. Si le
interesa +acer desaparecer el parpadeo, tiene )ue +acer uso de los mnem'nicos LISDSUSPEND y
LISDRESU7E Se coloca el primero e!actamente antes de iniciar la carga de los tems y el
segundo al finali(ar la carga.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 5?
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
E0e+*)*)o de SYS8&I FNG Cont+oles de 1-++- de des9l-O-m)ento (S*+oll B-+s"
En e"ercicios preios, +emos istos como las barras de control pueden serir como una parte
integral de otro control @e"7 ca"as de listaB, y como pe)ue*as decoraciones de entana @er la parte
oculta de una superficie dibu"adaB. 1+ora consideraremos el uso directo de barras de
despla(amiento como un control 9nico.
1ntes de )ue pueda ser usada, una barra de despla(amiento tiene )ue ser asignada a un rango y una
proporci'n. El rango especifica el anc+o de la pista de scroll. 0a proporci'n especifica una fracci'n
entera del anc+o de la pista e indica cunto se desli(ar parte del controlB. El rango Mreasigna un
espacioM en la pista del scroll, seme"ante a la proporci'n )ue se coge del rango total. Por e"emplo, si
el rango a desde ; al ;? y la proporci'n es de C, entonces la barra de despla(amiento puede tener [
posiciones7 del ; al [. Para tener una proporci'n de C y ;? posibles posiciones, sera necesario tener
un rango con C alores mas en el borde superior7 ; +asta ;C.
P3%&212OQ El rango del scroll primeramente tiene )ue ser establecido, y luego la proporci'n.
El siguiente programa es el reporteador de eentos ya conocido, con nueas lneas7 E?, E; y E>.
0010 OPEN (1)X0
0020 PRINT (1)'SEMICHARS'
0030 PRINT (1)'WINDOW'(100,100,100,100,Reportador de Eventos,$03$,
0030:$FFFFFEFF$)
0040 PRINT (1)'HSCROLL'(101,10,10,80,10,,$$)
0041 PRINT (1)'SCROLLRANGE'(101,1,13); REM Define inicio y final de la
0041:barra.
0042 PRINT (1)'SCROLLPROP'(101,3); REM El 3 indica el STEP.
0050 DIM E$:TMPL(1)
0060 READ RECORD (1,SIZ=LEN(E$))E$
0070 PRINT E.CONTEXT, ,E.CODE$, E.ID, ,HTA(BIN(E.FLAGS,1)), E.X, E.Y
0080 IF E.CODE$<>"X"GOTO 60
3orra el programa y obsere el comportamiento. El tipo de eento NpO es reportado siempre
)ue la barra de despla(amiento es reposicionada. El campo .U retorna la nuea posici'n.
1rrastrando el pe)ue*o cuadro causa el reposicionamiento directo. Saciendo clicI en las flec+as
causa el moimiento de una unidad. Saciendo clicI en la pista a continuaci'n del cuadrito causa
)ue el cuadrito pase a Mpgina arribaM o Mpgina aba"oM, lo )ue significa )ue se muee por la
cantidad proporcional. ;? posiciones son disponibles, pero desde la proporci'n tiene C, un rango
desde ; +asta ;C es re)uerido.
P5O61Q 0os lmites del rango de scroll pueden ser cual)uier alor desde el <C>[AD al ]C>[A[.
&nterrumpa el programa y emita este mnem'nico especial.
PRINT (1)'SCROLLPOS'(101,4)
5oten )ue la barra de despla(amiento salta inmediatamente a la posici'n E. 1+ora muea la barra
de despla(amiento con el rat'n y lea su posici'n con la funci'n de 36R0 > @MObtener ValorMB.
PRINT DEC(CTRL(1,101,2))
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 5;
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
El parmetro YY de la lnea E? podra ser sustituido por7
Y????Y para E51,0Ear la entana.
Y???;Y para 2&S1,0Ear la entana.
Y??;?Y inicialmente sea inisible.
El mnem'nico NVS3RO00O puede ser usado en el lugar de NSS3RO00O para crear una barra de
despla(amiento ertical. 2e otra manera, opera e!actamente igual. Saga la siguiente sustituci'n en
la lnea E?.
0040 PRINT (1)'VSCROLL'(101,10,10,10,80,,$$)
E0e+*)*)o de SYS8&I F3PG Cont+oles de Ed)*)2n mult)lne-
Para edici'n de te!to ms complicada, cuando una simple ca"a de edici'n no lo +ace, Visual PRO/5
proee el control de edici'n multilnea. El control de edici'n multilnea permite la edici'n de una o
ms lneas de te!to @llam#moslos MprrafosMB, cada uno de los cuales pueden ocupar una o ms
lneas fsicas, cada una +asta un m!imo de >5A caracteres. El control puede tener un borde
opcional, opcionales barras de despla(amiento, y pueden ser usados con cual)uier fuente.
Para e!perimentar con el control de edici'n multilnea, amos a utili(ar el programa reporteador de
eentos de nueo. Solamente la lnea E? es nuea. 4uite la E; y la E>.
0010 OPEN (1)EX0E
0020 PRINT (1)'SEMICHARS'
0030 PRINT (1)'WINDOW'(100,100,100,100,EReportador de EventosE,$03$,
0030:$FFFFFEFF$)
0040 PRINT (1)'TXEDIT'(101,10,10,80,80,EE,$10$)
0050 DIM E$:TMPL(1)
0060 READ RECORD (1,SIZ=LEN(E$))E$
0070 PRINT E.CONTEXT,E E,E.CODE$,E.ID,E E,HTA(BIN(E.FLAGS,1)), E.X, E.Y
0080 GOTO 60
El parmetro de ttulo en la lnea E? esta aco, pero si alguno es proedo, ser insertado como el
primer prrafo de te!to. 0a bandera Y;?Y genera un borde alrededor del control. Esto ayudar a )ue
usted ea donde estn los lmites.
1seg9rese de gastar alg9n tiempo e!perimentando con esto. 5ote )ue cuando el rat'n se muee
sobre el control, este se conierte como una raya ertical para la entrada de te!to. Si +ace clicI con
el rat'n en el control, aparece un Msigno de intercalaci'nM )ue centellea, mostrando donde se
proceder con la entrada de te!to. %sted puede entonces comen(ar a mecanografiar y a a er )ue
el control informa inicialmente una ganancia de foco @NfOB, y con cada tecla )ue se oprima,
reportar un cambio @NeOB.
Si usted entrara lneas largas, el scroll de la ca"a funcionar automticamente, y podr entrar tantas
lneas como desee. 0a ca"a puede ser scroleada con las teclas de flec+a, pgina arriba, pgina aba"o,
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 5>
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
inicio y final, o arrastrando el rat'n. 3on el rat'n usted puede arrastrar fuera una selecci'n de te!to,
y la elimina o digita sobre el )ue ya e!iste. %sted puede tambi#n utili(ar el teclado para las
funciones estndar de .indo/s7 g3 @copiarB gU @cortarB y gV @pegarB. Posteriormente, amos a er
como enganc+ar un men9 de comandos sobre el panel de control.
2os adiciones muy 9tiles al control son la capacidad de arrollar palabras y barras de
despla(amiento. Vamos a a*adir ambos.
PS%$ERE53&1Q Si la opci'n de arrollar palabras estuiera encendida, no +ay necesidad de definir
una barra de despla(amiento +ori(ontal. El te!to no se saldr del borde.
0040 PRINT (1)'TXEDIT'(101,10,10,80,80,"",$16$)
El alor de la banderas Y;AY es la combinaci'n de la bandera de borde @Y;?YB, la bandera de barra
de despla(amiento ertical @Y?EYB y la bandera de arrollar palabras @Y?>YB. 3orra esta ersi'n del
programa y obsere la diferencia en el comportamiento. 1+ora, la ca"a nunca scrolea
+ori(ontalmente. 0os prrafos largos simplemente doblan +acia ms de una lnea fsica, rompiendo
la lnea al final de las palabras, +asta donde sea posible. %na barra de despla(amiento ertical
permite naegaci'n fcil si +ay muc+os prrafos.
%na ariaci'n adicional )ue es e!tremadamente 9til es la opci'n de entana<completa. Si usted
creara un control de edici'n multilnea con un anc+o y altura de ?, esto automticamente +ar )ue
cambie de tama*o para ocupar el rea completa de su entana padre. Q&nt#nteloQ @5ota7 3ambiando
las banderas a Y?AY, desde un control de entana<completa siempre tendr un borde suministrado
por la entana padre. El control tendr un borde )ue no es propio.B
0040 PRINT (1)'TXEDIT'(101,0,0,0,0,"",$06$)
En particular, trate de entrar lneas largas con muc+as e!presiones en ellas, luego cambie el tama*o
de la entana y ea como el arrollamiento de palabras redistribuye todo el te!to.
%na e( )ue usted est a gusto con la operaci'n del control de edici'n multilnea, interrumpa el
programa e intente estas sentencias de modo inmediato.
PRINT (1)'TXADD'(101,0,ENueva primer lneaE,ENueva segunda lneaE)
PRINT (1)'TXADD'(101,-1,ENueva ltima lneaE)
Si usted practic' los e"emplos del E"ercicio fD, usted a a reconocer )ue la sinta!is para N6U122O
es id#ntica para el mnem'nico N0&S6122O. El tercero y subsiguientes parmetros a ser a*adidos
son opcionales. El segundo parmetro indica donde se puede a*adir nueo material. %n n9mero de
prrafo lido indica )ue el nueo te!to debera ir antes de ese prrafo, as, por medio de un ? se
indica a*adir antes del prrafo ?, el primer prrafo. 0os n9meros de prrafo son basados en <cero<
Si el segundo parmetro es <;, significa )ue sern a*adidos nueos prrafos al final.
3omo N0&S6122O, N6U122O tiene una Mforma largaM, para adicionar grandes cantidades de te!to
directamente desde el canal. Ver el siguiente e"emplo y obsere la coma al final de la primera lnea.
0a segunda lnea es un .R&6E, no un PR&56.
PRINT (1)'TXADD'(101,0,3),
WRITE (1)primero,segundo,tercero
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 5C
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
0a forma larga de N6U122O prepara el canal para recibir un n9mero de prrafos terminados con
^linefeed_ @en este caso, CB afuera del parmetro de lista del mnem'nico. Estos prrafos son
recopilados y luego son insertados como un con"unto en el control. En este e"emplo, el n9mero de
prrafo antes del cual se a a insertar tuo ?, de modo )ue las nueas lneas son agregadas al
comien(o.
0a sentencia PR&56 prepara el canal, y la coma al final de la lnea es necesaria para suprimir el
^linefeed_ final )ue de otra manera sera impreso en el canal. En este caso, ese ^linefeed_ sera
interpretado como el fin del primer prrafo @en blancoB, si este fuera mandado a imprimir.
0a sentencia .R&6E entonces ena los tres ^linefeed_ de los prrafos. %saremos .R&6E en lugar
de PR&56 por)ue automticamente a*ade un ^linefeed_ a cada tem escrito.
PRINT (1)'TXAPPEND'(101,0,xxx)
El mnem'nico N6U1PPE52O a*ade te!to al final de un prrafo e!istente. Este e"emplo fallara si al
menos no e!iste un prrafo @n9mero de prrafo ?B en el control.
PRINT (1)'TXDEL'(101,1)
Este mnem'nico elimina un prrafo por su n9mero. En este caso, el segundo prrafo @n9mero de
prrafo ;B es eliminado, si e!istiera. Si usted )uisiera eliminar todos los prrafos, +galo con
N6U30RO.
PRINT (1)'TXCLR'(101)
Say arias funciones de 36R0 )ue obtienen informaci'n acerca del control de edici'n multilnea.
Saga pruebas con cada una de ellas al menos dos eces, +aciendo algunos cambios para el te!to
)ue +aya dentro.
0a funci'n de 36R0 C @Mobtener cuentaMB retorna el n9mero de prrafos e!istentes en el control.
PRINT DEC(CTRL(1,101,3))
0a funci'n ; @Mobtener te!toMB retorna el te!to del prrafo e!istente, sin un ^linefeed_ al final. El
prrafo actual es el )ue muestra el signo de intercalaci'n en la pantalla. Esto puede ser establecido
desde el programa @ea N6USE0E36O en su manual de referencias del Visual PRO/5B, pero es ms
frecuentemente establecido por el usuario.
PRINT CTRL(1,101,1)
0a funci'n [ @Mobtener todo el te!toMB retorna el te!to de 6O2OS los prrafos, con un ^linefeed_
despu#s de cada uno, incluyendo el 9ltimo.
PRINT CTRL(1,101,7)
0a funci'n > @Mobtener alorMB retorna el n9mero del prrafo actual con un string binario de dos
bytes.
PRINT DEC(CTRL(1,101,2))
Finalmente, +ay una funci'n de 36R0 muy especial con la )ue se puede obtener el te!to de
cual)uier prrafo por n9mero. Esta es la funci'n 5 @Mobtener prrafo por n9meroMB. Q1)u se puede
er como traba"aQ
PRINT CTRL(1,101,5,0) ; REM obtener primer prrafo
PRINT CTRL(1,101,5,1) ; REM obtener segundo prrafo
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 5E
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
PRINT CTRL(1,101,5,DEC(CTRL(1,101,3))-1) ; REM obtener ltimo prrafo.
P5O61Q El cuarto argumento de la funci'n 36R0 es normalmente un conte!to especfico. Vamos a
cubrir este detalle ms adelante. El prop'sito es obtener informaci'n por medio de 36R0 acerca de
los tems en cual)uier entana en cual)uier momento, conenientemente. Sin embargo, la funci'n 5
es un caso especial << el cuarto argumento es el n9mero de prrafo para la funci'n 5 solamente.
E0e+*)*)o de SYS8&I F33G MenCs (*on +ev)s)2n 3QP="
0as entanas de SJS$%& pueden tener barras de men9. 0a forma de +acerlo es actiando la
bandera Mtener barra de men9M @Y?D??YB cuando se crea la entana, y luego usando el mnem'nico
NSE6-E5%O para reempla(ar el men9 fi"o asumido por omisi'n para su nueo men9.
Se a)u el programa reporteador de eentos del E"ercicio fE, el cual tiene la bandera Mtener barra
de men9M actiada. 6ambi#n +emos cambiado el bot'n de pulsar en una ca"a de edici'n, para
demostrar )ue el tablero del men9 funcionar posteriormente. @s'lo las lneas C? y E? +an sido
cambiadasB.
0010 OPEN (1)"X0"
0020 PRINT (1)'SEMICHARS'
0030 PRINT (1)'WINDOW'(100,100,100,100,Reportador de Eventos,$0803$,
0030:$FFFFFEFF$)
0040 PRINT (1)'EDIT'(101,10,10,50,15,"",$$)
0050 DIM E$:TMPL(1)
0060 READ RECORD (1,SIZ=LEN(E$))E$
0070 PRINT E.CONTEXT,"", E.CODE$, E.ID,"", HTA(BIN(E.FLAGS,1)), E.X, E.Y
0080 GOTO 60
6rate de correrlo as como est. %sted notar )ue obtiene el men9 fi"o asumido por omisi'n. Sasta
contiene un tem, )ue es c+e)ueable. &ntente operarlo y obsere los eentos del comando de men9
@N3OB. El alor Y?EY en la bandera es la condici'n de c+e)ueado, y aplica solamente para tems de
men9s c+e)ueables. El n9mero )ue usted e en el campo de &2 indica )ue comando de men9 es
eniado. 0os n9meros en el men9 asumido por omisi'n no tienen significado especial.
Obiamente, para +acer cual)uier cosa 9til amos a necesitar nuestro propio men9. 6rate de
adicionar las siguientes lneas de c'digo y c'rralo de nueo. 3onsidere la coma )ue a al final de la
lnea E; y el uso de .R&6E en lugar de PR&56 en las lneas restantes. 5ote tambi#n el espacio
antes la palabra ME!itM y las comas dentro de comillas.
0041 PRINT (1)'SETMENU', Poner coma del final
0042 WRITE (1)"File,1,,"+$0A$+" Exit,2,,"+$0A$
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 55
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
El mnem'nico NSE6-E5%O prepara el canal para recibir un men9. El men9 mismo consiste de una
lnea de te!to por cada tem del men9, indentado con espacios antepuestos para mostrar el niel en
la "erar)ua. El men9 es terminado con una lnea en blanco. En el e"emplo mnimo de arriba, la
barra del men9 contendr una opci'n 9nica, la del men9 de 1rc+io. El men9 de 1rc+io actiado
contiene a su e( un tem, con opci'n de Salir @E!itB. Obsere )ue Z E!itZ est indentado, para
indicar )ue debe aparecer dentro de la opci'n ZFileZ del men9. Finalmente, las comillas del final
@ZZB proeen un ^linefeed_ e!tra para terminar el men9.
3ada tem u opci'n del men9 consiste de cuatro parmetros separados por comas.
.rite @;BZhtem, Eti)ueta, 1celerador, ,anderaZ
< &tem7 generalmente se usa para el nombre )ue a a llear la opci'n.
< Eti)ueta7 se usa para &2entificar la opci'n
< 1celerador
< ,andera7 es para dar condiciones a la opci'n7 S, 3, %, 2.
El primero es el tem con el ttulo del men9, con espacios antepuestos para especificar el lugar en la
"erar)ua de los tems. El segundo campo es para el tem de Meti)uetaM @tagB. 0a eti)ueta es
"ustamente un n9mero utili(ado para identificar ese tem. 0os tags de men9 son controles &2s muy
usados, e!cepto )ue son usados de otro modo, de manera )ue la e!istencia de un control con el
mismo n9mero como una eti)ueta de men9 no proocar un problema. El tercer campo es donde
cual)uier tecla de acelerador puede ser especificada. El cuarto campo puede contener banderas
especiales acerca de esos tems del men9.
3orra el programa de nueo y note la apariencia del men9 ZFileZ, con el comando ZE!itZ deba"o.
3uando el comando ZE!itZ es seleccionado, unos eentos tipo N3O llegan con el campo de &2 igual a
>, )ue es la eti)ueta del comando ZE!itZ. 3ual)uier n9mero desde ; al C;GGG puede ser usado para
tags o eti)uetas de men9. 2el n9mero C>??? en adelante estn reserados para uso de ,1S&S.
1ctualmente solamente C de esas eti)uetas de men9 son reseradas. Estos son los comandos para
cortar @C>?>[B, copiar @C>?>DB y pegar @C>?>GB en el tablero.
0os tems del men9 pueden tener teclas de mnem'nicos asociadas con estos. 0os men9s de
mnem'nicos son opciones por teclado para la naegaci'n de men9s. Vamos a a*adir mnem'nicos a
nuestro e"emplo, y al mismo tiempo, amos a a*adir un men9 de edici'n con comandos por
teclado. En las siguientes lneas es muy importante recordar los espacios preios al nombre de cada
opci'n.
0042 menu$="&File,1,,"+$0A$+" &Exit,2,,"+$0A$
0043 menu$=menu$+"&Edit,3,,"+$0A$+" Cu&t,32027,,"+$0A$
0043:+" &Copy,32028,,"+$0A$+" &Paste,32029,,"+$0A$
0044 WRITE (1)menu$
3on los mnem'nicos a como se muestra, a1lt]Fb nos mostrar el men9 de arc+ios, y a1lt]Eb
nos dar acceso al men9 de edici'n. 2entro de estas opciones, las )ue apare(can con letras
subrayadas +arn funcionar los comandos de men9 correspondiente. Saga una selecci'n de te!to en
la ca"a de edici'n y c'rtelo y p#guelo desde el men9. 0as funciones del tablero siempre estn
disponibles con las secuencias de teclado estndar @gU para cortar, g3 para copiar, gV para pegarB,
pero pueden ser +ec+as disponibles desde el men9 por medio de los tags de men9 estndar, como se
muestra. Obsere )ue el uso del tablero no genera eentos especiales.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 5A
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
Sasta el momento no +emos especificado alguna bandera en nuestro men9 de tems. Say cuatro
banderas disponibles7
S htem es separador
3 htem es c+e)ueable, e inicialmente c+e)ueado
% htem es c+e)ueable, pero no c+e)ueado inicialmente
2 htem es desactiado desde el inicio.
Vamos a alterar nuestro e"emplo de modo )ue el men9 de arc+io tiene un comando MPrintM )ue
desde el inicio aparece desactiado, un tem MPaintM )ue ser c+e)ueable y aparecer inicialmente
c+e)ueado, y un separador sobre la lnea de Salida @E!itB.
0042 menu$="&File,1,,"+$0A$+" &Print,4,,D"+$0A$+" Paint,5,,C"+$0A$
0042:" sep,6,,S"+$0A$+" &Exit,2,,"+$0A$
Si usted corriera esta ersi'n, usted a a er )ue a+ora es posible c+e)uear y des<c+e)uear la
opci'n de ZPaintZ. %sted puede tambi#n er el 3omando MPrintW desactiado, y el (e*arador
@declarado con la letra ZSZB. El nombre usado para el htem del (e*arador no tiene importancia, y
nunca se muestra.
1+ora amos a interactuar con el men9 utili(ando directamente mnem'nicos. &nterrumpa el
programa e intente estas instrucciones inmediatamente.
PRINT (1)'TITLE'(-4,&Paint)
1+ora el comando MPrintW nos trae el comando ZPaintZ. 5ing9n espacio es usado debido a )ue el
espacio no es realmente parte del ttulo del tem. 0os espacios indican simplemente nieles de
anidamiento de men9s al mnem'nico NSE6-E5%O.
Para eitar confundir &2s de controles con tags de men9, mnem'nicos y funciones 36R0 )ue
operan a la e( donde ambos usan el `negatio` de la eti)ueta de men9. Este puede ser un n9mero
de control E tambi#n, pero no sera afectado por este comando. El <E indica )ue la eti)ueta de men9
n9mero E es la )ue a a ser usada.
1+ora amos a +abilitar ese comando.
PRINT (1)'ENABLE'(-4)
Si usted accesa el men9 a a er )ue el tem no es gris por ms tiempo.
0os mnem'nicos N3SE3VO y N%53SE3VO traba"an con tems de men9 c+e)ueables. Pruebe con
estos, atisbando en el men9 antes y despu#s de cada eento.
PRINT (1)'CHECK'(-5)
PRINT (1)'UNCHECK'(-5)
0a funci'n 36R0 puede ser usada, como de costumbre, para obtener informaci'n acerca de men9s
y de tems de men9s. El ms bsico, aun)ue muy rara e( usado, es la funci'n A de 36R0
@Mobtener men9MB. 0a funci'n A es desempe*ada en la entana padre y retorna el rbol del men9
completo, en la sinta!is de NSE6-E5%O.
PRINT CTRL(1,0,6)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 5[
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
Recuerde )ue el &2 ? se refiere siempre a la entana completa. Esta funci'n recuperar todo el
men9, completo con el doble ^linefeed_ al final.
Para obtener informaci'n en tems de men9 indiiduales, usted puede usar la funci'n ; @Mobtener
te!toMB para obtener el ttulo, y la funci'n > @Mobtener alorMB para obtener la condici'n c+e)ueado
de tems c+e)ueables.
Para obtener el ttulo del tem n9mero E del men9, usar la siguiente instrucci'n7
PRINT CTRL(1,-4,1)
PRINT CTRL(1,-1,1) 5o deuele nada.
Para er si un tem c+e)ueable est c+e)ueado en este momento, ponga lo siguiente.
PRINT DEC(CTRL(1,-5,2)) ?KSin c+e)uear, ;K3+e)ueado.
3omo usted puede er, traba"ar con men9s es un poco tedioso, pero no difcil. %na e( )ue su
men9 est colocado, el men9 indiidual de tems funciona muc+o ms bonito con controles
especiales. El men9 puede ser alterado en pe)ue*as formas con simples mnem'nicos @como
cambiar ttulos y des+abilitar temsB, o puede ser reempla(ado completamente con NSE6-E5%O en
cual)uier momento.
E0e+*)*)o de SYS8&I F35G L-s B-++-s de *ond)*)2n B l-s Col-s 9-+- mens-0es
0a barra de condici'n es un control especial )ue le permite mostrar mensa"es de te!to en la parte
inferior de una entana. Para er una barra de condici'n, amos a utili(ar una ersi'n modificada
de el programa MSola, -undoM del E"ercicio f;. Solamente la lnea E5 es nuea.
0010 OPEN (1)X0
0020 PRINT (1)'SEMICHARS'
0030 PRINT (1)'WINDOW'(50,50,50,50,Hola,$83$,$FFFFFEFF$)
0040 PRINT (1)'BUTTON'(1,5,15,40,0,OK,$$)
0045 PRINT (1)'STATBAR'(102,0,0,0,0,Click OK to exit,$$)
0050 DIM E$:TMPL(1)
0060 READ RECORD (1,SIZ=LEN(E$))E$
0070 END
0a barra de condici'n aparece como un rectngulo en la parte inferior de la entana. Por omisi'n
este es coloreado con un gris claro y separado del resto de la entana por una lnea de negro. @0os
colores pueden ser optimi(adosB. 0a barra de condici'n ocupar siempre el anc+o completo de la
entana, aun)ue la entana es cambiada de tama*o @+galoQB, y siempre ser lo suficientemente alta
como para acomodar el tipo de letra @fontB )ue utili(a. 0a fuente )ue se asume por omisi'n para una
barra de condici'n es la )ue se tenga instalada en la m)uina mas parecida a MSeleticaW. @Esto,
tambi#n, es optimi(ableB. 2esde el tama*o y ubicaci'n de una barra de condici'n son determinados
o bien, el usuario no tiene )ue especificar un rectngulo unificador cuando crea el 3ontrol. 3omo
los controles de ca"as de grupo y ca"as de te!to esttico, las barras de condici'n tambi#n nunca
generan eentos. 0as barras de condici'n son muy 9tiles para guiar o informar al usuario de una
condici'n actual o de lo )ue ellos deberan +acer despu#s.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 5D
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
P5O61Q 0as barras de condici'n toman un rea le"os de la entana padre.
0as barras de condici'n son particularmente 9tiles cuando son combinadas con `colas`. %na cola
es un par de mensa"es )ue pueden ser asociados con un control. Si una cola est actia, con solo
pasar el cursor del rat'n sobre un ob"eto, causa )ue una entana amarilla pe)ue*a se apare(ca con
el primero de un par de mensa"es, llamado la Mco$a cortaM. Si una barra de condici'n aplicable es
locali(ada, el te!to en la barra de condici'n es cambiado temporalmente por el segundo parmetro
para mensa"es, llamado la Mco$a $argaM. Si el rat'n es moido o oprimido, la barra de condici'n
obtiene su contenido anterior, y la entana amarilla desaparece.
Vamos a a*adir una cola a nuestro programa.
0046 PRINT (1)'CUE'(1,OK button,Press this!)
3orra el programa y obsere el comportamiento cuando el rat'n es moido encima del pulsador y
all mantenido.
P3%&212OQ 2ebido a la forma en )ue las colas sean implementadas, su uso puede proocar
algunos efectos secundarios indeseables en el comportamiento de la interfase del usuario. Si el uso
de colas es limitado a barras de +erramienta @entanas +i"as se llenarn principalmente con botones
+erramientasB, y esto casi nunca ser ob"etable. 1lgunos efectos secundarios pueden ser )ue los
controles en una entana )ue se sobrepone conteniendo colas, no podran operar, y )ue las
porciones de barras de despla(amiento de ca"as de lista y los controles de edici'n multilnea no
podran responder al primer golpe en algunas circunstancias. Estamos traba"ando para minimi(ar
estos inconenientes. Reise el arc+io rea&'e del Visual PRO/5 para obtener informaci'n ms
actual.
El Ed)to+ de :-nt-ll-s 8&I
En esta secci'n amos a aprender a confeccionar pantallas grficas por medio del editor
suministrado con el Visual PRO/5. 3onfeccionar una pantalla con esta +erramienta implica )ue la
producci'n de un programador sea bastante ms rpida, ya )ue no se tiene )ue pasar por los
traba"os de estar calculando entanas, tama*os de ob"etos, ni posicionamientos.
El motio por el cual no se les ense*' desde el principio a usar este editor, es para )ue conocieran
ms a fondo como interact9a el .indo/s con el Visual PRO/5. En las primeras pginas del manual
se di"o )ue todo programa para consultas o captura de datos, en realidad no tiene ni una sola
instrucci'n de &5P%6 de ,,!, ya )ue en la realidad este traba"o es delegado a .indo/s.
$esou+*e ed)to+ R Ed)to+ de l- +ev)s)2n 3QP=
Para crear un nueo recurso @con la reisi'n ;.?!B debe darse clicI en el icono del editor de
recursos. Esto +ace )ue nos apare(ca una entana de mediano tama*o, en donde podemos apreciar
todos los ob"etos o figuras )ue podemos utili(ar con el editor. Se supone )ue al tener cierto fogueo
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 5G
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
con .indo/s, usted est familiari(ado con todas esas figuras, y por eso no amos a detallar muc+o
sobre ellas.
Si a usted le interesa dise*ar un recurso ms grande )ue esa pantalla, puede ma!imi(arla +aciendo
clicI en el pe)ue*o rectngulo de la es)uina superior derec+a.
El siguiente paso para la creaci'n del recurso es +acer clicI sobre la palabra .indo/s ubicada en el
men9 de la es)uina superior i()uierda y posteriormente +aciendo otra e( clicI sobre la opci'n de
crear un nueo recurso. Esto +ace )ue nos apare(ca un nueo conte!to cuadriculado, el cual se
conertir en la superficie )ue amos a utili(ar para colocar los ob"etos )ue sean de nuestro inter#s.
Este conte!to podemos moldearlo al tama*o )ue nos interese, corriendo con el R16i5 las lneas
delimitadoras )ue nos interesen.
6anto la ubicaci'n de este conte!to como sus lneas delimitadoras, podemos ariarlas de posici'n
colocndoles el cursor del R16i5 encima y arrastrndolo +acia donde nos interese.
%sted podr er )ue el conte!to tiene un letrero o ttulo en ingl#s )ue dice7 Z%ntitledZ. Este
podemos ariarlo a lo )ue sea nuestra necesidad, al igual )ue otras caractersticas propias del
conte!to. Para lograrlo debemos colocar el cursor del R16i5 dentro del conte!to y +acer un doble
clicI. Sec+o esto nos aparece una entana con arios parmetros )ue podemos ariar seg9n sea la
necesidad. Para conocer las cualidades y usos de estos parmetros debe tomar ayuda del
correspondiente manual del Visual PRO/5.
1+ora amos a +acer un pe)ue*o comentario de cada uno de los ob"etos o iconos )ue aparecen
desplegados en la parta alta del editor de recursos. 1l oprimir cual)uiera de esos iconos estaremos
actiando su uso. 3uando eso es +ec+o, ocurre )ue +acia donde lleemos el puntero del -O%SE,
estaremos en posibilidad de crear ese tipo de bot'n, en el entendido de )ue preiamente ya +a sido
creado el conte!to o entana $%&. 2ic+o de otra manera, no podemos crear un ob"eto sin tener un
determinado conte!to donde alo"arlo.
Sepa tambi#n )ue los ob"etos )ue se detallan aba"o, adems de poder ser creados con el editor de
recursos, tambi#n pueden ser creados por medio de mnem'nicos en tiempo de corrida del
programa. &nclusie, uno puede crear un conte!to con sus respectios ob"etos por medio del editor
de recursos, y luego en tiempo de corrida del programa, podemos adicionarle nueos ob"etos, y
tambi#n modificar los preiamente creados.
;B Puntero7 En realidad este no es un ob"eto de .indo/s, Este icono debe ser constantemente
utili(ado para estar desactiando la condici'n de nueas inserciones del ob"eto )ue tengamos
actiado.
>B Pus+ ,utton7 Se utili(a para )ue el usuario tome acciones como 3ontinuar, 3ancelar, 3alcular,
6erminar, Salir, etc. Se caracteri(a por)ue al ser luego usado por el usuario, +ace la simulaci'n
de )ue se +unde y retorna a la posici'n normal.
Sinta!is.7 PR&56 @guiB8,%66O58@id,!,y,/,+,title,flagsB
E"emplo7 PR&56 @guiB8,%66O58@;,5,;5,E?,?,ZOIZ,YYB
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: A?
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
CB 3+ecI ,o!7 Estas ca"as de c+e)ueo se utili(an para )ue el usuario pueda en una aplicaci'n
+acer indicaciones sobre lo )ue est# procesando. E"emplo, al incluir un cliente podra
preguntarse7 Se le ena estado de cuenta, 5ecesario trmite de cobro con original, Se le carga
flete al facturar, etc. 2ici#ndolo de otra manera, estas ca"as +acen la funci'n de afirmar o
desmentir una condici'n.
Sinta!is.7 PR&56 @guiB83SE3V,OU8@id,!,y,/,+,title,flagsB
E"emplo7 PR&56 @guiB83SE3V,OU8@;;C,;55,AC,5D,;E,Z3alcularZ,YYB
EB Radio ,utton7 Funcionan de manera bastante similar a las 3a"as de 3+e)ueo, solo )ue
generalmente estos se agrupan para poder indicar una sola condici'n de arias )ue podran
darse. Por e"emplo, podemos decir )ue una persona pertenece a una determinada ra(a pero no a
todas a la e(, )ue es simpati(ante de un determinado partido poltico pero no de arios a la
e(, )ue pertenece a una determinada religi'n o doctrina, pero no a arias a la e(. 1l ser
definidos en grupos .indo/s controla )ue siempre +aya uno actio y )ue al ser actiado otro,
los dems automticamente son desactiados.
Sinta!is.7 PR&56 @guiB8R12&O,%66O58@id,!,y,/,+,title,flagsB
E"emplo7 PR&56 @guiB8R12&O,%66O58@;?5,EAE,C>,A>,;D,ZJ...Z,Y???5YB,Trem Z3+ecI/2isab
5B Sori(ontal Scroll ,ar7 Se utili(a en conte!tos un poco grandes, en donde por lo general los
datos no caben en la pantalla y necesitamos despla(arnos +acia la derec+a o la i()uierda, para
poder isuali(arlos.
Sinta!is.7 PR&56 @guiB8SS3RO008@id,!,y,/,+,title,flagsB
E"emplo7 PR&56 @guiB8SS3RO008@;?;,;?,;?,D?,;?,ZZ,YYB
AB Vertical Scroll ,ar7 0o mismo del anterior, solo )ue en este caso el despla(amiento es +acia
arriba y +acia aba"o.
Sinta!is.7 PR&56 @guiB8VS3RO008@id,!,y,/,+,title,flagsB
E"emplo7 PR&56 @guiB8VS3RO008@;?;,;?,;?,;?,D?,ZZ,YYB
[B Static 6e!t7 Se utili(a en a)uellos casos en )ue necesitamos mostrar te!to o r'tulos dentro de un
determinado conte!to.
Sinta!is.7 PR&56 @guiB86EU68@id,!,,/,+,title,flagsB
E"emplo7 PR&56 @guiB86EU68@;?E,;C,A5,EC,;E,ZPeriodosZ,YD???YB
DB Edit ,o!7 Son los ob"etos )ue necesitamos para digitaci'n de datos. Se caracteri(a por)ue su
ttulo a dentro de la ca"a.
Sinta!is.7 PR&56 @guiB8E2&68@id,!,y,/,+,title,flagsB
E"emplo7 PR&56 @guiB8E2&68@;?5,A>,>?,E?,;E,Z?Z,YYB
GB 3ustom Edit ,o!7 Este ob"eto nos permite la digitaci'n de te!to en una o arias lneas. Su ttulo
es asumido como parte inicial del te!to a ser digitado.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: A;
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
Sinta!is.7 PR&56 @guiB86UE2&68@id,!,y,/,+,title,flagsB
E"emplo7 PR&56 @guiB86UE2&68@;?;,;?,;?,D?,D?,Z1sunto7 Z,Y;AYB
;?B 0ist ,o!7 Esta ca"a sire para mostrar listas de tems, en donde el usuario por lo general usa
marcar uno o arios de estos, dependiendo esa acci'n de la opci'n )ue se le est# dando al
usuario.
Sinta!is.7 PR&56 @guiB80&S6,OU8@id,!,y,/,+,title,flagsB
E"emplo7 PR&56 @guiB80&S6,OU8@;?C,;A,GE,;>?,>>E,ZZ,Y?E??YB
;;B 0ist ,utton7 Funcionan de una manera elegante. Por e"emplo7 el usuario debe +acer una
indicaci'n de un nombre entre doce posibles opciones. 0a ca"a inicialmente deber mostrar uno
de todos los nombres, asumi#ndolo a coneniencia por programaci'n. Si el usuario desea otro
deber +acer clicI en la flec+a )ue tiene el bot'n y automticamente nos son desplegados los
doce nombres, para )ue mar)uemos el )ue nos interesa.
Sinta!is.7 PR&56 @guiB80&S6,%66O58@id,!,y,/,+,title,flagsB
E"emplo7 PR&56 @guiB80&S6,%66O58@;?D,;C,;>A,[>,5E,ZZ,YYB
;>B 0ist Edit7 Es muy similar al anterior, solo )ue este permite )ue adems de elegir entre los )ue
tengamos almacenados en la lista de tems, podamos optar por digitar otro diferente al )ue
indi)uemos en 8title8.
Sinta!is.7 PR&56 @guiB80&S6E2&68@id,!,y,/,+,title,flagsB
E"emplo7 PR&56 @guiB80&S6E2&68@;;>,;?5,;>[,C[,5C,Z1(ulZ,YYB
;CB $roup ,o!7 Esta figura no sire para mostrar ni ingresar datos. Su uso est dirigido para )ue
dentro de su contorno colo)uemos todos los Radio ,otones )ue necesitemos para controlar una
determinada condici'n.
Sinta!is.7 PR&56 @guiB8$RO%P,OU8@id,!,y,/,+,title,flagsB
E"emplo7 PR&56 @guiB8$RO%P,OU8@;>>,C,DE,;5G,AA,ZOpcionesZ,YYB
;EB 6ool ,utton7 Este bot'n funciona de una manera similar al Pus+ ,utton. 0a diferencia es )ue es
ms especial por)ue permite )ue dentro de su superficie podamos desplegar alg9n literal o
arc+io .,-P. Ver ms caractersticas en secci'n E"ercicio de SJS$%& fA.
Sinta!is.7 PR&56 @guiB86,%66O58@id,!,y,/,+,title,flagsB
E"emplo7 PR&56 @guiB86,%66O58@;?D,;C,;>A,[>,5E,Z,&6-1PK//indo/s/.aes.bmpZ,YYB
;5B Status ,ar7 Es utili(ada para mostrar mensa"es de ayuda o de inter#s al usuario del programa.
Sinta!is.7 PR&56 @guiB8S616,1R8@id,!,y,/,+,title,flagsB
E"emplo7 PR&56 @guiB8S616,1R8@;;5,?,?,?,?,Z-oer el puntero sobre los controles para
obtener ayudaZ,YYB
El uso de estos ob"etos es algo )ue debemos aprender a dominar bien, ya )ue de eso depende
bastante )ue una aplicaci'n nos funcione bien o no.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: A>
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
Podemos obserar )ue conforme amos agregando ob"etos en un conte!to, automticamente el
editor de recursos les a asignando un n9mero consecutio )ue inicia con el ;?;, para )ue luego ya
dentro de las lneas del programa, podamos referirnos a estos por medio de ese identificador.
3ual)uier ob"eto ya colocado dentro del conte!to puede ser moido, eliminado o modificado. Para
eso primero debemos tocar el bot'n del Puntero @f;B y luego el ob"eto )ue necesita ser interenido.
Si le damos clicI una sola e( podemos moerlo o eliminarlo. Si necesitamos modificarlo es
necesario +acer un doble clicI sobre este.
El ttulo )ue inicialmente se le asume a la mayor parte de esos ob"etos al ser creados @Z%ntitledZB,
puede ser ariado desde un inicio, dando doble clicI sobre el ob"eto y escribiendo el ttulo
adecuado. 0uego, en tiempo de corrida del programa, esos ttulos pueden ser ariados por medio
del mnem'nico 86&60E8.
Para salar los cambios +ec+os se oprime el bot'n OV. %sar 3ancel para salirse sin salar nada.
Es importante recordar )ue dentro de un arc+io de recursos podemos guardar arios conte!tos, el
cual luego con el erbo RES$E6 podemos seleccionar, a como se indica en el programa al final de
esta secci'n.
$esBu)lde+ R Ed)to+ de l- +ev)s)2n 5QP=
Este utilitario est disponible desde la reisi'n >.?! de Visual PRO/5 y permite la creaci'n y
modificaci'n de pantallas grficas, de una forma bastante ms fcil para el programador.
1l ponerlo en funcionamiento es ms c'modo si desde el inicio es ma!imi(ado, para tener as una
mayor amplitud en el rea de traba"o.
2e los dos recuadros )ue aparecen, en el i()uierdo podemos apreciar cuatro iconos con las
opciones )ue se pueden reali(ar7
- Form Para crear nueas pantallas.
- 3+ild .indo/ Para crear entanas +i"as.
- -enu Para crear men9s.
- &mage 0ist Para crear listas de imgenes.
C2mo *+e-+ un- nuev- 9-nt-ll-S
- Posicionamos el puntero del mouse en el icono Forms.
- 1pretamos el !otn &erecBo del mouse.
- Seleccionamos agregar @addB y nos aparece el conte!to aco para la nuea pantalla, "unto con un
recuadro )ue nos muestra las propiedades del conte!to. 1+ podemos cambiar el 6tulo del
conte!to, el &2, el nombre con )ue le identificar en el rbol )ue se a formando en el recuadro
i()uierdo, el color de fondo del conte!to y todas las dems propiedades )ue a+ se muestran.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: AC
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
Saciendo clicI en la eti)ueta F$ag( )ue aparece dentro de las propiedades de la forma, podemos
actiar o desactiar algunas cualidades )ue tienen los conte!tos7
< 1ll/ays on top 2e"arlo c+e)ueado si )ueremos )ue el conte!to se mantenga fi"o.
< 3lose bo! 3+e)ueado si )ueremos )ue el conte!to tenga su ca"ita de cierre.
< 3ustom color palette 3+e)uearlo si )ueremos )ue el usuario cambie los colores del conte!to a
su criterio.
< 2ialog ,e+aior 2e"arlo siempre c+e)ueado.
< 2ialog ,order 3+e)ueado si )ueremos )ue el conte!to mantenga su borde.
< 2isabled 3+e)uearlo si )ueremos declararlo des+abilitado.
< Enter as 6ab 3+e)uearlo si )ueremos )ue el E56ER funcione igual )ue el 6ab.
< $raity 2e"arlo c+e)ueado si )ueremos )ue luego el usuario del programa pueda
arrastar la pantalla.
< Sori(ontal scroll bar 3+e)uearlo si )ueremos )ue tenga una barra de scroll +ori(ontal.
< &nitially ma!imi(ed 3+e)uearlo si )ueremos )ue inicialmente apare(ca ma!imi(ado.
< &nitially minimi(ed 3+e)uearlo si )ueremos )ue inicialmente apare(ca minimi(ado.
< &nisible 3+e)uearlo si )ueremos )ue inicialmente apare(ca inisible.
< Veyboard naigation 3+e)uearlo si )ueremos permitir naegaci'n de teclado.
< -anage syscolor eent
< -inimi(able 3+e)uearlo si )ueremos )ue luego lo puedan minimi(ar.
< 5o title bar 3+e)uearlo si )ueremos )ue no muestre el ttulo del conte!to.
< Si(able 3+e)uearlo si )ueremos )ue el usuario lo pueda cambiar de tama*o.
< Vertical scroll bar 3+e)uearlo si )ueremos )ue tengan una barra de scroll ertical.
- En la parte inferior i()uierda de la pantalla, aparecen tres iconos con un pe)ue*o enre"ado.
- El de la i()uierda nos sire para llenar el conte!to de unos puntitos )ue luego nos serirn para
guiarnos en la colocaci'n de los ob"etos )ue a a contener el conte!to.
- El del centro sire para ayudarnos con el alineamiento automtico de los ob"etos.
- El de la derec+a sire para ayudarnos a )ue ob"etos de una misma especie, puedan ser +ec+os
de un solo tama*o.
3onforme ayamos agregando ob"etos eremos como su referencia tambi#n a apareciendo en el
rbol del recuadro i()uierdo, con su tipo de icono, su &2 y su nombre. 1 manera de conse"o, se
recomienda )ue los &2 de las eti)uetas sean ciento y resto @;!!B, mientras )ue los &2 de las ca"as
para edici'n sean doscientos @>!!B, de manera )ue +aya concordancia entre ambos. Por e"emplo
)ue ;>; y >>; sean para el campo llamado 3%E561. Recuerde )ue si en el futuro necesitara ariar
esta numeraci'n, es posible +acerlo en las propiedades del ob"eto, con el gran cuidado de no utili(ar
un &2 asignado a otro ob"eto.
Para el te!to de las eti)uetas @Static te!tB se recomienda )ue la primer letra sea may9scula y
min9sculas el resto del te!to. Eso le da una me"or est#tica a la pantalla y muestra la delicade(a de
)uien la +i(o.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: AE
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
$esBu)lde+G B-++- de o10etos d)s9on)1lesG
5ormalmente esta la emos en forma alargada +ori(ontal en la parte superior i()uierda de la
pantalla. 1+ nos muestra todos los ob"etos )ue podemos utili(ar para colocar en el conte!to )ue
amos a crear. Esta barra, si se desea, podemos cambiarla de posici'n con solo arrastrarla a la (ona
)ue nos resulte ms c'moda.
0os iconos de ob"etos mostrados en la barra son7
- Pointer @flec+aB para des<seleccionar cual)uier ob"eto de la barra preiamente seleccionado.
- Static te"t @1,3B para poner eti)uetas de te!to relacionado a un ob"eto )ue contendr datos.
- E&it !o" @abcB sire para colocar los ob"etos o ca"as )ue luego contendrn informaci'n, sea para
despliegue o digitarla. Su contenido se puede ariar con el mnem'nico N6&60EO. 1 manera de
conse"o, se recomienda )ue en las propiedades su 5ombre @5ameB sea puesto, para )ue en el rbol
de ob"etos )ue se a formando en el recuadro i()uierdo de la pantalla, apare(can con dic+o nombre,
o"al el mismo )ue corresponde al campo en el diccionario.
- CBecG /o" @UB sire para colocar botones c+e)ueables, o sea, para )ue el usuario del programa
luego pueda condicionar cierta informaci'n.
- Ra&io /#tton @OB sire para colocar radio botones, los cuales luego serirn para )ue el usuario
del programa pueda escoger una de entre al menos dos opciones agrupadas. Estos grupos se
numeran para poder luego identificar los Radio ,otones de cada grupo. 3omo una regla, en cada
grupo siempre debemos indicar cual de los Radio ,otones es el )ue inicialmente a a )uedar
actiado. 0os Radio ,otones tienen un funcionamiento un poco similar a los 3+ecI ,o!.
- P#(B /#tton @j kB sire para colocar botones )ue luego serirn al usuario del programa para
actiar botones con funciones como 3ancelar, 3ontinuar, &mprimir, etc. El nombre de esta funci'n
se debe escribir en el campo para 6e!to de las propiedades del ,ot'n.
- Gro#* /o" @j1,3k sire para agrupar "uegos de Radio ,otones. Se muestra en la pantalla como un
recuadro con un ttulo, )ue adorna y agrupa un "uego de Radio ,otones.
- C#(to' E&it jKk siren para colocar ca"as )ue permitirn mostrar o ingresar informaci'n )ue es un
poco e!tensa, sea de una o arias lneas. Funciona como un pe)ue*o editor de te!to multilnea en
donde cada lnea de te!to est restringida a una longitud m!ima de >5A caracteres.
- Li(t /o" sire para colocar ob"etos )ue luego permitirn al usuario escoger o seleccionar con el
mouse, uno o arios tems de la lista )ue contenga. Para este tipo de ob"eto se recomienda usar un
tipo de letra @fontB de tama*o fi"o como Corier ne$. Si la cantidad de tems sobrepasa la
capacidad de despliegue dibu"ado, de manera automtica le aparece una barra de scroll ertical.
- Li(t /#tton sire para colocar ob"etos )ue contienen una flec+a en su costado derec+o, la cual al
ser actiada, +ace )ue la ca"a se abra +acia aba"o para mostrarnos una lista de tems disponibles. 1l
dibu"arlo, +ay )ue ampliarlo +acia aba"o, para )ue de esta manera se*alemos +asta donde Nse abrirO
en el despliegue )ue +ar cuando el usuario del programa lo actie.
- Li(t E&it es muy similar al anterior, solo )ue este permite digitaci'n en su ca"a, lo cual sire como
patr'n de b9s)ueda entre los tems cargados en la lista del ob"eto, o bien, para asumir el dato )ue
sea digitado.
- Vertica$ Scro$$ /ar sire para colocar un ob"eto )ue nos muestra una barra de scroll ertical.
- @oriHonta$ Scro$$ /ar sire para colocar un ob"eto )ue nos muestra una barra de scroll +ori(ontal.
- Gri& Contro$ sire para colocar ob"etos )ue proporcionan al usuario un cuadriculado )ue
suministra el mismo efecto de estar traba"ando con una +o"a electr'nica, pero restringido a la
configuraci'n )ue el programador le asigne. Es especial para programas )ue necesiten irtuali(ar o
mostrar todos los registros de un determinado arc+io, de manera )ue el usuario del programa
pueda naegar y +acer las modificaciones )ue si lo condicionramos, automticamente podran
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: A5
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
repercutir sobre el arc+io inolucrado. El MgridW puede contener tanta data como sea posible en la
cantidad de memoria irtual )ue contenga la computadora. Es iable tener arios miles de lneas
con poca memoria y puede llegar a arios millones de lneas si tiene suficiente memoria. El ZgridZ
puede simplificar grandemente el mane"o de ZscrollingZ y de edici'n de campos indiiduales.
Varios de los utilitarios )ue incluye VP5 >.!! como el M3onfiguratorW, usan el ZgridZ y le pueden
serir de e"emplo.
- Da! Contro$ sire para colocar ob"etos )ue dan la sensaci'n de estar traba"ando con arias
carpetas, en donde para cada una se muestran los ob"etos necesarios para la aplicaci'n. 2entro de
cada 6ab se puede colocar todo el resto de ob"etos a)u definidos.
- @oriHonta$ $ine sire para el tra(ado de lneas +ori(ontales, donde el programador lo indi)ue con el
mouse, en el conte!to )ue est creando.
- Vertica$ $ine sire para el tra(ado de lneas erticales, donde el programador tenga la necesidad de
+acerla.
- I'age sire para colocar recuadros )ue luego serirn para mostrar el contenido de los arc+ios
.,-P.
- INPUDE j1,3k sire para colocar ca"as )ue siran para la digitaci'n de alores alfanum#ricos,
especialmente cuando se necesita enmascarar el dato a ser entrado, igual a como se +ace en
ambiente de caracteres.
- INPUDN j;>Ck sire para colocar ca"as )ue serirn para la digitaci'n de alores num#ricos, )ue
de fi"o necesiten ser enmascarados. Por e"emplo montos, n9meros de cuenta, etc.
- CBi$& =in&o; sire para la creaci'n de entanas +i"as en un conte!to principal.
- Doo$ /#tton @j kB son botones )ue funcionan de manera muy similar a un Pus+ ,utton. 1dems de
otras diferencias, se caracteri(a por)ue el 6ool ,utton permite )ue en su superficie podamos
desplegar un arc+io .,-P.
$esBu)lde+G :+o9)ed-des de los o10etosG
6odos los ob"etos, al igual )ue el conte!to donde residen, cada uno tiene propiedades )ue podemos
ariar seg9n nuestras necesidades. Para lograrlo colocamos el puntero del mouse sobre el ob"eto
deseado y a+ damos un a3licIb i()uierdo, para )ue as nos apare(ca el recuadro con las
propiedades, dentro de las cuales tenemos7
- Contro$ D3*e Solo nos indica el tipo de control.
- Contro$ ID 5os muestra el n9mero con )ue Res,uilder identifica dic+o ob"eto. Si lo deseamos,
podemos ariarlo siempre y cuando otro no aya a repetirse con el nueo n9mero.
- Na'e Este a apareciendo en el rbol de figuras )ue a la i()uierda se a formando.
- De"t Sire para )ue en algunos ob"etos como los de 6e!to Esttico, podamos indicar el te!to )ue
a a permanecer fi"o, con el tama*o y tipo de letra )ue indi)uemos.
- Initia$ Content Permite )ue desde un inicio el ob"eto apare(ca con el te!to )ue a)u definamos,
con las caractersticas de alineado )ue se ofrecen.
- 8 *o(ition 3orresponde al n9mero de lnea dentro del conte!to, en donde la es)uina superior
i()uierda del ob"eto est posicionado.
- Y *o(ition 3orresponde al n9mero de columna dentro del conte!to, en donde la es)uina
superior i()uierda del conte!to est posicionado.
- =i&tB &ndica la longitud o anc+o del ob"eto.
- @eigBt &ndica la altitud del ob"eto.
- Fore co$or Sire para dar un color deseado a las letras )ue se desplieguen dentro del ob"eto.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: AA
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
- /acG co$or Sire para poner un determinado color al fondo del ob"eto.
- Font Sire para dar un tama*o y tipo de letra diferente al )ue desde un inicio se asume.
- SBort C#e Es una pe)ue*a eti)ueta amarilla con un mensa"e corto, )ue se muestra en tiempo de
corrida del programa, cuando el usuario coloca el puntero del mouse sobre el ob"eto.
- Long C#e Es una eti)ueta ms grandecita )ue la anterior, con un mensa"e un poco ms largo,
)ue tambi#n se muestra en el conte!to, al colocar el puntero del mouse sobre el ob"eto.
- Di(a!$e& Permite )ue el ob"eto inicialmente apare(ca +abilitado o des+abilitado.
- InIi(i!$e Permite )ue el ob"eto inicialmente apare(ca isible o inisible.
- C$ient E&ge Para )ue el ob"eto se ea como +undido.
- Rai(e& E&ge Para )ue el ob"eto se ea como sobresaltado.
- In Gro#* 5ecesario para agrupar Radio ,otones y 6abs.
- J#(tification Se utili(a en algunos ob"etos para indicar si el 6e!to inicialmente definido en las
propiedades, se alinea +acia la i()uierda, a la derec+a o al centro.
- /#tton Gro#* Se utili(a con los Radio ,otones para indicar el n9mero de grupo al )ue
pertenece cada Radio ,ot'n.
- De"t Left Se utili(a en con los 3+ecI ,o! o con los Radio ,otones, para indicar si el 3+ecI o el
Radio ,ot'n se alinean a la i()uierda o a la derec+a de la eti)ueta.
- CBecGe& Se utili(a con los 3+ecI ,o! o con los Radio ,otones, para indicar si desde un inicio
se muestra actiados o desactiados.
- Pa((;or& Entr3 3ondici'n )ue debemos actiar cuando en el ob"eto luego an a digitarse
caracteres como el de un pass/ord o clae secreta.
- F$ag( Sire para condicionar algunas cualidades del ob"eto como7
. ,order
. &gnore 6abs.
. .ord .rap.
. Sori(ontal Scrollbar.
. One Paragrap+.
. OerstriIe -ode.
. Read Only 5o permitir edici'n.
. Vertical Scrollbar
- 7a" Par LengtB Sire para )ue indi)uemos la longitud m!ima )ue pueda tener el te!to en un
ob"eto 3ustom Edit. El m!imo soportado es >5A caracteres.
- St3$e( Similar a Flags, sire para condicionar algunas cualidades de los 6abs.
$esBu)lde+G 'l)ne-m)ento de o10etosG
Si tenemos definidos un grupo de ob"etos de una misma especie, los cuales no nos +an )uedado
bien alineados en la pantalla, o los necesitamos de un mismo tama*o, o el espacio de separaci'n
entre uno y otro no es uniforme, podemos alernos de la ayuda )ue el Res,uilder nos ofrece para
estos efectos.
Sabemos )ue con solo +acer clic sobre cual)uier ob"eto, )ueda marcado para )ue luego podamos
NarrastrarloO con el mouse para ubicarlo donde me"or nos conenga. 2e igual manera, cuando el
ob"eto est marcado, podemos ariar su tama*o, N"alndoloO por el e!tremo )ue necesitemos estirar
o encoger.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: A[
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
Para empare"ar arios ob"etos en su tama*o o separaci'n e!iste en la parte ba"a inferior de la
pantalla del Res,uilder, una ,arra de Serramientas para 1linear Ob"etos. 0a e!plicaci'n para el
uso de estos botones se detalla en el otro manual )ue se la +a dado, en la pgina >A de la secci'n
para Res,uilder. Para reali(ar este tipo de alineamiento, primero debemos mantener oprimida la
tecla a3trlb y luego amos dando a3lic i()uierdob sobre los ob"etos )ue re)uieran el
alineamiento. Para todos los tipos de alineamiento )ue re)uiera, debemos considerar )ue el primero
)ue mar)uemos ser el )ue se utilice como mac+ote para los dems. %na e( )ue todo el grupo de
ob"etos +a sido marcado, soltamos el bot'n a3trlb y en la ,arra de Serramientas damos clic al
bot'n para alineamiento )ue estemos ocupando. Estando marcado todo el grupo de ob"etos,
tambi#n podemos arrastrarlo como un todo, +asta reubicarlo donde me"or conenga. Para lograr
este arrastre +ay )ue soltar la tecla a3trlb, oler a mantenerla apretada y con el mouse
arrastramos el con"unto de ob"etos al lugar deseado.
C'o $ograr e$ &e(*$ieg#e &e $o( arcBiIo( /RC K
2espu#s de +aber utili(ado el Res,uilder, la pantalla dibu"ada )ueda salada en un arc+io )ue se
identifica por)ue su nombre termina con /RC.
0os datos salados en un arc+io /RC no contienen c'digo de programaci'n. Solamente siren
para )ue luego, +agamos su despliegue por medio de los mnem'nicos )ue aparecen en negrita en el
siguiente e"emplo de programa7
0010 REM "Programa que despliega Recursos
0020 BEGIN ; INPUT 'LF',"Dar nombre del archivo .BRC a desplegar: ",recurso$;
0020:IF recurso$="" THEN STOP
0030 IF POS("."=recurso$)=0 THEN LET recurso$=recurso$+".BRC"
0040 LET a%=RESOPEN(recurso$,ERR=no_existe)
0050 LET a$=RESGET(a%,1,1); REM "Tercer valor indica el ID del contexto
0060 RESCLOSE (a%)
0070 LET gui=UNT; OPEN (gui)"X0"
0080 PRINT (gui)'RESOURCE'(LEN(a$)),a$
0090 DIM e$:TMPL(gui)
0100 READ RECORD(gui,SIZ=LEN(e$))e$
0110 STOP
0120 REM
0130 no_existe:
0140 INPUT (0,SIZ=1)"No encuentro ese archivo .BRC (Dar ENTER) ",*; GOTO 0020
0150 END
E!plicaci'n de lo )ue ocurre en algunas de las lneas del programa anterior7
??>? y ??C? Siren para obtener el nombre del recurso.
??E? Se abre el arc+io con el recurso indicado. 2e no e!istir bifurca a indicar )ue 5O:EU&S6E.
??5? Se carga los datos del recurso en la ariable 1Y.
1 como se indica en el RE- de la lnea ??5?, en un mismo arc+io de recursos, podemos
guardar arios conte!tos. Sabamos dic+o )ue un conte!to es igual a una determinada
pantalla grfica. En este caso se est utili(ando el conte!to n9mero uno.
??A? Se cierra el canal usado para leer el recurso.
??[? Se abre el canal para el SJS$%&.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: AD
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
??D? Se +ace el despliegue del recurso cargado en 1Y.
??G? Se genera el 6E-P016E con )ue an a ser ledos los eentos desde el SJS$%&.
?;?? Este RE12 RE3OR2 es el )ue nos suministra los eentos reportados por SJS.&52O.S.
2ebe tenerse presente )ue la ruta del arc+io /RC +ay )ue darla completa, ya )ue el RESOPE5
no utili(a los directorios definidos en el PREF&U.
Eso es todo. 0o 9nico )ue )uedara por +acer es el control y mane"o de los eentos )ue nos sean
reportados. Recordemos )ue los eentos se originan de las acciones )ue tome el usuario del
programa, sean ec+as por medio del R16i5 o por medio del teclado.
Mnem2n)*o 8$ID R C+e-+ un Cont+ol 8+)d
Sinta"i(
8$R&28@id,!,y,/,+,flagsY,initro/s,initcols,ma!cols^,col+ead+eig+t,col+eadid_ ^,ro/+ead/idt+,ro/+eadid_B
De(cri*cin
El mnem'nico 8$R&28 sire para crear un control grid. Es me"or crear grids y todos los otros controles en un
arc+io de recursos )ue por medio de mnem'nicos. %sando Res,uilder para definir un grid, atributos como los
encabe(ados de columnas pueden ser puestos sin escribir c'digo de Visual PRO/5 y pueden ser cambiados sin
modificar el c'digo. 6odos los atributos de un grid pueden ser cambiados en tiempo de corrida del programa,
incluyendo el n9mero de lneas, sin )ue se pierda la fle!ibilidad.
En Ier(ione( *reIia( a $a reIi(in -,0 &e Vi(#a$ PRO/5L $a !an&era #(a&a *ara &e(*$egar $<nea( Iertica$e(
e( %00-0% Para $a reIi(in -,0 3 *o(teriore(L &e!e #(ar(e $a !an&era %6000% C#an&o nece(ite 'igrar
a*$icacione( a reIi(ione( *reIia( e( nece(ario ca'!iar $a !an&era %00-0 a %6000% o ta'!i>nL actiIan&o e$
!3te 9 &e SEDOPDS con e$ !it %06%
Parmetro 2escripci'n
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: AG
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
I& %n entero positio )ue debe ser usado para identificar el grid. Este n9mero debe ser 9nico entre
los controles en la entana en uso.
" Posici'n +ori(ontal de la es)uina superior i()uierda del grid, basado unidades de la escala
asignada al 3O56RO0, relatias al interior de la entana )ue lo contiene.
3 Posici'n ertical de la es)uina superior i()uierda del grid, basado unidades de la escala asignada
al 3O56RO0, relatias al interior de la entana )ue lo contiene.
; 1nc+o del grid entero basado en unidades de la escala asignada al 3O56RO0.
B 1nc+o del grid entero basado en unidades de la escala asignada al 3O56RO0.

f$ag(% Puede ser un string aco o un string binario de dos bytes compuesto de la suma de algunos de los
siguientes alores +e!adecimales7
Parmetro 2escripci'n
Y???;Y Establece )ue el control grid inicialmente est# des+abilitado.
Y???>Y 3rea un control grid mane"ado como una columna de encabe(ado.
Y???EY 3rea un control grid mane"ado como una lnea de encabe(ado.
Y???DY Permite al usuario cambiar de tama*o las columnas del grid.
Y??;?Y Establece )ue el grid inicialmente sea inisible. 0uego, el grid puede +acerse
isible con este comando7
print(sysgui)'show'(id)
Y??>?Y -ostrar lneas erticales entre columnas en Visual PRO/5 >.?!. En
Visual PRO/5 >.;? y posteriores, usar la bandera YD???Y para mostrar lneas erticales. Por
omisi'n de este alor en Visual PRO/5 >.;? y posteriores ocurre )ue no salen las lneas. Sin
embargo, en las reisiones anteriores se )uiere compatibilidad, el bit Y?DY en el byte [ debe ser
actiado, lo cual causar )ue las lneas erticales sean mostradas.
Y??E?Y -ostrar lneas +ori(ontales entre lneas.
Y??D?Y &ncluir una barra de scroll +ori(ontal en el control.
Y?;??Y &ncluir una barra de scroll ertical en el control.
Y?E??Y 3rear un bot'n de intercambio para ZclicI on, clicI offZ.
Y?D??Y 3rear un borde tridimensional pausado alrededor del control. El efecto )ue notar
es )ue el cuadriculado se e como +undido dentro del rectngulo, reduciendo
leemente el rea isible del grid.
Y;???Y 3rear un borde tridimensional leantado alrededor del control. El efecto )ue notar
es )ue el cuadriculado se e como sobrepuesto en todo el rectngulo, reduciendo
leemente el rea isible del grid.
YD???Y -ostrar lneas erticales entre las columnas.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: [?
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
En reisiones de Visual PRO/5 preias a la >.;?,
la bandera para esta caracterstica es Y??>?Y.
3uando se migre desde ersiones preias, es
necesario cambiar la bandera por YD???Y o
cambiar en el byte[ de SE6OP6S el bit Y?DY.
initro;( 59mero inicial de lneas en el grid.
Initco$( 59mero inicial de columnas en el grid.
'a"co$( -!imo n9mero de columnas )ue el grid podra llegar a tener. El n9mero de columnas puede ser
modificado en tiempo de corrida. 2efiniendo ms columnas de las necesarias en este parmetro
podra +acer )ue se agote la memoria.
co$Bea&BeigBt Prametro opcional para definir el alto de los encabe(ados de las columnas en pi!eles.
Solo funciona cuando la bandera Y???EY est actia.
co$Bea&i& Parmetro opcional para definir un 9nico control &2 para el grid )ue muestra los encabe(ados de
las columnas. Solo funciona si la bandera Y???EY es actiada.
ro;Bea&;i&tB Parmetro opcional para definir el anc+o de los encabe(ados de las lneas en pi!eles. Solo
funciona cuando la bandera Y??>? est actia.
ro;i& Parmetro opcional para definir un 9nico control &2 para el grid )ue muestra los encabe(ados de
las lneas. Solo funciona cuando la bandera Y???>Y es actiada.
E"emplos
El c'digo )ue sigue crea un control grid con el &2 ;?? )ue contendr tres lneas y tres columnas, con lneas
erticales y +ori(ontales, efecto de cuadriculado sobresaltado @raised edgeB, y sin encabe(ados de columna ni de
lnea7
sysgui=unt; open (sysgui)"X0"
print (sysgui)'window'(120,150,550,100,"Grid Ejemplo",$0082$,$FF$)
print (sysgui)'grid'(100,20,20,500,54,$9040$,3,3,5)
escape
El siguiente c'digo crea un control grid cuyo &2 es ;??, el cual tendr tres lneas y tres columnas, con lneas
erticales y +ori(ontales, efecto de cuadriculado +undido @client edgeB, y con encabe(ados de columna y de
lnea. Obsere )ue en este e"emplo, los nculos del rectngulo son un poco ms e!tensos )ue el e"emplo de
arriba y )ue el cuerpo del grid no est truncado7

sysgui=unt; open (sysgui)"X0"
print (sysgui)'window'(80,300,650,120,"Grid Ejemplo",$0082$,$FF$)
print (sysgui)'grid'(100,20,20,580,74,$8846$,3,3,5,18,101,30,102)
escape
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: [;
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
&s-ndo STL desde V)su-l :$OJ
Esta cualidad del Visual PRO/5 nos permite interactuar con diferentes ,ases de 2atos, de manera
)ue fcilmente podemos mane"ar informaci'n sin +acer uso de los tradicionales erbos del ,,!,
sino )ue por medio del famoso S40, lengua"e fabricado +ace muc+os a*os por &.,.-. y adoptado
luego como un estndar para diferentes mane"adores de ,ases de 2atos.
%na base de datos es con con"unto de datos almacenados como Zun todoZ, en donde la informaci'n
se guarda en tablas de datos compuestas de columnas y lneas. 0a informaci'n fcilmente puede ser
accesada mediante diferentes ordenamientos y relacionarse entre las diferentes tablas de datos.
$eneralmente para toda base de datos e!iste un soft/are llamado 8drier8 u O2,3, el cual le
permite a 8pa)uetes o lengua"es8 e!ternos poder accesar sus datos y ese es precisamente el medio
)ue utili(a el Visual PRO/5 para ofrecer esta enta"a. Por lo tanto, sin e!iste el O2,3 para una
base de datos e!terna, podemos decir )ue tanto Visual PRO/5 como otros, podrn entrar a dic+a
base de datos.
,asis &nternational tambi#n a fabricado su propio O2,3, para )ue desde otros lengua"es o pa)uetes
puedan accesar la ,ase de 2atos del Visual PRO/5. 2igo ,ase de 2atos del Visual PRO/5, por)ue
si )uisi#ramos, podemos seguir traba"ando ba"o el es)uema de arc+ios, a como siempre lo +emos
+ec+o, y si )uisi#ramos, tambi#n podemos seguir traba"ando los datos propios o natios del Visual
PRO/5 como una ,ase de 2atos completamente relacional, en donde ya no es necesario estar dando
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: [>
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
OPE5 a cada arc+io, sino )ue se da un solo OPE5 a la ,ase de 2atos, como Zun todoZ y por una
sola e(.
Enti#ndase bien, )ue el O2,3 de ,asis no es necesario para )ue el Visual PRO/5 pueda mane"ar la
,ase de 2atos propia. Este O2,3 es necesario solamente para otros lengua"es o pa)uetes puedan
accesar la ,ase de 2atos del Visual PRO/5. 0os 9nicos O2,3 necesarios para el Visual PRO/5 son
a)uellos propios de la ,ase de 2atos e!terna )ue )uisi#ramos accesar.
2entro del panel de control del .indo/s, e!iste uno o dos iconos para O2,3. %no es para O2,3s
de ;A bits @.indo/s C.; y C.;;B y el otro para O2,3s de C> bits @.indo/s G5, GD y 56B. Resulta
siempre ms rpido el desempe*o con los de C> bits. 1l +acer doble clicI sobre el icono de los
O2,3 nos aparece un conte!to )ue nos muestra las diferentes ,ases de 2atos declaradas en esa
m)uina. %n mismo O2,3 perfectamente puede ser utili(ado para accesar diferentes ,ases de
2atos en una m)uina. Por e"emplo7 podran tenerse arias bases de datos de FOU y uno
necesitara decir en alguna parte cul es la )ue le interesa. Sobre los O2,3 ya no amos a +ablar
ms, ya )ue eso es tema aparte del )ue a+ora nos interesa.
Parte de lo )ue se )uiere dar a entender en el prrafo anterior, es )ue las ,ases de 2atos e!ternas se
pueden er definidas en el correspondiente icono en el panel de control del .indo/s. 3laro debe
)uedar entonces, )ue si se opta por traba"ar ba"o el concepto de una ,ase de 2atos, es
completamente necesario entender )ue debemos contar con un 2iccionario de 2atos, lo cual nos
garanti(a un me"or control y ordenamiento de la informaci'n almacenada, mayor facilidad para el
desarrollo de aplicaciones y su posterior mantenimiento.
Si nuestro deseo es traba"ar con la ,ase de 2atos del Visual PRO/5 como tal, inicialmente
necesitamos definirla en un arc+io de te!to llamado (C$ini, definido en el mismo directorio donde
est el e"ecutable del Visual PRO/5 @pro5.e!eB, el cual estar apuntando +acia un arc+io
config.6P- por cada base de datos a+ declarada.
El siguiente es un e"emplo del contenido de un arc+io (C$ini
; Top of config file OD Esta lTnea es n "omentario op"ional
[BASIS Data Sources] OD Esta lTnea *eEe ser es"rita eNa"tamente asTL
Chile Company OD 1omEre *e la primer Ease *e *atosL
CD-Store OD 1omEre *e la segn*a Ease *e *atosL
Cuentas por Cobrar OD 1omEre *e otra Ease *e *atosL
OD Esta lTnea en Elan"o es oEligatoriaL
[Chile Company] OD 3e"lara"iBn *e Ei"a"iBn *e la primer AaseL
CONFIG=C:\BASIS\TOOLS\CHILEDD\config.tpm
OD /Tnea en Elan"o oEligatoriaL
[CD-Store] OD 3e"lara"iBn *e Ei"a"iBn *e la segn*a AaseL
CONFIG=C:\BASIS\TOOLS\GUIBUILD\CD-STORE\config.tpm
<- /Tnea en Elan"o oEligatoriaL
[Cuentas por Cobrar] <- 3e"lara"iBn *e Ei"a"iBn *e la ter"er AaseL
CONFIG=C:\basis\CURSOVP5\BBDICT\Curso.tpm
; Bottom of config file OD Comentario op"ional igal Ie la primer lTnea
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: [C
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
En este arc+io (C$ini se definen tres ,ases de 2atos y el directorio donde estas se encuentran
ubicadas est definido en el arc+io cuyo nombre termine con t*' de cada una de las lneas
inferiores. El nombre de una base de datos puede estar compuesto por arias palabras. 0o
importante de recordar es )ue posteriormente la ,ase de 2atos debe ser abierta con ese mismo
nombre, respetando las letras may9sculas, min9sculas y espacios intercalados entre palabras.
Obseraci'n muy importante7 en el arc+io config.bb! en su 9ltima lnea de te!to aparece lo
siguiente7 M(C$
Es necesario por medio de alg9n editor eliminar el signo f para )ue la operaci'n del S40 ba"o
Visual PRO/5 )uede +abilitada.
Em9eO-ndo - 9+o1-+ el STL
En el entendido de )ue este no es un curso de S40, amos a ir iendo pe)ue*os programas )ue nos
mostraran como interactuar con la 2atos )ue nos interese. 2ebemos comprender )ue aun)ue S40
es un estndar entre las diferentes ,ases de 2atos, generalmente todas tienen ciertas caractersticas
propias dentro de la sinta!is del lengua"e. 2ic+o de otra manera, un resultado e)uialente con
diferentes ,ases de 2atos, podra re)uerir la sinta!is propia para cada una.
Para aclarar ms lo descrito en el prrafo anterior, se puede decir )ue con las ,ases de 2atos
e!ternas, no es Visual PRO/5 )uien e"ecuta las instrucciones de S40, #l se limita 9nicamente a
enirselas al mane"ador de la ,ase de 2atos a tra#s del O2,3. 3ual)uier error )ue ocurriera con
la sinta!is eniada es captado por el Visual PRO/5 y podramos desplegado si lo )uisi#ramos.
Para familiari(arlo con la sinta!is del S40 amos a mostrar los erbos utili(ados con ,,! para uso
y acceso a los arc+ios y el e)uialente dentro del S40.
Co'an&o en Vi(#a$ PRO/5 EC#iIa$ente en SNL
-VEJE2 ZfileZ 3RE16E 61,0E
ER1SE ZfileZ 2ROP 61,0E
OPE5 @canalBZfileZ no se da por arc+io pero si a la ,ase de 2atos
RE12 SE0E36
.R&6E nueo registro &5SER6
EU6R136/.R&6E %P216E
RE-OVE 2E0E6E
Para saber si tengo posibilidad de accesar alguna ,ase de 2atos se escribe7
bPR&56 S400&S6@?B y me debern aparecer los nombres de estas.
E"emplo7
CBi$e Co'*an3
CDOStore
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: [E
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
C#enta( *or Co!rar
-S 1ccess G[ 2atabase
d,1SE Files
E!cel Files
Fo!Pro Files
6e!t Files
,1S&S 3+ile 3ompany 2atabase
3on esa lista de ,ases de 2atos, lo 9nico )ue nos )uedara por +acer es abrir la )ue necesitemos y
comen(ar a traba"ar. Para abrir una ,ase de 2atos usamos la siguientes instrucci'n7
>SQLOPEN (1)"CBi$e Co'*an3"
E!iste una forma rpida de saber cules son las tablas de datos de la ,ase de 2atos abierta
escribiendo7
>PRINT SQLTABLES(1) y aparecern los nombres de las tablas disponibles.
0o )ue nos )ueda por er es como accesar una tabla de datos. Para eso se necesita a9n tres pasos7
;B Preparar la sinta!is del S40 a e"ecutar, por e"emplo7
>SQLPREP (1)"select * from item price<4.5"
>B Obtener la estructura o formato de su contenido, por e"emplo as7
>DIM REG$:SQLTMPL(1)
CB Sacer )ue se e"ecute el S40 as7
>SQLEXEC (1)
EB &nstrucci'n para indicar )ue los registros de la tabla an a ser ledos secuencialmente7
>REG$=SQLFETCH(1,ERR=FINAL)
5B 3on una lnea como la siguiente se logra el despliegue de algunos de los campos del registro7
>PRINT reg.item_num$," ",reg.description$," ",reg.price
0os siguientes son e"emplo de arios programas )ue utili(an S40. El primero define una tabla de
datos llamada PR%E,1 y permite insertarle registros. 5ote )ue con ,ases de datos natias ya no se
permite usar tipos de campo 5%-ER&3/2E3&-10, pero puede usar F0O16/2O%,0E/RE10. El
uso de parmetros como el signo de pregunta @XB con S40, +ace ms parametrisable sus
aplicaciones y se presta para desarrollar funciones y rutinas de prop'sito general. Obsere como se
aplica en las lneas ??D? y ?;C?.
0010 REM "Crear Tabla y agregar nuevos registros
0020 BEGIN
0030 LET db=SQLUNT; SQLOPEN (db)"Cuentas por Cobrar"; REM "Abre Base de Datos
0040 SQLPREP (db)"Drop table PRUEBA"; SQLEXEC (db,ERR=0050); REM "Elimina Tabl
0040:a PRUEBA
0050 INPUT (0,LEN=3)"De que longitud quiere que sea el campo para el nombre: "
0050:,long:(128); IF long=0 THEN STOP
0060 SQLPREP (db)"Create table PRUEBA (num_orden char(4) primary key, cliente
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: [5
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
0060:char("+STR(long)+"), tot_orden real)"
0070 SQLEXEC (db)
0080 SQLPREP (db)"Insert into PRUEBA values(?,?,?)"
0090 loop:
0100 INPUT (0,LEN=4)'LF',"No.Orden> ____",@(10),ord$; IF ord$="" OR CVS(ord$,4
0100:)="F" THEN GOTO final
0110 INPUT (0,LEN=long)"Cliente.> ",clt$; IF clt$="" OR CTL>1 THEN GOTO loop
0120 INPUT (0,LEN=10)"Total...> ",tot; IF CTL>1 THEN GOTO 0120
0130 SQLEXEC (db)ord$,clt$,tot
0140 GOTO loop
0150 REM
0160 final:
0170 INPUT (0,LEN=1)'LF',"Quiere hacer variaciones a los registros recien incl
0170:uidos? (ENTER=Si, 1=No): ",mant$:(""=0180,"1"=0190)
0180 RUN "upda_tab.bbx"
0190 END
El siguiente programa lee todos los registros arriba insertados y los despliega por pantalla.
0010 REM "Lista Tabla de Clientes desde BBx
0020 BEGIN
0100 SQLOPEN (1)"Cuentas por Cobrar"
0130 SQLPREP (1)"Select * from PRUEBA"
0140 LET a$=SQLTMPL(1); SQLEXEC (1)
0145 DIM r$:a$
0150 LET r$=SQLFETCH(1,ERR=final)
0160 PRINT r.num_orden$," ",r.cliente$,r.tot_orden
0180 GOTO 0150
0190 REM
0200 final:
0210 END
Este programa utili(a la misma tabla de datos del programa anterior y permite ariar el nombre del
cliente. 1+ se puede obserar la forma en )ue definimos el campo )ue a a ser ariado por medio
de un parmetro indicado con el signo de pregunta @XB.
0010 REM "Actualiza campo en tabla de datos PRUEBA
0020 BEGIN
0040 LET db=SQLUNT; SQLOPEN (db)"Cuentas por Cobrar"
0060 REM
0070 pide_cambio:
0080 INPUT (0,LEN=4)'LF',"Dar un numero de Orden: ",orden$; IF orden$="" THEN
0080:GOTO final
0090 SQLPREP (db)"select * from PRUEBA where num_orden='"+orden$+"'"
0100 DIM ord$:SQLTMPL(db); LET long=LEN(ord.cliente$)
0110 SQLEXEC (db)
0120 LET ord$=SQLFETCH(db,ERR=error)
0130 PRINT ord.cliente$," ",ord.tot_orden
0150 REM
0160 INPUT (0,LEN=long)"Dar nuevo nombre para el cliente:",'LF',nuevo$; IF nue
0160:vo$="" THEN GOTO pide_cambio
0170 SQLPREP (db)"update PRUEBA set cliente=? where num_orden='"+orden$+"'"
0180 SQLEXEC (db)nuevo$
0190 GOTO pide_cambio
0200 REM
0210 error:
0220 IF ERR=2 THEN INPUT (0,SIZ=1)"No existe ",*; GOTO pide_cambio
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: [A
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
0230 REM
0240 final:
0250 END
El programa )ue sigue es una modificaci'n del anterior para )ue pueda eliminar registros
0010 REM "Elimina registros de Ordenes de Compra en PRUEBA
0020 BEGIN
0040 SQLOPEN (1)"Cuentas por Cobrar"
0060 REM
0070 pide_num_orden:
0080 INPUT (0,LEN=4)'LF',"Dar numero Orden a eliminar: ",orden$; IF orden$=""
0080:THEN GOTO final
0090 SQLPREP (1)"select * from PRUEBA where num_orden='"+orden$+"'"
0100 DIM ord$:SQLTMPL(1)
0110 SQLEXEC (1)
0120 LET ord$=SQLFETCH(1,ERR=error)
0130 PRINT ord.cliente$," ",ord.tot_orden
0150 REM
0160 INPUT (0,LEN=1)"Elimina ese registro? (ENTER=Si, 1=No): ",elimina$:(""=01
0160:70,"1"=pide_num_orden)
0170 SQLPREP (1)"delete from PRUEBA where num_orden='"+orden$+"'"
0180 SQLEXEC (1)
0190 GOTO pide_num_orden
0200 REM
0210 error:
0220 IF ERR=2 THEN INPUT (0,SIZ=1)"No existe ",*; GOTO pide_num_orden
0230 REM
0240 final:
0250 END
El siguiente programa nos +ace un tabulado de salarios, con cortes de control por compa*a, ba"o la
condici'n de )ue solo considere los salarios menores o iguales a 5??,???. Obsere como se aplica
el parmetro 3O%56@`B para obtener el total de registros por compa*a y S%-@salarioB para
indicar )ue ocupamos la sumatoria de salarios por compa*a.
0010 REM "Tabula salarios por compaa ignorando salarios mayores de 500000
0020 BEGIN
0030 LET pla=SQLUNT; SQLOPEN (pla)"Cuentas por Cobrar"
0040 SQLPREP (pla)"select numcia, count(*), sum(salario) from empleado
0040:WHERE salario<=5000000 GROUP by numcia"
0050 DIM emp$:SQLTMPL(pla)
0060 SQLEXEC (pla)
0070 LET emp$=SQLFETCH(pla,ERR=0090)
0080 PRINT emp.numcia$,emp.col002
0085 GOTO 0070
0090 END
Este pe)ue*o programa lee un arc+io de FOU y nos muestra los datos ordenados por nombre del
asociado7
0010 REM "Leer base datos FOX
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: [[
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
0020 BEGIN
0070 SQLOPEN (1)"Fox Asociacion"
0100 SQLPREP (1)"select * from asociado order by asociado.nombre"
0110 DIM dato$:SQLTMPL(1)
0120 SQLEXEC (1)
0130 LET dato$=SQLFETCH(1,ERR=final)
0140 PRINT dato.ced$," ",dato.nombre$
0150 GOTO 0130
0160 REM
0170 final:
0180 END
El Ie sige nos mestra los *atos pro+enientes *es*e *AA-EL
0010 REM "Listar Registros de archivo.dbf Banco Popular"
0020 BEGIN
0030 SQLOPEN (1)"dBASE Files"
0040 SQLPREP (1)"select * from 109362"
0050 DIM r$:SQLTMPL(1); SQLEXEC (1)
0060 LET r$=SQLFETCH(1,ERR=final)
0070 PRINT r.cedula$," ",PAD(r.nombre$,32),r.ahotot
0080 GOTO 0060
0090 final:
0100 END
3on los e"emplos mostrados se muestra como se pueden efectuar las operaciones bsicas de acceso
a una determinada ,ase de 2atos, utili(ando instrucciones bsicas y estndar de S40. Procesos
ms sofisticados pueden ser reali(ados siempre y cuando el mane"ador de la ,ase de 2atos en uso
e!terno lo permita.
Para a)uellos )ue a9n no usan S40 recuerden )ue una de las enta"as principales de usar S40 en
sus aplicaciones es la independencia de ,ase de 2atos )ue se obtiene. Es decir, si se usa S40 para
el mane"o de arc+ios su aplicaci'n es porttil y potencialmente se puede instalar con una ,ase de
2atos e!terna como Oracle, Sybase, Fo!, etc. Esto puede +acer su aplicaci'n ms mercadeable
entre usuarios )ue tengan aplicaciones en otras bases de datos. Por e"emplo, puede ender un
sistema de 5'mina )ue actualice un -ayor $eneral residente en Oracle.
El uso de S40 re)uiere cambios en la aplicaci'n ya )ue los comandos y mane"o de arc+ios es
diferente. Por lo general deben asumir un tiempo de aprendi(a"e si no +an usado S40
anteriormente. 6ambi#n S40 es menos eficiente )ue el acceso normal )ue siempre +a ofrecido el
,,! @RE12 RE3OR2, .R&6E RE3OR2, etc.B por su estilo de mane"o de con"untos de registros
@record setsB en lugar de registros indiiduales. Por otro lado, al mane"ar con"untos puede ser ms
eficiente en modo cliente/seridor ya )ue se minimi(a la actiidad entre el seridor y el cliente al
procesar grupos de registros. 3on la tendencia +acia procesadores ms eloces la menor eficiencia
en acceso naegacional es en algunos casos un factor de menor peso )ue lograr portabilidad en el
sistema de arc+ios.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: [D
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
El O2,3 de ,asis emite una documentaci'n )ue muestra la sinta!is de S40 )ue permite el Visual
PRO/5, para traba"ar con la ,ase de 2atos natia o propia del Visual PRO/5.
DBn-m)* D-t- E=*;-n?e
2ynamic 2ata E!c+ange es una facilidad )ue tambi#n nos brinda el Visual Pro/5, ya )ue con esta opci'n
podemos accesar documentos )ue est#n cargados en la memoria de la estaci'n de traba"o, como lo son
documentos de .ord, E!cel, 0otus y otros. Por e"emplo, desde E!cel podemos abrir una +o"a electr'nica
cargada de datos )ue perfectamente podemos leer o modificar desde Visual Pro/5. El re)uerimiento para
este tipo de programa es )ue por aparte se necesita conocer los parmetros necesarios para interactuar con
el documento en memoria, ya )ue estos parmetros no son algo propio del Visual Pro/5.
El programa )ue a continuaci'n se muestra permite cargar las celdas de una +o"a )ue tengamos abierta con
E!cel. Est bastante documentado con RE-s )ue an e!plicando el proceso. 5ote )ue en la lnea ?;C? se
+ace la adertencia de )ue el programa debe condicionarse para cuando se usa E!cel en espa*ol o en
ingl#s.
0010 REM "Muestra como CARGAR datos en una hoja de Excel en memoria
0020 REM "Se requiere que el archivo Excel exista y que Excel este abierto
0030 BEGIN
0040 REM "La siguiente linea comprueba que Excel este abierto
0050 LET xls=UNT; OPEN (xls,MODE="DDECLIENT",ERR=xls_no_abierto)"EXCEL:SYSTEM"
0060 INPUT "Dar nombre del archivo de Excel (ENTER=Ninguno): ",arch$:(""=final
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: [G
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
0060:,LEN=1,18); IF POS(".xls"=CVS(arch$,8))=0 THEN LET arch$=arch$+".xls"
0070 LET cmd$="[OPEN(""C:\temp\"+arch$+""")]"+$00$
0080 REM "La siguiente linea carga el archivo indicado en memoria
0090 WRITE RECORD(xls,KEY="DDE_EXECUTE",ERR=xls_no_abierto)cmd$
0100 CLOSE (1); REM "Despues de ponerlo en memoria hay que cerrar el canal
0110 REM "La siguiente linea abre el acceso hacia el Excel en memoria
0120 OPEN (1,MODE="DDECLIENT")"EXCEL:c:\temp\"+arch$
0130 REM "Abajo, para Excel en Ingles debe usar RxCx y para Espanol FxCx
0140 REM
0150 LET cli=UNT; OPEN (cli)"CLIENTE.tpl"; FIND (cli)tpl$; CLOSE (cli); OPEN (
0150:cli)"CLIENTE.dat"; DIM cli$:tpl$
0160 REM
0170 leer:
0180 READ RECORD(cli,END=final)cli$
0190 LET lin=lin+1
0200 WRITE (xls,KEY="F"+STR(lin)+"C1")cli.codigo$
0210 WRITE (xls,KEY="F"+STR(lin)+"C2")cli.nombre$
0220 WRITE (xls,KEY="F"+STR(lin)+"C3")STR(cli.region)
0230 GOTO leer
0240 REM
0250 xls_no_abierto:
0260 INPUT (0,SIZ=1)"Favor de abrir Excel antes de continuar ",*; GOTO 0030
0270 REM
0280 arch_no_abierto:
0290 RETRY
0300 REM
0310 final:
0320 END
%n poco similar al anterior, el siguiente programa nos ense*a como podemos leer los datos en las celdas de
una +o"a electr'nica )ue necesariamente primero debe ser abierta @cargada en memoriaB por E!cel.
&gualmente al programa anterior, +ay )ue tomar la preisi'n para los casos en E!cel est# en ingl#s o en
espa*ol.
0010 REM "Muestra como LEER un archivo de Excel
0020 REM "Se requiere que el archivo Excel exista y que Excel lo tenga abierto
0030 BEGIN
0040 REM "La siguiente linea comprueba que Excel este abierto
0050 LET xls=UNT; OPEN (xls,MODE="DDECLIENT",ERR=xls_no_abierto)"EXCEL:SYSTEM"
0060 INPUT "Dar nombre del archivo de Excel (ENTER=Ninguno): ",arch$:(""=final
0060:,LEN=1,18); IF POS(".xls"=CVS(arch$,8))=0 THEN LET arch$=arch$+".xls"
0070 LET cmd$="[OPEN(""C:\My document1\"+arch$+""")]"+$00$
0080 REM "La siguiente linea carga el archivo indicado en memoria
0090 WRITE RECORD(xls,KEY="DDE_EXECUTE",ERR=arch_no_existe)cmd$
0100 CLOSE (1); REM "Despues de ponerlo en memoria hay que cerrar el canal
0110 REM "La siguiente linea abre el acceso hacia el Excel en memoria
0120 OPEN (1,MODE="DDECLIENT")"EXCEL:c:\My document1\"+arch$
0130 REM "Abajo, para Excel en Ingles debe usar RxCx y para Espanol FxCx
0140 REM
0150 leer:
0160 LET lin=lin+1
0170 READ RECORD(xls,KEY="F"+STR(lin)+"C1")a$
0180 READ RECORD(xls,KEY="F"+STR(lin)+"C2",ERR=final)b$
0190 READ RECORD(xls,KEY="F"+STR(lin)+"C3",ERR=final)c$
0200 PRINT a$,"-",b$,"-",c$
0210 INPUT ":",*
0220 GOTO leer
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: D?
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
0230 REM
0240 xls_no_abierto:
0250 INPUT (0,SIZ=1)"Favor de abrir Excel antes de continuar ",*; GOTO 0030
0260 REM
0270 arch_no_existe:
0280 RETRY
0290 REM
0300 final:
0310 END
Para pasar datos desde Pro/5 o Visual Pro/5 +acia E!cel tambi#n e!isten otras buenas formas de lograrlo7
;B Por medio de un arc+io de te!to en el )ue se utili(a Y?GY como separador de campos. Ese +e!adecimal
le es ms natural a E!cel, ya )ue por 8default8 ese es el separador )ue internamente utili(a.
>B Por medio de un arc+io de te!to en el )ue se utili(an comas como separador de campos y luego
8pegarlo8 por medio de los erbos y funciones 30&P...... )ue ofrece el Visual PRO/5. Funciona muy bien
pero tiene el inconeniente de dar problema si e!isten comas dentro de los datos a ser eniados @como a
eces ocurre en las direccionesB. 0o )ue +ace Visual Pro/5 con esos mnem'nicos es colocarlo en el
portapapeles de .indo/s, y despu#s en E!cel se le da clic al bot'n pegar y listo. 3omo di"e, con
anticipaci'n se necesita crear un arc+io de te!to @StringB, y eniar el reporte a este arc+io con los campos
separados por comas. 0uego, al finali(ar el reporte se cierra el canal del arc+io de te!to y se le da las
siguientes instrucciones, donde 3lipY es igual al nombre del arc+io de te!to
"s+="lipregformat;"C-'"<
"liplo"Q
"lipfromfile "s+!"lipF
"lipnlo"Q
El siguiente es una muestra de un programa )ue logra +acer eso7
0010 REM "Clip_xls Carga datos en archivo de texto a una hoja de Excel
0020 BEGIN
0030 LET sep$=",",txt=UNT,temp$="temp.txt"; OPEN (txt,MODE="O_CREATE")temp$
0040 PRINT (txt)"articulo"+sep$+"Descripcion"+sep$+STR(3132500)
0050 PRINT (txt)"codigo"+sep$+"nombre"+sep$+STR(316354458)
0060 CLOSE (txt)
0070 LET csv=CLIPREGFORMAT("CSV")
0080 CLIPLOCK
0090 CLIPFROMFILE csv,temp$
0100 CLIPUNLOCK
0110 LET m=MSGBOX("Ahora puede pegar los datos en una hoja de excel",64,"Excel
0110:")
0120 ERASE temp$
0130 END
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: D;
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
V ) s u - l :$OUJ 8 l o s - + ) o d e t V + m ) n o s 8 & I
5ota7 -uc+as de estas palabras tienen usos y significados ms generales. En el sentido )ue se le da a las
palabras, a)u nos referimos solamente el Visual PRO/5, SJS$%&.
Ace$erator: @aligeradorB una combinaci'n de teclas )ue pueden sustituirse por un tem de men9,
+asta cuando el men9 no est# actio.
!it'a*: @mapa de bitsB una imagen grfica almacenada simplemente como un arreglo de pi!eles,
listando alores de color para cada uno.
!or&er: @bordeB el borde de una entana grfica.
!or&er &ecoration(: er /indo/ decorations.
!o#n&ing rectang$e: @coordenadas del rectnguloB cuatro n9meros )ue describen la ubicaci'n de la
es)uina superior i()uierda, el anc+o y altura de un control grfico o entana.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: D>
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
!#tton: @bot'nB un control $%& estndar )ue emula el comportamiento de un bot'n de pulsar
fsico.
caret: @cursorB el McursorM usado para marcar el punto de inserci'n de te!to en las ca"as de edici'n
y controles similares.
cBar(: @caracteresB una unidad de medida igual a la altura e!acta y anc+o tpico de un caracter en la
fuente del sistema en uso.
cBecG !o": @ca"a c+e)ueableB un control $%& estndar con dos estados, c+e)ueado y des<
c+e)ueado. 3a"as c+e)ueadas pueden ser usadas en grupos pero no son e!clusios de los botones
de radio.
cBecGa!$e 'en# <te': un tem en un men9 ^pull<do/n_ con un c+ecI marcado como ariable,
cuando opera.
cBecGe&: @c+e)ueableB se dice )ue un control es c+e)ueable cuando este es marcado. ,otones de
radio, ca"as de c+e)ueo, men9s de tems c+e)ueables, y +asta botones +erramienta ariables pueden
ser c+e)ueados.
cBi$& ;in&o;: @entana +i"aB una entana )ue es contenida completamente dentro de otra entana.
c$ient area: la porci'n de una entana en donde se muestra su contenido. Se e!cluye el borde, la
barra de despla(amiento, la ca"a de cierre, y cual)uier otra Mdecoraci'nM de borde.
c$i*!oar&: @tableroB un almacenamiento de informaci'n temporal, y facilidad de recuperaci'n de
-icrosoft .indo/s y otros ambientes de graficaci'n similar. 0as operaciones )ue se pueden
reali(ar tienen nombres estndar. 0a operaci'n de M3ortarW elimina informaci'n de una ubicaci'n
original y la almacena en el ^clipboard_. 0a operaci'n de M3opiarW de"a la informaci'n original en
su lugar pero pone una copia de ella en el ^clipboard_. Finalmente, la operaci'n de MPegarW copia
la informaci'n del ^clipboard_ en el control o documento en uso, y la inserta a partir del punto
marcado por el cursor.
c$o(e !o": @bot'n de cierreB un dibu"ito en la parte superior derec+a de la entana, )ue le permite al
usuario despedir o desaparecer la entana cuando opera.
conte"t: @conte!toB un &2 num#rico asociado con cada entana de SJS$%&. Esto da la posibilidad
de poder manipular arias entanas a la e(.
contro$: un ob"eto $%& )ue permite recopilar entradas del usuario y las reporta a la aplicaci'n de
una manera pronosticable. Visual PRO/5 ofrece apoyo a once controles estndar de .indo/s y un
mano"o de conocidos controles de prop'sito especial. E"emplos7 botones de pulsar, ca"as de
edici'n, botones de radio.
CONDROL coor&inate(: cada entana de SJS$%& puede mostrar controles as como detalles
dibu"ados. 0os controles son ploteados utili(ando coordenadas de control. Estos pueden ser
suministrados en NP&UE0SO, N3S1RSO o NSE-&3S1RSO, y pueden ser NescaleadosO por medio del
mnem'nico NS310EO.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: DC
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
c#e: @colaB una pe)ue*a entana se abre y/o un comentario en la barra de condici'n aparecen
cuando el rat'n es pasado sobre un control particular. Frecuentemente, una cola gua a usuarios
principiantes a tra#s de la operaci'n de una aplicaci'n. Son especialmente 9tiles con barras de
+erramientas, )ue pueden ser ocupadas con botones +erramientas )ue contienen ^bitmaps_ en lugar
de te!to.
c#r(or: el cursor de te!to es un blo)ue )ue indica donde el siguiente caracter de te!to entrar una
entana de caracteres. El cursor del rat'n @tambi#n conocido como el apuntador del rat'nB es un
smbolo pe)ue*o @generalmente una flec+aB )ue se muee en la pantalla, pudi#ndose rastrear el
moimiento del rat'n.
c#(to' e&it: un control de edici'n de te!to multi<lnea suministrado por Visual PRO/5.
&efa#$t !#tton: el bot'n de pulsar es una ca"a de dilogo )ue ser actiada si la tecla E56ER es
presionada. $eneralmente un rectngulo de negro espeso es dibu"ado a su alrededor.
&ia$og: @dilogoB una entana cuyos controles son naegables por medio del teclado. %n dilogo
puede ser modal @usuario tiene )ue responder antes de continuarB o sin modo @usuario puede de"ar
el dilogo y regresar posteriormenteB.
&i(a!$e&: @desactiadoB las entanas y controles )ue est#n desactiados son isibles pero no
pueden ser moidos u operados de cual)uier modo por el usuario.
&ocGing cBi$& ;in&o;: normalmente una entana +i"a reside dentro del rea de cliente del padre.
1l rescindir de entanas +i"as )uedan inculadas por si mismas al interior del borde del padre en
lugar del rea del cliente.
&rag: @arrastrarB despla(ar el bot'n del rat'n de un lugar a otro, manteniendo el bot'n de este
oprimido durante el trayecto, as es como por medio del rat'n se causa )ue ob"etos moibles sean
moidos a tra#s de la pantalla.
&ra; 'o&e: determina lo )ue ocurre cuando un ob"eto es apro!imado a la parte superior de otro.
0os modos de arrastre ms comunes son 3OP&1R @nueos ob"etos son inducidos sobre los ie"osB
y UOR @nueos ob"etos son reempla(ados por ie"os, de modo )ue un segundo dibu"o del mismo
nueo ob"eto anular los dibu"ados primeroB.
DRA=ING coor&inate(: cada entana de SJS$%& puede mostrar controles as como tems
dibu"ados. 0os tems dibu"ados son ploteados utili(ando coordenadas dibu"adas. Esto puede ser
suministrado en pi!eles @lo )ue se asume si no +ay otra indicaci'nB o mil#simas de una pulgada.
Para seleccionar unidades de dibu"o, use el mnem'nico N2R1.5&6SO.
E&it !o"7 @ca"a de edici'nB un control $%& estndar )ue permite al usuario editar una lnea 9nica de
te!to.
eIent: el reporte generado por el sistema $%& cuando el usuario opera un control o de otra manera
interact9a con un ob"eto grfico.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: DE
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
eIent $oo*: "uego de instrucciones de un programa donde una cola de eentos es leda en un loop,
para responder a eentos +asta )ue un eento especial @)ui(s la operaci'n de una ca"a de cierreB
rompa el ciclo.
eIent 'a(G: @mscara de eentosB un string de bits )ue indican en cierta medida )u# clase de
informes deberan ser generados por el sistema $%&, en respuesta a una interacci'n de usuario.
eIent C#e#e: @cola de eentosB el buffer 9nico en el )ue los informes de eento son guardados por
todas las entanas de SJS$%&. Este puede ser ledo con RE12 RE3OR2, y nielado con el
mnem'nico NF0%SSO.
eIentO&riIen: dic+o de un programa )ue es dise*ado para responder a eentos. Vea tambi#n7 eent
loop.

f$ag(: @banderasB un string de bits usados en la creaci'n de entanas y controles )ue determinan
cual de los parmetros opcionales es seleccionado.
foc#(: @enfo)ueB cual)uier entana o control de edici'n recibir entrada mecanografiada por el
teclado cuando tiene enfo)ue.
font: @fuenteB un tipo de letra.
generic contro$: cual)uiera de los controles disponibles en Visual PRO/5 son controles estndar de
.indo/s y no controles acostumbrados. 0os controles gen#ricos son natios de .indo/s y as
traba"an ms rpidos y estn menos ba"o el control de ,1S&S.
graIit3: @graedadB una opci'n de entana )ue causen )ue sus entanas +i"as se redistribuyan por
si mismas, siempre )ue la entana madre es cambiada de tama*o. Puede ser muy 9til para las barras
de +erramientas.
gro#*: los controles pueden ser MagrupadosM en diersos modos. Pueden ser tratados como un set
para naegaci'n de teclado, y botones de radio pueden ser agrupados l'gicamente de modo )ue se
e!cluyan unos a otros. Estos agrupamientos usualmente corresponden, pero esto no es un re)uisito.
0os controles pueden tambi#n tener una ca"a de grupo dibu"ada alrededor a ellos. 0a ca"a de grupo
no tiene efecto en la operaci'n de los controles o en la naegaci'n de teclado.
gro#* !o": @ca"a de grupoB un control estndar $%& )ue proee una asociaci'n isual entre
controles. 5o afecta la operaci'n de la naegaci'n de controles o teclado de alguna manera. 0as
ca"as de grupo nunca generan eentos, ni consumen clicIs del rat'n. Son, sin embargo, opacas.
6odos los dems controles aparecern delante, pero tems dibu"ados sern oscurecidos por una ca"a
de grupo.
GUI: &nterfase $rfica del %suario
Bot Ge3: @teclas calientesB una forma rpida por medio del teclado para desempe*ar una acci'n )ue
de otra manera re)uiere una acci'n del rat'n, o al menos ms golpes de tecla. -nem'nicos de
men9 y los aceleradores son e"emplos de teclas calientes. 3ontroles como los botones de pulsar
pueden tambi#n tener teclas calientes.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: D5
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
icon: @iconoB un pe)ue*o ^bitmap_ )ue usualmente es conectado l'gicamente con ya sea una
aplicaci'n o un documento.
iconiHe&: minimi(ado.
i&: un n9mero )ue es utili(ado para identificar y distinguir ob"etos en un conte!to de SJS$%&.
3ual)uier n9mero desde el ; al C>[A[ puede ser usado, aun)ue del ; al GG estn Mreserados M. &2 ?
casi siempre es asignado a la entana en uso.
inIi(i!$e: un control o entana puede estar e!istiendo, y puede ser locali(ado en el mismo lugar,
pero es +ec+o inisible. Esto uele al control inoperable para el usuario, por supuesto, +asta )ue
sea +ec+o de nueo isible.
Ge3!oar& naIigation: @naegaci'n de tecladoB los dilogos usan ciertas teclas estndar para
moerse entre los controles disponibles y los operan. Seleccionando naegaci'n de teclado se
permite este comportamiento.
$i(t !o": @ca"a de listaB un control $%& estndar )ue suministra una lista de tems @a eces con
scrollB para )ue el usuario pueda +acer selecciones. 1lgunas ca"as de lista pemiten m9ltiples
selecciones, y todas pueden reportar los clicIs y los doble<clicIs en todos los tems.
$i(t !#tton: @botones de listaB un bot'n $%& estndar )ue permite al usuario escoger uno entre una
lista de posibilidades. 0a lista es mostrada solamente cuando la porci'n del bot'n del control es
operado. la mayor parte del tiempo el control ocupa solamente la parte superior de su rectngulo
unificador.
$i(t e&it: un control $%& estandar )ue es muy similar a un bot'n de lista, e!cepto )ue el usuario
puede seleccionar una de las opciones disponibles `o` mecanografiar te!to )ue no +a sido incluido
en la lista.
'a"i'iHe: @ma!imi(arB para lograr )ue una entana ocupe todo el espacio disponible @entana de
la pantalla o entana padreB como sea posible. .indo/s proee un dibu"ito en la parte superior
derec+a de la entana )ue permite esta acci'n.
'enP: una lista de posibilidades )ue pueden ser operadas con el rat'n. 0os men9s pueden contener
otros men9s @sub<men9sB.
'en# <te': @men9 de opcionesB un tem en un men9. El tem de un men9 ordinario causa )ue un
comando sea eniado cuando este es operado. Otros tipos de tems de men9 son tems de men9
c+e)ueables @estos cambian la condici'n de c+e)ueado cuando son operadosB, separadores @estos
aparece simplemente como una lnea +ori(ontal )ue no puede ser operadaB, y otros men9s @sub<
men9sB.
'en# 'ne'onic: si una letra o smbolo en un men9 de tems es mostrado subrayado, entonces
usted puede mecanografiar la letra o smbolo )ue causa )ue ese tem del men9 sea actiado. 0os
mnem'nicos de men9 traba"an solamente cuando el men9 en particular est desplegado.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: DA
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
'en# tag: @la eti)ueta de men9B un n9mero )ue 9nicamente identifica un 9nico tem del men9. 0as
eti)uetas de men9 son separadas desde los &2s de los controles, de modo )ue el mismo n9mero
puede ser usado por ambos sin ning9n da*o.
'en#!ar: @barra del men9B el men9 de niel<superior )ue es mostrado a tra#s de la parte superior
de una entana.
'ini'iHe: @minimi(arB acci'n )ue se toma para lograr )ue una entana sea representada como un
icono.
'o&a$: un dilogo modal tiene )ue ser despedido antes de )ue la aplicaci'n pueda continuar. @er
modelessB.
'o&e$e((: un dilogo sin uso puede continuar siendo mostrado mientras otras entanas sean
operadas. @er modalB.

*ict#re !#tton: un bot'n +erramienta dispuesto para mostrar un ^bitmap_ en el rea del cliente.
*i"e$(: una unidad de medida igual a un elemento de pi!el @un punto en la pantalla o disp'sitio de
despliegueB.
ra&io !#tton: @bot'n de radioB un control $%& estndar )ue es 9til solamente en grupos de dos o
ms elementos. %n con"unto de botones de radio operan como un selector mutuamente e!clusio.
rai(e: para traer una entana al frente del orden apilado. 5o necesariamente la entana tendr
enfo)ue.
re(o$#tion: lo ms pe)ue*o7 los pi!eles, lo mayor7 la resoluci'n. Frecuentemente la resoluci'n es
medida en pi!eles por pulgada.
re(tore: @reersarB para reersar el efecto de minimi(ar o ma!imi(ar.
(cro$$ !ar: @barra de despla(amiento B un control o dibu"o en la entana )ue dispone de una flec+a
en cada uno de sus e!tremos y un cuadrito )ue se puede despla(ar a tra#s de la barra. 0a barra de
despla(amiento es utili(ada para seleccionar un posible alor desde un rango lineal.
(e'icBar(: @semicaracteresB una unidad de medida deriada del tama*o de un caracter tpico en la
fuente del sistema actual. Ploteando controles en semicaracteres es ms transportable la aplicaci'n
)ue utili(ando pi!eles, si +ay te!to @en la fuente )ue est# usando el sistemaB dentro de los controles.
(tacGing or&er: el orden con )ue se grfica entanas es dispuesto en la pantalla.
(tatic te"t: un control $%& estndar el cual simplemente dibu"a te!to en la entana padre. 5unca
genera alg9n eento.
(tat#( !ar: @barra de condici'nB un control de prop'sito especial )ue consiste de una lnea de te!to
)ue es dibu"ada de todas formas a tra#s de la parte inferior de la entana padre.
SYSGUI: El dispositio )ue Visual PRO/5 usa para conersar con el subyacente sistema grfico.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: D[
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
SYSPLOD: un dispositio del Visual PRO/5 )ue acepta comandos tradicionales de ploteo de ,,!
y despliega dibu"os en una entana grfica.
SYSPRIND: un dispositio del Visual PRO/5 )ue proee una interfase de caracteres con
impresoras de .indo/s a tra#s del 1dministrador de &mpresi'n.
SYS=INDO=: un dispositio del Visual PRO/5 )ue es un ^superset_ del dispositio de terminal
del ,,! estndar. $eneralmente es abierto por el canal ? cuando Visual PRO/5 es iniciado.
te"t (e$ection: un blo)ue de te!to en un control de edici'n )ue es mostrado en forma destacada.
Este te!to ser reempla(ado si cual)uier nueo te!to es mecanografiado, u operado si cual)uiera de
las funciones estndar del tablero es e"ecutada. %na selecci'n de te!to puede ser +ec+o a tra#s del
rat'n o a tra#s de los mnem'nicos NSE0E36O o N6USE0E36O. 0a selecci'n de te!to en uso puede
ser recuperada con 36R0 @B.
tit$e: el te!to primario asociado con un control o entana. 6odos los controles tienen ttulos, aun)ue
algunos nunca son e!+ibidos.
tit$e !ar: 0a ca"a en la parte superior de la entana )ue mantiene el ttulo de la entana.
togg$e !#tton: @bot'n ariableB un bot'n +erramienta )ue es +ec+o para operar como un
conmutador. 3on un clicI se deprime el bot'n @Mc+e)ueadoWB, y con otro clicI se inierte. 0as
capacidades de conmutar y isuali(ar pueden ser usadas con"untamente.
too$ !ar: @barra de +erramientaB una entana @generalmente una entana +i"aB de la cual los
controles se mantienen para acceso coneniente del usuario. Frecuentemente esta es una entana
+i"a llenada con botones +erramientas.
too$ !#tton: @bot'n +erramientaB un control de prop'sito especial )ue se comporta parecido a
bot'n estndar, pero no del todo. El bot'n +erramienta reporta el &2 del bot'n del rat'n, s+ift y
estado del estado de las teclas de control, y la posici'n del rat'n en sus eentos. 0os botones
+erramienta pueden mostrar un ^bitmap_ en lugar de un ttulo te!tual, y pueden tambi#n
opcionalmente ser +ec+o para conmutar. 0os botones +erramienta no pueden tener enfo)ue de
teclado y as no puede tampoco ofrecer naegaci'n de teclado.

;in&o;: una pantalla grfica l'gica o una superficie en la cual controles y dibu"os pueden ser
colocados.
;in&o; &ecoration( Qa$g#na( Iece( $$a'a&o R!or&er &ecoration(ST: bonitos controles de
ob"etos )ue residen en el borde de entanas y )ue afectan la entana de alguna forma. Son
pe)ue*os dibu"os comunes )ue incluyen ca"as de cierre, minimi(ar y ma!imi(ar la entana, as
como barras de despla(amiento.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: DD
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
EIento a (er re*orta&o EIent 7a(G /it Atri!#to F$ag !it
3+ecI or unc+ecI of c+ecI Y?>??????Y 3lose bo! Y???????>Y
bo! or radio button $raity Y??;?????Y
3licI or double clicI on list tem Y?;??????Y Sori(ontal scroll bar Y???????EY
3lose bo! operated 5one<al/ays sent &nitially disabled Y??????>?Y
Edit of list edit modified Y??E?????Y &nitially inisible Y??????;?Y
Edit, list edit, or te!t edit focus c+ange Y??D?????Y &nitially ma!imi(ed Y????;???Y
Vey pressed Y?????E??Y &nitially minimi(ed Y?????;??Y
-en9 selection mode 5one<al/ays sent Veyboard naigation Y???;????Y
-ouse button double clicI Y?????>??Y -enu bar Y?????D??Y
-ouse button do/n Y??????E?Y -inimi(able Y??????D?Y
-ouse button up Y??????D?Y -odal dialog style border Y???E????Y
-ouse moed Y?????;??Y -odal dialog be+aior Y???D????Y
Pus+ buttton operated 5one<al/ays sent Stay on top Y???>????Y
Scroll bar position c+anged Y??;?????Y %ser si(able Y???????;Y
6ool button operated 5one<al/ays sent Vertical scroll bar Y???????DY
.indo/ resi(ed Y???????DY
.indo/ focus c+ange Y???????EY
Co&e EIento re*orta&o ID F$ag( "L3
> -ouse button double clicI ] ,utton Y?;Y aS+iftb -ouse
] ?Kleft ;Krig+t >Kcenter &2 Y?>Y a3trlb Position
, Pus+ ,utton opereted J 5/1 5/1
b 6ool button operated J See note -ouse
5ote7 0o/ order flag bits Y?EY aS+iftb position
contain mouse button &2 Y?DY a3trlb
??Kleft ?;Krig+t ;?Kcenter Y;?Y ,utton do/n
3 -enu selection mode -enu Y?;Y aS+iftb 5/1
tag Y?>Y a3trlb
Y?EY 5o/ 3+ecIed
c 3+ecI/unc+ecI c+ecI of J Y??Y %nc+ecI 5/1
c+ecI bo! or radio button Y?;Y 3+ecIed
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: DG
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
d -ouse button do/n ] ,utton Y?;Y aS+iftb -ouse
] ?Kleft ;Krig+t >Kcenter &2 Y?>Y a3trlb position
e Edit, list edit, or te!t edit J 5/1 5/1
modified
F .indo/ focus gain/loss 5/1 Y??Y 0ost 5/1
Y?;Y $ained
f Edit, list edit, or te!t edit J Y??Y 0ost 5/1
focus gain/loss Y?;Y $ained
l @eleB 3licI or double clicI J Y??Y Single 5/1
on list bo! tem Y?;Y 2ouble
m -ouse moed 5/1 Y?;Y aS+iftb -use
@use only /+en neededB Y?>Y a3trlb position
p Scroll bar control moed J 5/1 5e/
position
S .indo/ resi(ed 5/1 5/1 5e/ si(e
in pi!els
t Vey pressed 5umeric Y?;Y ] aS+iftb 5/1
Iey code Y?>Y ] a3trlb
u -ouse button up ] ,utton Y?;Y aS+ift -ouse
] ?Kleft ;Krig+t >Kcenter &2 Y?>Y a3trlb position
U 3lose bo! operated 5/1 5/1 5/1
Ind)*e -l,-1Vt)*o
NamouseO G
NarcO CC, CE
NasIO A
NbuttonO >E, >5, >[, >G, E?, EA, E[, EG, 5D, A?
Nc+ecIO C[, CD, CG, E?, E;, 5[
Nc+ecIbo!O CD, CG, A?
NclearbgO CE
Nconte!tO E[, ED, EG, 5?
NcueO 5D
NdestroyO >D, C>, E?, EA, E[, ED, EG
NdisableO >A, C[, CG
Ndra/unitsO CC, CE, C5
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: G?
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
NeditO >D, >G, 55, A?
NenableO >A, >[, C[, CG, 5[
NfileopenO D
NfilesaeO D
NfocusO 5, C?
NfontO ;[, ;D
NgetsO [
NgridO 5?, A5, AG
Ngroupbo!O E;, A>
N+ideO E
N+ideO 5, >A
N+scroll 5;, A?
NimageO C5
NlistaddO E>, EC, EE, EA, E[, ED, EG, 5C
Nlistbo!O E>, EC, EA, E[, EG, A?
NlistbuttonO E5, A?
NlistclrO EE, E5, EA
NlistdelO EE, E5, EA, E[, ED, EG
NlisteditO E5, A?
NlistmselO EE, EA
NlistresumeO 5?
NlistselO EE, E5
NlistsuspendO 5?
NlistunselO EE, EA, E[, ED, EG, 5?
Nma!imi(eO ;[
NminiconO@filename,ndiceB A, >5
Nminini(eO E
NmouseO G
NmoeO >[
NmsgbosO ;;
NpbeginO CE
NpendO CE
Npi!elsO C?, CC
NplaysoundO ;;
Nplotte!tO CE
NpsetupO C5
Np/indo/O CE, C5
NradiobuttonO CD, CG, E?, E;, A?
NraiseO 5
NrestoreO E
NrestoreO E
NscrollposO 5?
NscrollpropO 5?
NscrollrangeO 5?
Nsemic+arsO >>, >5, >G
NsetcursorO@curidB 5
NsetmenuO, 55, 5[
NsetupO CE
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: G;
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
Ns+o/O E, >A, C5
Nsi(eO ;D, >C, >[
NstatbarO 5D, A?
NtbuttonO C>, CA, C[, A?
Nte!tO E?, E>, A?
NtitleO E, >C, >[, CG, AE
NtitleO E, E5, EA, A?
NtracIO CE, C5
Nt!addO 5C
Nt!appendO 5C
Nt!clrO 5C
Nt!delO 5C
Nt!editO 5>, 5C, A?
Nt!selectO 5E
Nunc+ecIO C[, CG, E?, 5[
NirtualO C5
NscrollO 5;, A?
N/indo/O >>, >5, C?, CE
N/orldO C5
10&1S C, ;5, ;D
1lineamiento de ob"etos con Res,uilder A[
1rc+io s)l.ini [;, [>
arc+ios ,-P C5
1tributos de las formas DD
,anderas en un -en9@reisi'n ;.?!B 5A
,arra de ob"etos del Res,uilder AE
,arras de condici'n 5D
,itmap C[, CD, CG
,otones de pulsar CA
,otones de radio CD, E?
,otones +erramienta CA
3a"as de c+e)ueo CD
clipfromfile cs,clipY D?, D;
cliplocI D?, D;
clipunlocI D?, D;
3olas de mensa"es 5D
colsK@modoB ;A
3'mo crear una pantalla con el Res,uilder AC
3'mo lograr el despliegue de arc+ios .brc A[
config.bb! C, ;5, ;[, ;D, >E
3ontroles c+e)ueables E>
3ontroles de barra de despla(amiento 5?
3ontroles de edici'n multilnea 5>
3ontroles de listas E>
3opiar actrl.]3b C?, 5>
3ortar actrl.]Ub C?. 5>
3rear un control $R&2 AG
csKclipregformat@Z3SVZB D?, D;
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: G>
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
36R0. @funci'nB >G, C?, CE, CG, E?
2&10O$ @modoB ;G
2ibu"ando e imprimiendo CC
2&- eentY7tmpl@B >>, >E
2ispositio Sysgui >;
2ispositio Sysplot >?
2ispositio SJSPR&56 ;D
2ispositio SJS.&52O. ;5
2ynamic 2ata E!c+ange [E
Editor de pantallas para re. actuales AC
Editor de pantallas $%& 5G
Editor de pantallas para reisi'n ;.?! 5G
E"ercicio de Sysgui f;7 Sola -undo >>
E"ercicio de Sysgui f>7 Saciendo )ue las c. >5
E"ercicio de Sysgui fC7 E!plorando 36R0. >D
E"ercicio de Sysgui fE7 El reportero eentosC;
E"ercicio de Sysgui f57 2ibu"ando e &mpr. CC
E"ercicio de Sysgui fA7 6ools ,uttons CA
E"ercicio de Sysgui f[7 3ontroles c+e)ueab CD
E"ercicio de Sysgui fD7 3ontroles de listas E>
E"ercicio de Sysgui fG7 Scroll ,ars 5?
E"ercicio de Sysgui f;?7 3ontroles edici'n 5>
E"ercicio de Sysgui f;;7 -en9s Re.;.?! 55
E"ercicio de Sysgui f;>7 ,arras y 3olas 5D
Empe(ando a probar el S40 [>
E!perimentar con la funci'n 36R0. CG
ErrorK>G >A
F&2@B CE
F&5@funci'nB ;E
Flags C>, CA, C[, DD, DG
fontK@modoB ;A, ;G
fontsi(eK@modoB ;A, ;G
Funci'n ; @obtener te!toB >G, EE, EA
Funci'n ; @obtener ttulo de men9 5[
Funci'n > @detectar items c+e)ueadosB 5[
Funci'n > @obtener alorB >G, E;, E5, 5;, 5E
Funci'n > @recuperar ttuloB CG
Funci'n C @obtener cantidad de itemsB E5, 5E
Funci'n 5 @obtener prrafoB 5E
Funci'n A @uso en men9sB 5[
Funci'n [ @obtener todo el te!toB EE, 5E
Funci'n 36R0. >G, C?, CE, CG, E?
$losario de t#rminos $%& D>
SE&$S6 @modoB >?
&nteracci'n Sysgui >;
inertK@modoB ;[
&5V&S&,0E @modoB C, >E
RO,&2 @modoB ;G
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: GC
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
0ectura de eentos >E
-scara de eentos C>, CC, CA, DG
ma!imi(ed @modoB ;[
menuK@modoB ;A
-en9s @con reisi'n ;.?!B 55, 5A, 5[
-&5&-&LE @modoB C
-nem'nico $rid AG
-nem'nicos adicionales para Sys/indo/ ;[
-nem'nicos Sys/indo/ E
-O2E ;A
-odos adicionales de Sys/indo/ ;A
-odos de Sysplot >?
-odos de Sys/indo/ C, ;A, ;[
-odos de Sysprint ;G
mostrar arc+ios ,-P C5
-9ltiples dispositios Sys/indo/s ;5
-S$,OU ;;
Pegar actrl.]Vb C?, 5>
PREV&E. @modoB ;G
Prog.con 22E7 3argas datos en +o"a E!cel [G
Prog.con 22E7 $enera arc+io para E!cel D?, D;
Prog.con 22E7 0eer datos desde +o"a E!celD?
Prog.con S407 1ctuali(aci'n campo tabla [5
Prog.con S407 3rear y agregar nueos regs [E
Prog.con S407 0eer base de datos Fo! [A
Prog.con S407 0ista tabla de clientes [E
Prog.con S407 0istar registros de d,ase [A
Prog.con S407 6abula salarios por 3a. [A
Programa )ue despliegua recursos @formsB AD
Programa7 -ostrar n9meros pares/impares E?
Programa7 Pasar items entre dos conte!tos E[
Programa7 Pasar items entre dos listas EA
Programa7 Pasar items entre tres conte!tos EG
Propiedades de los ob"etos AA
read record @gui,si(Klen@eentYBB C;, E?, etc.
Reportero de eentos C;
Res,uilder c Editor de la reisi'n >.?! AC, AE
Separadores en un -en9 @reisi'n ;.?!B 5A
setopts >C
SE6%P @modoB ;G
S40EUE3 [E, [E, [5
S40FE63S [E, [E, [5
S40PREP [C, [E, [5
S4061,0ES@B [C
S406-P0 [C, [E, [5
6abla de eentos DG
6ipos de eentos C;, DG
6&60E @modoB C
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: GE
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr
tmpl@B >>, >E
6ool ,utton C>
%sando S40 desde Visual Pro/5 [;
.&26S @modoB >?
!posK@modoB ;A
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: G5
$ua 6utorial de Visual PRO/5 < 2erec+os reserados de ,asis &nternational 0td. < 3opyrig+t=>???
-anual preparado en 3osta Rica por %niSoft 6el.@5?ABCDE<>5CD Fa! >5?<CG>? Email7 unisoftHracsa.co.cr

También podría gustarte