El siguiente paso, es enseñarle como utilizar en la programación los nombres
asignados a las formas y a los objetos, para lo cual también puede insertar
en la rutina de inicio del GuiBuilder instrucciones similares a las que siguen,
para los objetos que le interese usar en el programa:
dim frm_screen$:fngb__template$(gb__win_id$)
Id_lboxPaises=Num(Fattr(frm_screen$,"Id_lboxPaises","ID"))
Id_btnEliminar=Num(Fattr(frm_screen$,"Id_btnEliminar","ID"))
Id_ipnNombClien=Num(Fattr(frm_screen$,"Id_inpNombClien","ID"))
Id_txtNombCia=Num(Fattr(frm_screen$,"Id_txtNombCia","ID"))
Para entender lo anterior, debe saber que:
- gb__win_id$ contrendrá el ID de la forma a ser usada.
- frm_screen$ contendrá el template de los objetos a ser usados y que
- Id_lboxPaises, Id_btnEliminar y los demás anotados, son los nombres asignados
con el ResBuilder a los objetos.
Para aplicar lo anterior a un Child Window puede hacerlo así:
Dim frm_screen$:fngb__template$(fngb__win_id$(nfield(gb__win$,"chw_Consulta")))
Id_CodigoCliente=Num(Fattr(frm_screen$,"Id_Codigo_Cliente","ID"))
Lo mismo anterior pero más automático
Lo que sigue es otra forma aún mejor
de obtener los nombres de todos los controles y su ID, directamente desde la
Forma o Child Window que indiquemos, bajo la advertencia de que esta técnica
no sirve para programas que son ejecutados por medio de la instrucción CALL,
o bajo licencias RUNTIME, por hacerse uso del comando EXECUTE.
rem ' -----------------------------------------------------------------
rem ' Init
rem ' -----------------------------------------------------------------
get_text=1,
: x0=gb__sysgui
rem Carga variables con valores de la forma Cajas
print (x0)'context'(gb__win.frm_cajas)
dim frm_screen$:fngb__template$(fngb__win_id$((nfield(gb__win$,"frm_cajas"))))
tpl$=fattr(frm_screen$,"")
REPEAT
LET A=POS($0A$=TPL$),CAMP$=FATTR(FRM_SCREEN$,TPL$(1,A-1))
IF POS($0A$+TPL$(1,A)=$0A$+FATTR(FRM_SCREEN$,""))
: THEN LET A$=TPL$(1,A-1)+"=NUM(FATTR(frm_screen$,"+$22$+TPL$(1,A-1)
:+$22$+","+$22$+"ID"+$22$+"))";
IF POS("LBL_"=TPL$)<>1 THEN EXECUTE A$
LET TPL$=TPL$(A+1)
UNTIL
TPL$=""
REM Sigue abrir archivos a ser usados
///
Con ese block de instrucciones,
de forma automática se obtienen los nombres y los valores de todos
los ID, tal y como se nombraron con el ResBuilder. Note que se hace la exclusión
de aquellos controles cuyo name empiece con las letras LBL_, para ignorar
los objetos tipo Estatic Text, de los cuales normalmente no se requiere obtener
el ID.
El ejemplo anterior aplica de manera similar para los Child Window.
Si le interesa implementarlo deberá
insertar ese grupo de instrucciones en la sección Initialization code
de cada programa, para así trabajar con el Nombre y no con el ID. Vea que todo
lo anterior se hace mediante funciones que provee el GuiBuilder. Deberá recordar
que es necesario repetir el block de instrucciones por cada Window o Child Window
que vaya a usar el programa.
|