by Elias Torres » Wed Mar 14, 2007 5:00 pm
Hola a todos...
Bueno antes de nada este es el codigo conflictivo...
*********************************
FUNCTION configuracion(usuario,clave)
*********************************
LOCAL olist,radio_pvp,radio_art,oart_nuevo,oexis_local,lval:=.f.,lval1:=.f.
LOCAL oexis_local_siempre,oexis_remot_siempre,contador
CLOSE DATABASES
&& se contabilizan los registros que estan marcados
SELECT 0
USE (CURDIR() +"\definiciones.dbf") VIA "DBFCDX" new
INDEX ON codigo TO codigo
definiciones->(OrdSetFocus("codigo"))
SET FILTER TO (definiciones->activado==.T.)
definiciones->(dbgotop())
contador:=0
DO while !EOF()
contador:=contador+1
definiciones->(dbskip())
ENDDO
definiciones->( DbClearFilter() )
definiciones->(dBGotop())
SELECT 0
USE (CURDIR() + "\vector_ini.dbf") VIA "DBFCDX" new
ip:=ALLTRIM(vector_ini->ip_equipo) &&guarda la ip del equipo
nombre_pda:=ALLTRIM(vector_ini->codpda)
control_existencias_locales:= vector_ini->exis_local
control_existencias_remotas:= vector_ini->exis_remot
existencias_locales_siempre:=vector_ini->el_siempre
existencias_remotas_siempre:=vector_ini->er_siempre
SELECT vector_ini
DEFINE window oWnd1 TITLE "Configuración"
&&definimos las pestañas y el tamaño de estas
@ 3, 1 FOLDER oFld PROMPTS "Parámetros", "Sistema", "Descargas", "Configuración",;
"Máscaras","Definiciones","Cambio de Claves" SIZE 225, 175
&&le damos un color de fondo para integrarla en la pantalla principal
oFld:setcolor(RGB(1,1,1),RGB(230,184,94))
IF VAL(tipo_acceso)==0 &&solo se permite acceso a la primera pagina
&& primera pagina
@ 2, 1 SAY "Codigo PDA" OF oFld:aDialogs[ 1 ] SIZE 70, 15
@ 2, 10 GET oCod_pda var vector_ini->codpda OF oFld:aDialogs[ 1 ] SIZE 130, 21
@ 3.6, 1 SAY "Aplicación" OF oFld:aDialogs[ 1 ] SIZE 70, 15
@ 4, 10 GET oAplic var vector_ini->aplicacion OF oFld:aDialogs[ 1 ] SIZE 130, 21
@ 5.4, 1 SAY "Almacen" OF oFld:aDialogs[ 1 ] SIZE 70, 15
@ 6, 10 GET oAlmacen var vector_ini->almacen OF oFld:aDialogs[ 1 ] SIZE 130, 21
@ 7.1, 1 SAY "Lista Precios" OF oFld:aDialogs[ 1 ] SIZE 70, 15
@ 8, 10 GET oPrecios var vector_ini->lista_pvp OF oFld:aDialogs[ 1 ] SIZE 130, 21
ELSE &&el acceso es a toda la configuración
&& primera pagina
@ 2, 1 SAY "Codigo PDA" OF oFld:aDialogs[ 1 ] SIZE 70, 15
@ 2, 10 GET oCod_pda var vector_ini->codpda OF oFld:aDialogs[ 1 ] SIZE 130, 21
@ 3.6, 1 SAY "Aplicación" OF oFld:aDialogs[ 1 ] SIZE 70, 15
@ 4, 10 GET oAplic var vector_ini->aplicacion OF oFld:aDialogs[ 1 ] SIZE 130, 21
@ 5.4, 1 SAY "Almacen" OF oFld:aDialogs[ 1 ] SIZE 70, 15
@ 6, 10 GET oAlmacen var vector_ini->almacen OF oFld:aDialogs[ 1 ] SIZE 130, 21
@ 7.1, 1 SAY "Lista Precios" OF oFld:aDialogs[ 1 ] SIZE 70, 15
@ 8, 10 GET oPrecios var vector_ini->lista_pvp OF oFld:aDialogs[ 1 ] SIZE 130, 21
&& segunda pagina
@ 1, 1 SAY "Dirección IP" OF oFld:aDialogs[ 2 ] SIZE 70, 15
@ 1, 10 GET oIP var vector_ini->ip_equipo OF oFld:aDialogs[ 2 ] SIZE 130, 21
@ 2.6, 1 SAY "Nombre Eq." OF oFld:aDialogs[ 2 ] SIZE 70, 15
@ 3, 10 GET oNombreEq var vector_ini->equipo OF oFld:aDialogs[ 2 ] SIZE 130, 21
@ 4.3, 1 SAY "Ruta" OF oFld:aDialogs[ 2 ] SIZE 70, 15
@ 5, 10 GET oRuta var vector_ini->ruta OF oFld:aDialogs[ 2 ] SIZE 130, 21
@ 6, 1 SAY "Usuario" OF oFld:aDialogs[ 2 ] SIZE 70, 15
@ 7, 10 GET oUsuario var vector_ini->usuario OF oFld:aDialogs[ 2 ] SIZE 130, 21
@ 7.8, 1 say "Constraseña" of oFld:aDialogs[ 2 ] SIZE 70, 15
@ 9, 10 GET oPass var vector_ini->pass OF oFld:aDialogs[ 2 ] SIZE 130, 21
&& tercera pagina
@ 1, 1 SAY "Inventarios" OF oFld:aDialogs[ 3 ] SIZE 70, 15
@ 1, 10 GET oRuta_Inv var vector_ini->ruta_inv OF oFld:aDialogs[ 3 ] SIZE 130, 21
@ 2.6, 1 SAY "Compras" OF oFld:aDialogs[ 3 ] SIZE 70, 15
@ 3, 10 GET oRuta_com var vector_ini->ruta_com OF oFld:aDialogs[ 3 ] SIZE 130, 21
@ 4.3, 1 SAY "Ventas" OF oFld:aDialogs[ 3 ] SIZE 70, 15
@ 5, 10 GET oRuta_ven var vector_ini->ruta_ven OF oFld:aDialogs[ 3 ] SIZE 130, 21
@ 6, 1 SAY "Consultas" OF oFld:aDialogs[ 3 ] SIZE 70, 15
@ 7, 10 GET oRuta_con var vector_ini->ruta_con OF oFld:aDialogs[ 3 ] SIZE 130, 21
&& cuarta pagina
@ 1, 1 SAY "Dias sin actualizar" OF oFld:aDialogs[ 4 ] SIZE 110, 15
@ 1, 15 GET oDias var vector_ini->dias OF oFld:aDialogs[ 4 ] SIZE 90, 21
@ 3, 1 checkbox oart_nuevo var vector_ini->art_nuevo prompt "Crear Articulo" OF oFld:aDialogs[ 4 ] SIZE 100, 21
@ 5, 1 checkbox omod_pvp var vector_ini->pvp_modif prompt "Modificar PVP" OF oFld:aDialogs[ 4 ] SIZE 100, 21
@ 7, 22 checkbox oexis_local_siempre var vector_ini->El_siempre prompt "Siempre" OF oFld:aDialogs[ 4 ] SIZE 100, 21
IIF (control_existencias_locales=.f.,oexis_local_siempre:hide(),lval:=.t.)
@ 9, 22 checkbox oexis_remot_siempre var vector_ini->er_siempre prompt "Siempre" OF oFld:aDialogs[ 4 ] SIZE 100, 21
IIF (control_existencias_remotas=.f.,oexis_remot_siempre:hide(),lval1:=.t.)
@ 7, 1 checkbox oexis_local var vector_ini->exis_local prompt "Ver Exis. Locales" OF oFld:aDialogs[ 4 ] SIZE 140, 21 on click ( lVal := ! lVal, Iif( lVal, oexis_local_siempre:show(), (oexis_local_siempre:hide(),vector_ini->el_siempre:=.t.)))
@ 9, 1 checkbox oexis_remot var vector_ini->exis_remot prompt "Ver Exis. Remotas" OF oFld:aDialogs[ 4 ] SIZE 140, 21 on click ( lVal1 := ! lVal1, Iif( lVal1, oexis_remot_siempre:show(),(oexis_remot_siempre:hide(),vector_ini->er_siempre:=.t.)))
&& quinta pagina
@ 1, 1 SAY "Inventario" OF oFld:aDialogs[ 5 ] SIZE 70, 15
@ 1, 10 GET omasc_inv var vector_ini->masc_inv OF oFld:aDialogs[ 5 ] SIZE 130, 21
@ 2.6, 1 SAY "Compras" OF oFld:aDialogs[ 5 ] SIZE 70, 15
@ 3, 10 GET omasc_com var vector_ini->masc_com OF oFld:aDialogs[ 5 ] SIZE 130, 21
@ 4.3, 1 SAY "Ventas" OF oFld:aDialogs[ 5 ] SIZE 70, 15
@ 5, 10 GET omasc_ven var vector_ini->masc_ven OF oFld:aDialogs[ 5 ] SIZE 130, 21
&& pagina 6
SELECT definiciones
@ 1, 1 listbox olist fields definiciones->codigo,definiciones->descrip,;
definiciones->abreviatur,definiciones->activado fieldsizes 30,100,37,20 header "Cód","Descripción","Abrev","Sel" OF oFld:aDialogs[ 6 ] size 207,105
olist:nClrPane := { || If( definiciones->activado,RGB(230,184,94) , RGB(255,255,255) ) }
olist:blClicked:={||definiciones->activado:=!definiciones->activado,;
IIF(definiciones>activado==.t.,contador:=contador+1, contador:=contador-1),olist:Refresh(),IIF(contador<=3,,(msginfo('Solo es posible marcar 3 definiciones...','Atención'),definiciones->activado:=!definiciones->activado,contador:=contador-1))}
@ 9, 1 bitmap obmp1 name "titulo_modificar" noborder OF oFld:aDialogs[ 6 ] SIZE 110, 42
@ 9, 17 bitmap obmp2 name "titulo_anadir" noborder of oFld:aDialogs[ 6 ] size 110, 42
@ 11.5, 9 bitmap obmp3 name "titulo_borrar" noborder of oFld:aDialogs[ 6 ] size 110, 42
oBmp2:blClicked := {|| MsgBeep(),nueva_marca(oWnd1) }
oBmp1:blClicked := {|| MsgBeep(),IIF(!BOF(),(nRecno := definiciones->( Recno()),modifica_definicion(olist)),obmp1:hide()) }
oBmp3:blClicked := {|| MsgBeep(),(nRecno := definiciones->( Recno())),IIF(!BOF(),IIF(MsgNoYes('¿Desea borrar de las definiciones el registro marcado?','Atención'),(definiciones->(DBDelete()),olist:REFRESH(),contador:=contador-1),),obmp3:hide()) }
&& septima pagina (cambio de clave)
@ 5, 4 bitmap obmp7 name "cambio_clave" noborder OF oFld:aDialogs[ 7 ] SIZE 180, 42
oBmp7:blClicked := {|| MsgBeep(),IIF(msgNoYes('Atención, ¿desea cambiar la clave asignada al usuario?','Atención'),cambia_clave(usuario,clave),)}
endif
&&color de fondo de la pantalla
oWnd1:setcolor(RGB(1,1,1),RGB(230,184,94))
ACTIVATE WINDOW oWnd1;
on init botones_configuracion(oWnd1,olist) &&al iniciar cargamos la barra de botones
RETURN nil
Se me ha presentado un problema que no se por donde cogerlo. Tengo el codigo anterior que lo que hace es mostrar una serie de pestañas para la configuración de la aplicación. Resulta que cuando entro la primera vez a esta opción todo funciona correctamente, pero si vuelvo a entrar una segunda vez todo me funciona menos la pestaña 6. Me da un error que dice que no encuentra el alias definiciones.De echo en esta pestaña el Select Definiciones lo hace y no da error pero cuando llega al listbox me da el error de 'no se encuentra el alias definiciones'.... Yo creo que el problema puede estar en el browse donde muestro las definiciones que a lo mejor hay que inicializarlo de nuevo, la verdad es que no se que hacer. He probado a destruir el objeto olist, pero nada. Lo curioso es que cuando entro lo primero que hago es cerrar las tablas que tengo abiertas pero tampoco me soluciona el problema..
Si alguien puede aclararme cual es el problema o por lo menos darme alguna pista que me pueda 'iluminar' se lo agradecería....
Saludos..
Elías Torres.