Como actualizar variables desde la clausula on init...
Posted: Wed Mar 14, 2007 11:15 am
Hola a todos...
Vamos a ver, tengo el siguiente codigo:
*********************************
FUNCTION Selecciona_proveedor(odlg6)
*********************************
LOCAL hBmp := ReadBitmap( CurDir() + "\go.bmp" ),cSearch:='',nKey,oTmr,num_compra:=''
LOCAL NumD
.....
SELECT 0
USE (CURDIR()+"\proveedor.dbf") VIA "DBFCDX" new
INDEX ON codigo TO codigo
proveedor->(OrdSetFocus( "codigo"))
DEFINE dialog odlg10 resource "seleccion_proveedor"
redefine LISTBOX oBrw; &&nos creamos un brows para la muestra
FIELDS hBmp, proveedor->codigo, proveedor->nombre;
HEADERS "","Código", "Nombre" ID 500 OF oDlg10
oBrw:aActions := {{|| NIL},{|| MsgBeep(),ordenar_por_codigo(aux,oBrw),oBrw:Upstable(),oBrw:Refresh()}, {|| MsgBeep(),ordenar_por_nombre(aux,oBrw),oBrw:Upstable(),oBrw:Refresh()}}
obrw:bKeyChar = { | nKey, nFlags | busca_proveedor( nKey, @cSearch ),oBrw:Refresh(),oSay:REFRESH()}
redefine say oSay prompt cSearch id 130 of odlg10 COLOR CLR_BLACK, CLR_WHITE
redefine button id 140 of odlg10 action MsgBeep(),( nRecno := proveedor->( Recno() ),oDlg10:End(),Compras(num_compra,NumD,FecD))
redefine button id 150 of odlg10 action MsgBeep(),odlg10:end()
redefine get oNumD var NumD id 4002 of odlg10
ACTIVATE dialog odlg10;
on init calendario(odlg10,FecD)
odlg6:end()
RETURN nil
************************
FUNCTION calendario(odlg10,FecD)
************************
LOCAL oFecha
FecD:=DATE()
@ 202, 132 DTPICKER oFecha VAR FecD OF oDlg10 SIZE 90, 20 PIXEL COLOR CLR_BLACK, CLR_WHITE
RETURN nil
El tema es el siguiente. Cuando llamo a la funcion Selecciona_proveedor(odlg6), en la clausula on init del dialogo me llama a la funcion Calendario(). Hasta ahi todo correcto. El DtPicker me muestra el dia correcto y me lo almacena en la variable FecD (que por defecto coge el dia actual). El problema que tengo es que esta variable se inicializa en el init y luego aunque yo le cambie la fecha en el calendario esta variable no se actualiza. He probado con la clausula on change en la funcion calendario() pero tampoco me actualiza la variable.
Alguien puede indicarme como puedo hacerlo...
Saludos y gracias.
Elías Torres.
Vamos a ver, tengo el siguiente codigo:
*********************************
FUNCTION Selecciona_proveedor(odlg6)
*********************************
LOCAL hBmp := ReadBitmap( CurDir() + "\go.bmp" ),cSearch:='',nKey,oTmr,num_compra:=''
LOCAL NumD
.....
SELECT 0
USE (CURDIR()+"\proveedor.dbf") VIA "DBFCDX" new
INDEX ON codigo TO codigo
proveedor->(OrdSetFocus( "codigo"))
DEFINE dialog odlg10 resource "seleccion_proveedor"
redefine LISTBOX oBrw; &&nos creamos un brows para la muestra
FIELDS hBmp, proveedor->codigo, proveedor->nombre;
HEADERS "","Código", "Nombre" ID 500 OF oDlg10
oBrw:aActions := {{|| NIL},{|| MsgBeep(),ordenar_por_codigo(aux,oBrw),oBrw:Upstable(),oBrw:Refresh()}, {|| MsgBeep(),ordenar_por_nombre(aux,oBrw),oBrw:Upstable(),oBrw:Refresh()}}
obrw:bKeyChar = { | nKey, nFlags | busca_proveedor( nKey, @cSearch ),oBrw:Refresh(),oSay:REFRESH()}
redefine say oSay prompt cSearch id 130 of odlg10 COLOR CLR_BLACK, CLR_WHITE
redefine button id 140 of odlg10 action MsgBeep(),( nRecno := proveedor->( Recno() ),oDlg10:End(),Compras(num_compra,NumD,FecD))
redefine button id 150 of odlg10 action MsgBeep(),odlg10:end()
redefine get oNumD var NumD id 4002 of odlg10
ACTIVATE dialog odlg10;
on init calendario(odlg10,FecD)
odlg6:end()
RETURN nil
************************
FUNCTION calendario(odlg10,FecD)
************************
LOCAL oFecha
FecD:=DATE()
@ 202, 132 DTPICKER oFecha VAR FecD OF oDlg10 SIZE 90, 20 PIXEL COLOR CLR_BLACK, CLR_WHITE
RETURN nil
El tema es el siguiente. Cuando llamo a la funcion Selecciona_proveedor(odlg6), en la clausula on init del dialogo me llama a la funcion Calendario(). Hasta ahi todo correcto. El DtPicker me muestra el dia correcto y me lo almacena en la variable FecD (que por defecto coge el dia actual). El problema que tengo es que esta variable se inicializa en el init y luego aunque yo le cambie la fecha en el calendario esta variable no se actualiza. He probado con la clausula on change en la funcion calendario() pero tampoco me actualiza la variable.
Alguien puede indicarme como puedo hacerlo...
Saludos y gracias.
Elías Torres.