FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour uan con GET ... VALID
Posts: 400
Joined: Tue Oct 16, 2007 05:51 PM
uan con GET ... VALID
Posted: Fri Apr 24, 2015 09: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 (fw): Select all Collapse
....

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: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
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: uan con GET ... VALID
Posted: 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 == ::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
Posts: 400
Joined: Tue Oct 16, 2007 05:51 PM
Re: uan con GET ... VALID
Posted: Fri Apr 24, 2015 10:55 PM
Cristobal, gracias por reponder.

probe en la funcion que valida asi :
Code (fw): Select all Collapse
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:Buffer = "vacio" ... el valor es numerico pero no muestra nada
( oGet:cCaption == oGet:Buffer ) = ".T." .. muestra .T.

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

:-)
Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: uan con GET ... VALID
Posted: Fri Apr 24, 2015 11:12 PM
Compara lo siguiente:

Code (fw): Select all Collapse
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
Posts: 400
Joined: Tue Oct 16, 2007 05:51 PM
Re: uan con GET ... VALID
Posted: 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
Posts: 69
Joined: Thu Feb 25, 2010 12:44 PM
Re: uan con GET ... VALID
Posted: Thu Apr 07, 2016 06: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
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: uan con GET ... VALID
Posted: Thu Apr 07, 2016 07:01 PM
Hola,

Yo lo solucioné modificando en la clase TGet.
Code (fw): Select all Collapse
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
Posts: 69
Joined: Thu Feb 25, 2010 12:44 PM
Re: uan con GET ... VALID
Posted: Fri Apr 08, 2016 06: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
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: uan con GET ... VALID
Posted: Fri Apr 08, 2016 03: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
Posts: 69
Joined: Thu Feb 25, 2010 12:44 PM
Re: uan con GET ... VALID
Posted: Fri Apr 08, 2016 04: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

Continue the discussion