La mayor parte de este programa ya le debe ser muy familiar.
El nuevo mnemónico que está usando es el 'EDIT', que crea un control llamado
Caja de Edición. Este es un control estándar de Windows para obtener una línea
única de entrada del usuario. La sintaxis es idéntica a la indicada para el
mnemónico 'BUTTON'. En este ejemplo, estamos asignando control ID 101 a la caja
de edición, y suministramos un string vacío para el texto del título. Cualquier
texto de título que se suministre será preestablecido como el texto actual en
la caja de edición.
Una vez que usted ha corrido el programa, usted deberá poder
ver la nueva ventana del GUI y editar el control. Haciendo un Click del ratón
dentro de la caja de edición producirá que usted vea una barra intermitente,
la cual es conocida como "signo de intercalación", e indica donde
el texto será insertado. Entonces, para lograr FOCO en dicho control, hágale
click y luego proceda a digitar algún texto.
Ahora utilizaremos la función CTRL para atisbar
en el control y ver lo que usted ha entrado. Digite este comando después de
haber digitado algo en la caja de edición:
PRINT CTRL(1,101,1) ---> (Canal
GUI, ID del Control y Tipo de Función)
Usted podrá ver el texto que fue digitado
en la caja de edición. El primer argumento de la función CTRL()
es el número de canal. En este caso, el dispositivo SYSGUI fue abierto por medio
del canal 1. El segundo argumento es el ID del control o ventana que está siendo
examinada. Como de costumbre, el ID 0 es un distintivo para la ventana en uso.
Solo por diversión, trate de imprimir CTRL(1,0,1).
Verá el texto del título que se le dio a la ventana: CTRL test.
El tercer argumento es la "función", que dice al CTRL
qué tipo de información usted quiere realizar. La función 1 es "obtener
texto". Frecuentemente "obtener texto" recupera el texto de título
del control o ventana, pero no siempre. Como un ejemplo, cuando el objeto en
cuestión es una caja de lista, "obtener texto" retorna el texto del
ítem seleccionado de la lista en uso. Existen al menos quince diferentes funciones
CTRL(), pero no todas son normalmente usadas.
Si el tercer argumento no fuera suministrado, Visual PRO/5 retorna
la más comúnmente-utilizada o "interesante" función para ese
control. Esta es siempre ya sea "obtener texto" (función 1) u "obtener
valor" (función 2). Generalmente, aquellos controles cuyo estado está descrito
principalmente por un número (lista de caja, barra de desplazamiento, caja de
chequeo, etc.) asumido por omisión para "obtener valor". Todo lo demás
es contrario al valor por omisión para "obtener texto".
Para que haga la prueba, digite estas dos líneas!!
PRINT CTRL(1,101)
PRINT CTRL(1,0)
Como usted puede ver, la función "obtener texto" es
el valor por omisión en estos casos. Si a usted no le molesta esto con las funciones
por omisión, no necesita preocuparse. Usted siempre puede especificar el tercer
argumento y obtener la función que usted desee.
La función 0 es "obtener rectángulo". Eso retorna
la ubicación del rectángulo unificador del control o ventana especificada. El
rectángulo es retornado como cuatro strings consecutivos binarios de dos bytes.
Este es un patrón que trabajará con CTRL() función 0.
X:U(2), Y:U(2), W:U(2), H:U(2)
Vamos a intentar encontrar la ubicación y
tamaño de la ventana y de la caja de edición. Para eso adicione las siguientes
líneas al programa definido en la página anterior.
0060 DIM RECT$: "X:U(2), Y:U(2), W:U(2), H:U(2)"
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
Ahora intente mover la ventana y encontrar
los valores de nuevo. ¿Se sorprendió? La ubicación de la ventana es diferente,
pero las dimensiones son las mismas. Todas las coordenadas para la caja de edición
son reportadas relativamente a la ventana, de modo que no cambiaron. Usted podría
encontrar alguna ligera variación de dimensión en errores de conversión debido
a la conversión entre pixeles y semicaracteres.
|