Page 1 of 1

Como actualizar variables desde la clausula on init...

Posted: Wed Mar 14, 2007 11:15 am
by Elias Torres
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.

Posted: Wed Mar 14, 2007 12:13 pm
by Antonio Linares
Elías,

Tienes que pasar la variable por "referencia":

on init calendario(odlg10, @FecD)

Posted: Wed Mar 14, 2007 12:58 pm
by Elias Torres
Gracias Antonio, yo habia optado por crearme una variable public y actualizarla en la ejecucion de un boton y me funcionaba pero de esta otra forma me ahorro esa declaracion publica.


Gracias y saludos.

Elías Torres.