Refrescar controles en folderex [RESUELTO]
Refrescar controles en folderex [RESUELTO]
Hola, foro
Estoy construyendo un folderex con _ y me gustaría saber cómo actualizar _ una vez grabado. Lo he intentado con ofld:refresh(), pero no actualiza los datos. Un ejemplo sencillo de lo que pretendo hacer es lo siguiente:
#include "FiveWin.ch"
function Main()
local oDlg, oFld, oNombre, cNombre, cApellido, oApellido
REQUEST DBFCDX
RDDSETDEFAULT ( "DBFCDX" )
DEFINE DIALOG oDlg SIZE 400, 300
USE TEST NEW ALIAS "TEST"
go top
cNombre =test->nombre
cApellido=test->apellido
@ 3, 5 FOLDEREX oFld PIXEL ;
PROMPT "&Uno", "&Dos" ;
SIZE 190, 120
@ 1, 1 GET oNombre VAR cNombre OF oFld:aDialogs[ 1 ]
@ 2, 1 GET oApellido VAR cApellido OF oFld:aDialogs[ 1 ]
@ 4, 14 BUTTON "Cambiar" of oFld:aDialogs[ 1 ] ACTION cambia(cNombre,oNombre, cApellido, oApellido, ofld)
@ 7.2, 14 BUTTON "Salir" ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTERED
return nil
function cambia(cNombre, oNombre, cApellido, oApellido, oFld)
local oDlg2, cNombre2, oNombre2, cApellido2, oApellido2
cNombre2:=cNombre
cApellido2:=cApellido
DEFINE DIALOG oDlg2 SIZE 400, 300
@ 1, 1 GET oNombre2 VAR cNombre2 OF oDlg2 SIZE 60,10
@ 3, 1 GET oApellido2 VAR cApellido2 OF oDlg2 SIZE 60,10
@ 7.2, 10 BUTTON "Cambiar" of oDlg2 ACTION (graba(cNombre, oNombre, cApellido, oApellido,;
cNombre2, oNombre2, cApellido2, oApellido2, ofld), odlg2:end())
@ 7.2, 20 BUTTON "Cancelar" ACTION oDlg2:End()
ACTIVATE DIALOG oDlg2 CENTERED
return nil
Function graba(cNombre, oNombre, cApellido, oApellido,;
cNombre2, oNombre2, cApellido2, oApellido2, ofld)
TEST->nombre:= cNombre2
TEST->apellido:=cApellido2
cNombre:=cNombre2
oNombre:varput(cNombre2)
oNombre:refresh()
cApellido:=cApellido2
oApellido:varput(capellido2)
oApellido:refresh()
ofld:refresh()
Return nil
Un saludo
Estoy construyendo un folderex con _ y me gustaría saber cómo actualizar _ una vez grabado. Lo he intentado con ofld:refresh(), pero no actualiza los datos. Un ejemplo sencillo de lo que pretendo hacer es lo siguiente:
#include "FiveWin.ch"
function Main()
local oDlg, oFld, oNombre, cNombre, cApellido, oApellido
REQUEST DBFCDX
RDDSETDEFAULT ( "DBFCDX" )
DEFINE DIALOG oDlg SIZE 400, 300
USE TEST NEW ALIAS "TEST"
go top
cNombre =test->nombre
cApellido=test->apellido
@ 3, 5 FOLDEREX oFld PIXEL ;
PROMPT "&Uno", "&Dos" ;
SIZE 190, 120
@ 1, 1 GET oNombre VAR cNombre OF oFld:aDialogs[ 1 ]
@ 2, 1 GET oApellido VAR cApellido OF oFld:aDialogs[ 1 ]
@ 4, 14 BUTTON "Cambiar" of oFld:aDialogs[ 1 ] ACTION cambia(cNombre,oNombre, cApellido, oApellido, ofld)
@ 7.2, 14 BUTTON "Salir" ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTERED
return nil
function cambia(cNombre, oNombre, cApellido, oApellido, oFld)
local oDlg2, cNombre2, oNombre2, cApellido2, oApellido2
cNombre2:=cNombre
cApellido2:=cApellido
DEFINE DIALOG oDlg2 SIZE 400, 300
@ 1, 1 GET oNombre2 VAR cNombre2 OF oDlg2 SIZE 60,10
@ 3, 1 GET oApellido2 VAR cApellido2 OF oDlg2 SIZE 60,10
@ 7.2, 10 BUTTON "Cambiar" of oDlg2 ACTION (graba(cNombre, oNombre, cApellido, oApellido,;
cNombre2, oNombre2, cApellido2, oApellido2, ofld), odlg2:end())
@ 7.2, 20 BUTTON "Cancelar" ACTION oDlg2:End()
ACTIVATE DIALOG oDlg2 CENTERED
return nil
Function graba(cNombre, oNombre, cApellido, oApellido,;
cNombre2, oNombre2, cApellido2, oApellido2, ofld)
TEST->nombre:= cNombre2
TEST->apellido:=cApellido2
cNombre:=cNombre2
oNombre:varput(cNombre2)
oNombre:refresh()
cApellido:=cApellido2
oApellido:varput(capellido2)
oApellido:refresh()
ofld:refresh()
Return nil
Un saludo
Last edited by Ramón J. on Thu Jan 23, 2020 5:56 am, edited 1 time in total.
FWH 20.12 BCC7
Re: Refrescar controles en folderex
https://i.imgur.com/B5GCljM.png
Mira:
Saludos y buén trabajo.
Mira:
Code: Select all
#Include "FiveWin.ch"
ANNOUNCE RDDSYS
REQUEST DBFCDX, DBFFPT
FUNCTION Main()
LOCAL oDlg, oFld, oNombre, cNombre := SPACE(30), cApellido := SPACE(20), ;
oApellido
RDDSETDEFAULT ( "DBFCDX" )
USE TEST2
INDEX ON Field->APELLIDO TO TEST2
SET ORDER TO 01
USE
USE TEST2 NEW ALIAS "TEST2" // en \samples solo para teste p/Ramon.
GO TOP
BROWSE()
cNombre := test2->nombre
cApellido := test2->apellido
DEFINE DIALOG oDlg SIZE 400, 300
@ 3, 5 FOLDEREX oFld PIXEL ;
PROMPT "&Uno", "&Dos" ;
SIZE 190, 120
@ 1, 1 GET oNombre VAR cNombre OF oFld:aDialogs[ 1 ]
@ 2, 1 GET oApellido VAR cApellido OF oFld:aDialogs[ 1 ]
@ 4, 14 BUTTON "Cambiar" of oFld:aDialogs[ 1 ] ;
ACTION cambia( cNombre, oNombre, cApellido, oApellido, ofld )
@ 7.2, 14 BUTTON "Salir" ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTERED
RETURN nil
FUNCTION cambia( cNombre, oNombre, cApellido, oApellido, oFld )
LOCAL oDlg2, cNombre2, oNombre2, cApellido2, oApellido2
cNombre2 := cNombre
cApellido2 := cApellido
DEFINE DIALOG oDlg2 SIZE 400, 300
@ 1, 1 GET oNombre2 VAR cNombre2 OF oDlg2 SIZE 60, 10
@ 3, 1 GET oApellido2 VAR cApellido2 OF oDlg2 SIZE 60, 10
@ 7.2, 10 BUTTON "Cambiar" of oDlg2 ;
ACTION ( graba( cNombre, oNombre, cApellido, oApellido, cNombre2, ;
oNombre2, cApellido2, oApellido2, ofld ), odlg2:end() )
@ 7.2, 20 BUTTON "Cancelar" ACTION oDlg2:End()
ACTIVATE DIALOG oDlg2 CENTERED
RETURN nil
FUNCTION graba( cNombre, oNombre, cApellido, oApellido, cNombre2, oNombre2, ;
cApellido2, oApellido2, ofld )
TEST2->nombre := cNombre2
TEST2->apellido := cApellido2
cNombre := cNombre2
oNombre:varput( cNombre2 )
oNombre:refresh()
cApellido := cApellido2
oApellido:varput( cApellido2 )
oApellido:refresh()
ofld:refresh()
RETURN nil
João Santos - São Paulo - Brasil
Re: Refrescar controles en folderex
Muchas gracias, João. Ahora funciona.
Una pregunta:
Si los controles get son de lectura, cómo se actualizarían? Siguiendo tu código sería así, pero no funciona:
Un saludo
Una pregunta:
Si los controles get son de lectura, cómo se actualizarían? Siguiendo tu código sería así, pero no funciona:
Code: Select all
#Include "FiveWin.ch"
ANNOUNCE RDDSYS
REQUEST DBFCDX, DBFFPT
FUNCTION Main()
LOCAL oDlg, oFld, oNombre, cNombre := SPACE(30), cApellido := SPACE(20), ;
oApellido
RDDSETDEFAULT ( "DBFCDX" )
USE TEST2
INDEX ON Field->APELLIDO TO TEST2
SET ORDER TO 01
USE
USE TEST2 NEW ALIAS "TEST2" // en \samples solo para teste p/Ramon.
GO TOP
BROWSE()
cNombre := test2->nombre
cApellido := test2->apellido
DEFINE DIALOG oDlg SIZE 400, 300
@ 3, 5 FOLDEREX oFld PIXEL ;
PROMPT "&Uno", "&Dos" ;
SIZE 190, 120
@ 1, 1 GET oNombre VAR cNombre OF oFld:aDialogs[ 1 ] READONLY UPDATE // <--------- con READONLY no actualiza
@ 2, 1 GET oApellido VAR cApellido OF oFld:aDialogs[ 1 ] READONLY UPDATE //<--------- con READONLY no actualiza
@ 4, 14 BUTTON "Cambiar" of oFld:aDialogs[ 1 ] ;
ACTION cambia( cNombre, oNombre, cApellido, oApellido, ofld )
@ 7.2, 14 BUTTON "Salir" ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTERED
RETURN nil
FUNCTION cambia( cNombre, oNombre, cApellido, oApellido, oFld )
LOCAL oDlg2, cNombre2, oNombre2, cApellido2, oApellido2
cNombre2 := cNombre
cApellido2 := cApellido
DEFINE DIALOG oDlg2 SIZE 400, 300
@ 1, 1 GET oNombre2 VAR cNombre2 OF oDlg2 SIZE 60, 10
@ 3, 1 GET oApellido2 VAR cApellido2 OF oDlg2 SIZE 60, 10
@ 7.2, 10 BUTTON "Cambiar" of oDlg2 ;
ACTION ( graba( cNombre, oNombre, cApellido, oApellido, cNombre2, ;
oNombre2, cApellido2, oApellido2, ofld ), odlg2:end() )
@ 7.2, 20 BUTTON "Cancelar" ACTION oDlg2:End()
ACTIVATE DIALOG oDlg2 CENTERED
RETURN nil
FUNCTION graba( cNombre, oNombre, cApellido, oApellido, cNombre2, oNombre2, ;
cApellido2, oApellido2, ofld )
TEST2->nombre := cNombre2
TEST2->apellido := cApellido2
cNombre := cNombre2
oNombre:varput( cNombre2 )
oNombre:refresh()
cApellido := cApellido2
oApellido:varput( cApellido2 )
oApellido:refresh()
ofld:refresh()
RETURN nil
FWH 20.12 BCC7
Re: Refrescar controles en folderex
READONLY = SOLO LECTURA, SOLO PUEDES LEER LA ESCRITURA. NO SE PUEDE MODIFICAR. NO ENTENDÍ LA PREGUNTA.
Saludos.
Saludos.
João Santos - São Paulo - Brasil
Re: Refrescar controles en folderex
Perdona, João, que no me haya explicado bien.
MIra;
En el folder pongo un get de sólo lectura
@ 1, 1 GET oNombre VAR cNombre OF oFld:aDialogs[ 1 ] READONLY UPDATE
Y quiero cambiar el valor mediante:
@ 4, 14 BUTTON "Cambiar" of oFld:aDialogs[ 1 ] ;
ACTION cambia( cNombre, oNombre, cApellido, oApellido, ofld )
Después se graba con la función:
graba( cNombre, oNombre, cApellido, oApellido, cNombre2, oNombre2, ;
cApellido2, oApellido2, ofld )
TEST2->nombre := cNombre2
TEST2->apellido := cApellido2
cNombre := cNombre2
oNombre:varput( cNombre2 )
oNombre:refresh()
cApellido := cApellido2
oApellido:varput( cApellido2 )
oApellido:refresh()
ofld:refresh()
Lo que quiero decir es que, después de grabar la modificación, no se actualizan los datos del
@ 1, 1 GET oNombre VAR cNombre OF oFld:aDialogs[ 1 ] READONLY UPDATE
Un saludo
MIra;
En el folder pongo un get de sólo lectura
@ 1, 1 GET oNombre VAR cNombre OF oFld:aDialogs[ 1 ] READONLY UPDATE
Y quiero cambiar el valor mediante:
@ 4, 14 BUTTON "Cambiar" of oFld:aDialogs[ 1 ] ;
ACTION cambia( cNombre, oNombre, cApellido, oApellido, ofld )
Después se graba con la función:
graba( cNombre, oNombre, cApellido, oApellido, cNombre2, oNombre2, ;
cApellido2, oApellido2, ofld )
TEST2->nombre := cNombre2
TEST2->apellido := cApellido2
cNombre := cNombre2
oNombre:varput( cNombre2 )
oNombre:refresh()
cApellido := cApellido2
oApellido:varput( cApellido2 )
oApellido:refresh()
ofld:refresh()
Lo que quiero decir es que, después de grabar la modificación, no se actualizan los datos del
@ 1, 1 GET oNombre VAR cNombre OF oFld:aDialogs[ 1 ] READONLY UPDATE
Un saludo
FWH 20.12 BCC7
Re: Refrescar controles en folderex
Use WHEN( lCondicion )
Saludos.
Saludos.
João Santos - São Paulo - Brasil
Re: Refrescar controles en folderex
Perdona, João, que abuse de tu paciencia
En el ejemplo que has mandado, dónde iria esa función?
Un saludo
En el ejemplo que has mandado, dónde iria esa función?
Un saludo
FWH 20.12 BCC7
Re: Refrescar controles en folderex
João, lo he resuelto sustituyendo el GET por SAY y funciona el refresco. No es lo que yo quería, ya que estéticamente prefiero el GET.
Muchas gracias
Un saludo
Code: Select all
#Include "FiveWin.ch"
ANNOUNCE RDDSYS
REQUEST DBFCDX, DBFFPT
FUNCTION Main()
LOCAL oDlg, oFld, oNombre, cNombre := SPACE(30), cApellido := SPACE(20), ;
oApellido
RDDSETDEFAULT ( "DBFCDX" )
USE TEST2
INDEX ON Field->APELLIDO TO TEST2
SET ORDER TO 01
USE
USE TEST2 NEW ALIAS "TEST2" // en \samples solo para teste p/Ramon.
GO TOP
BROWSE()
cNombre := test2->nombre
cApellido := test2->apellido
DEFINE DIALOG oDlg SIZE 400, 300
@ 3, 5 FOLDEREX oFld PIXEL ;
PROMPT "&Uno", "&Dos" ;
SIZE 190, 120
@ 1, 1 SAY oNombre VAR cNombre OF oFld:aDialogs[ 1 ] SIZE 60,10 //<--- Cambio GET por SAY
@ 2, 1 SAY oApellido VAR cApellido OF oFld:aDialogs[ 1 ] SIZE 60,10 //<--- Cambio GET por SAY
@ 4, 14 BUTTON "Cambiar" of oFld:aDialogs[ 1 ] ;
ACTION cambia( cNombre, oNombre, cApellido, oApellido, ofld )
@ 7.2, 14 BUTTON "Salir" ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTERED
RETURN nil
FUNCTION cambia( cNombre, oNombre, cApellido, oApellido, oFld )
LOCAL oDlg2, cNombre2, oNombre2, cApellido2, oApellido2
cNombre2 := cNombre
cApellido2 := cApellido
DEFINE DIALOG oDlg2 SIZE 400, 300
@ 1, 1 GET oNombre2 VAR cNombre2 OF oDlg2 SIZE 60, 10
@ 3, 1 GET oApellido2 VAR cApellido2 OF oDlg2 SIZE 60, 10
@ 7.2, 10 BUTTON "Cambiar" of oDlg2 ;
ACTION ( graba( cNombre, oNombre, cApellido, oApellido, cNombre2, ;
oNombre2, cApellido2, oApellido2, ofld ), odlg2:end() )
@ 7.2, 20 BUTTON "Cancelar" ACTION oDlg2:End()
ACTIVATE DIALOG oDlg2 CENTERED
RETURN nil
FUNCTION graba( cNombre, oNombre, cApellido, oApellido, cNombre2, oNombre2, ;
cApellido2, oApellido2, ofld )
TEST2->nombre := cNombre2
TEST2->apellido := cApellido2
cNombre := cNombre2
oNombre:varput( cNombre2 )
oNombre:refresh()
cApellido := cApellido2
oApellido:varput( cApellido2 )
oApellido:refresh()
ofld:refresh()
RETURN nil
Un saludo
FWH 20.12 BCC7
Re: Refrescar controles en folderex
Teste ahora. mira se comprende el uso de WHEN( .T. ) // .F.
Code: Select all
// \SAMPLES\RAMON2.PRG
#Include "FiveWin.ch"
ANNOUNCE RDDSYS
REQUEST DBFCDX, DBFFPT
STATIC lCondicion := .T.
FUNCTION Main()
LOCAL oDlg, oFld, oNombre, cNombre := SPACE(30), cApellido := SPACE(20), ;
oApellido
RDDSETDEFAULT ( "DBFCDX" )
USE TEST2
INDEX ON Field->APELLIDO TO TEST2
SET ORDER TO 01
USE
USE TEST2 NEW ALIAS "TEST2" // en \samples solo para teste p/Ramon.
GO TOP
BROWSE()
cNombre := test2->nombre
cApellido := test2->apellido
DEFINE DIALOG oDlg SIZE 400, 300
@ 3, 5 FOLDEREX oFld PIXEL ;
PROMPT "&Uno", "&Dos" ;
SIZE 190, 120
@ 1, 1 GET oNombre VAR cNombre OF oFld:aDialogs[ 1 ] WHEN( lCondicion )
@ 2, 1 GET oApellido VAR cApellido OF oFld:aDialogs[ 1 ] WHEN( lCondicion )
@ 4, 14 BUTTON "Cambiar" of oFld:aDialogs[ 1 ] ;
ACTION cambia( cNombre, oNombre, cApellido, oApellido, oFld )
@ 7.2, 14 BUTTON "Salir" ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTERED
RETURN nil
FUNCTION cambia( cNombre, oNombre, cApellido, oApellido, oFld )
LOCAL oDlg2, cNombre2, oNombre2, cApellido2, oApellido2
cNombre2 := cNombre
cApellido2 := cApellido
DEFINE DIALOG oDlg2 SIZE 400, 300
@ 1, 1 GET oNombre2 VAR cNombre2 OF oDlg2 SIZE 60, 10
@ 3, 1 GET oApellido2 VAR cApellido2 OF oDlg2 SIZE 60, 10
@ 7.2, 10 BUTTON "Cambiar" of oDlg2 ;
ACTION ( graba( cNombre, oNombre, cApellido, oApellido, cNombre2, ;
oNombre2, cApellido2, oApellido2, oFld ), odlg2:end() )
@ 7.2, 20 BUTTON "Cancelar" ACTION oDlg2:End()
ACTIVATE DIALOG oDlg2 CENTERED
lCondicion := .F.
RETURN nil
FUNCTION graba( cNombre, oNombre, cApellido, oApellido, cNombre2, oNombre2, ;
cApellido2, oApellido2, oFld )
TEST2->nombre := cNombre2
TEST2->apellido := cApellido2
cNombre := cNombre2
oNombre:varput( cNombre2 )
oNombre:refresh()
cApellido := cApellido2
oApellido:varput( cApellido2 )
oApellido:refresh()
oFld:refresh()
/*
IF RAMON_CONDICION
lCondicion := .F.
oNobre:Refresh()
ENDIF
*/
RETURN nil
João Santos - São Paulo - Brasil
Re: Refrescar controles en folderex [RESUELTO]
Ya funciona
Muchas gracias, João
Un saludo
Muchas gracias, João
Un saludo
FWH 20.12 BCC7