29. Sigamos con el código de la rutina para BUSQUEDA,
para lo cual abrimos el control de lista Object, seleccionamos ---
New Subroutine/Function ---, entramos a la ventana Name Subroutine/Function
y digitamos:
BUSQUEDA
Damos aceptar y digitamos:
rem ' --------------------------------------------------------------
rem ' BUSQUEDA
rem ' --------------------------------------------------------------
BUSQUEDA:
rem ' para posicionarme en la otra ventana
REM ' ------------------------------------------------------------
Print (GB__SYSGUI)'CONTEXT'(GB__WIN.Frm_Consulta)
rem ' para hacerla visible, ya que desde un inicio no es visible
REM ' ------------------------------------------------------------
Print (GB__SYSGUI)'SHOW'(0)
Print (GB__SYSGUI)'FOCUS'(101)
Return
30. Puesta en ejecución la anterior subrutina,
le aparecerá al usuario el segundo contexto que habíamos dibujando con el ResBuilder
(102 Consulta), para el cual también debemos digitar código como por ejemplo,
el que se requiere para cuando hagan Clic sobre la cajita de cierre ubicada
en la esquina superior derecha del contexto. Para lograr eso hagamos Clic en
el 5to icono de la barra de herramientas (Select Form) y escojamos la línea
que dice 102 Consulta. Eso hace que nos aparezca la segunda pantalla
en forma desabilitada. Para hacerlo diferente de como lo hicimos con la primer
pantalla, demos un doble Clic sobre la superficie de esa pantalla (que no sea
sobre alguno de sus objetos), para que nos salga una ventana llamada Select
Event que nos muestra los diferentes eventos que podrían darse para la forma
102. Entonces buscamos que el que se llama * Window Closed y digitamos
el siguiente código:
rem ' Close Button Operated
REM ' PARA SALIR DEL CONTEXTO O VENTANA DE BUSQUEDA
REM ' --------------------------------------------------------------
Print (GB__SYSGUI)'CONTEXT'(GB__WIN.Frm_Consulta)
Print (GB__SYSGUI)'HIDE'(0)
Print (GB__SYSGUI)'CONTEXT'(GB__WIN.frm_Ejercicio)
Lo anterior causará que la pantalla o contexto para consultas desaparezca
y nos vuelva a quedar visible la pantalla principal.
31. Para continuar, podemos digitar el código
requerido para la cajita donde vamos a capturar el nombre de cliente a ser buscado.
Hagamos Clic en la caja de lista Control y seleccionemos INPUTE 101
InputE, y luego en la caja de lista Event seleccionemos * Control
Lost Focus para entrar estas instrucciones:
rem ' Control lost focus
Print (GB__SYSGUI)'CONTEXT'(GB__WIN.Frm_Consulta)
NOMBRE$=CTRL(GB__SYSGUI,101,OBTENER_TEXTO)
if CVS(NOMBRE$,2)="" then RETURN
SQLPREP(SQLCHAN)"SELECT CODIGO,NOMBRE FROM CLIENTES
: WHERE NOMBRE >='"+NOMBRE$+"' ORDER BY NOMBRE"
SQLEXEC(SQLCHAN)
DIM CLI$:SQLTMPL(SQLCHAN)
PRINT(GB__SYSGUI)'LISTCLR'(102)
LEE_NOMBRES:
CLI$=SQLFETCH(SQLCHAN,ERR=FIN_NOMBRES)
if cli.nombre$(1,len(nombre$))>nombre$ then goto fin_nombres
PRINT (GB__SYSGUI)'LISTADD'(102,-1,CLI.NOMBRE$+" "+CLI.CODIGO$)
GOTO LEE_NOMBRES
FIN_NOMBRES:
Lo anterior equivale a forzar una lectura de registros, ordenada por
nombre de cliente, para que nos sean mostrados todos los que sean inicialmente
iguales al dato almacenado en la variable NOMBRE$.
|