uan con GET ... VALID

uan con GET ... VALID

Postby albeiroval » Fri Apr 24, 2015 9:34 pm

Buenas tardes,

Como hago para que en un control GET no me valide si su valor no lo cambia el usuario.

Anexo el codigo que he probado.
Code: Select all  Expand view


....

REDEFINE GET oGet[1] VAR h["Factura"] ID 200 OF oDlg;
    PICTURE "9999999999";
    VALID ValidaNumeroFactura( oGet[1], h["Factura"] )
    // ON CHANGE ( msginfo("cambio el valor") )



....

static Function ValidaNumeroFactura( oGet, nFactura )
  // Local cFactura:= StrZero(nFactura, 12)
 
  ? oGet:value()
 
  oGet:Assign()
 
  ? oGet:value(), oGet:oGet:changed
 
  // ?  ( oGet:varget() <> oGet:oGet:original )
  /*
  if ExisteFacturaVenta( cFactura )
         MsgStop("Factura "+cFactura+" Existe", ovarsis:Empresa)
       Return FALSE
    endif   
    */

   
Return TRUE 
 


Usando la clausula ON CHANGE no me sirve porque al oprimir la primera tecla ( imagino que activa el :bKeychar ) solo me toma ese caracter.

saludos,
Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
User avatar
albeiroval
 
Posts: 370
Joined: Tue Oct 16, 2007 5:51 pm
Location: Barquisimeto - Venezuela

Re: uan con GET ... VALID

Postby cnavarro » Fri Apr 24, 2015 10:11 pm

Comprueba en la funcion de validacion o en el codeblock de validacion los valores a ver si sirve

if ::cCaption == ::oGet:Buffer

Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6541
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: uan con GET ... VALID

Postby albeiroval » Fri Apr 24, 2015 10:55 pm

Cristobal, gracias por reponder.

probe en la funcion que valida asi :
Code: Select all  Expand view

static Function ValidaNumeroFactura( oGet, nFactura )
  // Local cFactura:= StrZero(nFactura, 12)

  ? oGet:cCaption, oGet:oGet:Buffer, ( oGet:cCaption == oGet:oGet:Buffer )
   
  /*
  if ExisteFacturaVenta( cFactura )
         MsgStop("Factura "+cFactura+" Existe", ovarsis:Empresa)
       Return FALSE
    endif   
    */

   
Return TRUE 
 


Muestra lo siguiente :

oGet:cCaption = "vacio" ... el valor es numerico pero no muestra nada
oGet:oGet:Buffer = "vacio" ... el valor es numerico pero no muestra nada
( oGet:cCaption == oGet:oGet:Buffer ) = ".T." .. muestra .T.

Esto lo hace auque tipee '0' o cualquier otro valor numerico.

:(
Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
User avatar
albeiroval
 
Posts: 370
Joined: Tue Oct 16, 2007 5:51 pm
Location: Barquisimeto - Venezuela

Re: uan con GET ... VALID

Postby cnavarro » Fri Apr 24, 2015 11:12 pm

Compara lo siguiente:

Code: Select all  Expand view


MsgInfo( oGet:cCaption ), Msginfo( oGet:cText() )
 


modifica el valor
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6541
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: uan con GET ... VALID

Postby albeiroval » Fri Apr 24, 2015 11:46 pm

Cristobal,

MsgInfo( oGet:cCaption ) // = "nil"
Msginfo( oGet:cText() ) // ="muestra el valor tipeado"
Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
User avatar
albeiroval
 
Posts: 370
Joined: Tue Oct 16, 2007 5:51 pm
Location: Barquisimeto - Venezuela

Re: uan con GET ... VALID

Postby gautxori » Thu Apr 07, 2016 6:05 pm

Ejecuta un VALID de un Dialogo "sin permiso"

Activo varios Dialogos NOWAIT, dentro de la Ventana oWndIva

Se presentan todos correctamente PERO al final se activa un VALID OBRA() del Dialogo oDDAbmLin
que llamo desde la Funcion Lineas() que no he llamado AUN

Ya he probado a simplificar el problema es decir no llamar a todos para ver si hay "interferencias"

el valid de Obra lo he simplificado y solo saca un mensaje por pantalla , y SI lo hace pero NO debería
hasta que se le pase el control
Acabo de ver que lo activa el oLbx ¿?, ya que si comento la llamada A Lineas() FUNCIONA

por si acaso he eliminado e ON CHANGE con el mismo resultado,

No alcanzo a ver que sucede

---------------------------

DEFINE Window oWndIva From 0,0 to MaxRow(),MaxCol();
ICON oIconAbm;
COLOR "N/W+";
TITLE OemToAnsi("Apuntes con Iva");
BORDER NONE NOSYSMENU NOMINIMIZE NOMAXIMIZE
Barra()
Cfactura()
Dfactura()
Barra2()
Linea()
Lineas()
DbSelectArea("civa")
oDCObra:Enable()
oBtnRas:SetFocus()
DEFINE MSGBAR PROMPT "Obras 32, (c) Go & Go Software 2016" ;
OF oWndIva KEYBOARD DATE
ACTIVATE Window oWndIva MAXIMIZED;
ON INIT (oWnd:Disable());
VALID(Cerrar(),oWnd:Enable())


----
Static Function Linea()
DEFINE DIALOG oDDAbmLin OF oWndIva RESOURCE "IVA_LIN"
REDEFINE GET oObra VAR cObra ID 100 OF oDDAbmLin VALID Obra()
REDEFINE GET oFechal VAR dFechal ID 102 OF oDDAbmLin ReadOnly
REDEFINE GET oCuenta VAR cCuenta ID 103 OF oDDAbmLin ReadOnly
REDEFINE GET oConcep VAR cConcep ID 104 OF oDDAbmLin VALID Concepto()
REDEFINE GET oDescri VAR cDescri ID 105 OF oDDAbmLin
REDEFINE GET oImport VAR nImport PICTURE "@E 999,999,999.99" ID 106 OF oDDAbmLin VALID Importe()
REDEFINE GET oTipo VAR nTipo PICTURE "@E 99.99" ID 107 OF oDDAbmLin VALID (G_Linea(),.t.)
REDEFINE GET oNumasi VAR cNumasi ID 101 OF oDDAbmLin ReadOnly
REDEFINE BUTTON oBtnObr ID 109 OF oDDAbmLin ACTION (If(HelpObr(),VolHObra(.t.),VolHObra(.f.)),.t.)
REDEFINE BUTTON oBtnCto1 ID 112 OF oDDAbmLin ACTION (If(Helpcon(),VolHcon(.t.),VolHcon(.f.)),.t.)
ACTIVATE DIALOG oDDAbmLin NOWAIT;
Valid (oWndIva:End())
oDDAbmLin:Disable()
----
Static Function Lineas()
DEFINE DIALOG oDDAbmLins OF oWndIva RESOURCE "IVA_LINS"
REDEFINE LISTBOX oLbx;
FIELDS bliva->Obra,bliva->Asiento,;
dtoc(bliva->fecha),;
bliva->Cuenta,bliva->Concepto,;
bliva->Descrip,;
Transform(bliva->Base,"@E 999,999,999.99"),;
Transform(bliva->Tipo,"@E 99.99");
HEADERS "N.Obra","Asiento",;
xPadc("Fecha",75),xPadc("Cuenta",60),"Cpto.",;
xPadc("Descripcion",210),;
xpadc("Base",90),"Tipo";
FIELDSIZES 55,55,70,60,50,210,90,40;
ALIAS "BLIVA";
ON CHANGE Toma_Lin();
ID 110 OF oDDAbmlins
ACTIVATE DIALOG oDDAbmLins NOWAIT;
// on init (oDDAbmLins:Disable());
// Valid (.T.);
// oDDAbmLins:Disable()
return nil

-----
Static Function Obra()

Local lVuelta:=.f.
msginfo('obra')
Return lVuelta
Un saludo
___________________________________________________
La mente es como un paracaídas, solo funciona si se abre
Harbour 3.2.0dev (r1601050904) , Fivewin 16.04
User avatar
gautxori
 
Posts: 69
Joined: Thu Feb 25, 2010 12:44 pm
Location: Plentzia (Bizkaia)

Re: uan con GET ... VALID

Postby hmpaquito » Thu Apr 07, 2016 7:01 pm

Hola,

Yo lo solucioné modificando en la clase TGet.
Code: Select all  Expand view

DATA xValorOriginal
METHOD lOriginal()

// En metodo GotFocus() añade:
::xValorOriginal:= ::VarGet()

// Este metodo solo tiene sentido usarlo durante la edicion, especialmente en el VALID.
METHOD lOriginal()
RETURN ::xValorOriginal == ::VarGet()


Luego en el valid sólo tienes que preguntar por oGet:lOriginal(). Lo uso muchísimo en mis programas.
Salu2
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: uan con GET ... VALID

Postby gautxori » Fri Apr 08, 2016 6:38 am

Buenos días, intentaré reproducirlo a la tarde, aunque no "pillo" muy bien como hacerlo

de todas formas si opto por esta solución, habría que cambiar todos los GET con VALID ¿?
Muchas gracias
Un saludo
___________________________________________________
La mente es como un paracaídas, solo funciona si se abre
Harbour 3.2.0dev (r1601050904) , Fivewin 16.04
User avatar
gautxori
 
Posts: 69
Joined: Thu Feb 25, 2010 12:44 pm
Location: Plentzia (Bizkaia)

Re: uan con GET ... VALID

Postby Antonio Linares » Fri Apr 08, 2016 3:06 pm

Prueba a hacer esto:

REDEFINE GET oObra VAR cObra ID 100 OF oDDAbmLin VALID If( oObra:lFocused, Obra(), .T. )

si no lo soluciona, prueba asi:

REDEFINE GET oObra VAR cObra ID 100 OF oDDAbmLin VALID If( oDDAbmLin:lFocused, Obra(), .T. )

Esto sucede porque el diálogo pierde el foco. Despues de activarlo puedes hacer asi:

oDDAbmLin:SetFocus()
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42076
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: uan con GET ... VALID

Postby gautxori » Fri Apr 08, 2016 4:05 pm

Muchas gracias Antonio,
funciono perfectamente la primera opción,
voy viendo la Luz, :D
Un saludo
___________________________________________________
La mente es como un paracaídas, solo funciona si se abre
Harbour 3.2.0dev (r1601050904) , Fivewin 16.04
User avatar
gautxori
 
Posts: 69
Joined: Thu Feb 25, 2010 12:44 pm
Location: Plentzia (Bizkaia)


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 65 guests