FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Propiedades del GET
Posts: 464
Joined: Tue Mar 21, 2006 07:30 PM
Propiedades del GET
Posted: Mon Nov 09, 2009 01:10 PM

Hola a todos
Veamos si me explico lo que quiero. Me gustar铆a saber como acceder a tres propiedades del objeto get, si las tiene.
La primera es la de saber si ha cambiado, es decir si se ha editado o no.
La segunda es, si se ha editado, que contiene el buffer de edici贸n.
La tercera ser铆a saber que conten铆a el get antes de ser editado.
Mirando la clase TGET he visto que hay un bChange / bChanged, y pensando que me podr铆a valer para saber si el get se edit贸 o no, lo he utilizado en una funci贸n, pero siempre me devuelve NIL, edite o no el GET.
As铆 mismo he visto un ::oGet:Buffer y un ::oGet:Original, pero no logro acceder ya que me da un error que no encuentra estos mensajes, no los encuentro como m茅todos, el modulo TGET.
驴Alguno sabr铆a indicarme como acceder, en caso de que las haya, a estas propiedades?
Lo necesito para comparar el buffer original de un get, con el buffer editado, a fin de saber si debo cambiar o no otras variables del di谩logo de edici贸n, en funci贸n de si se cambi贸 o no un get

Gracias a todos

Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Posts: 299
Joined: Mon Oct 22, 2007 03:03 PM
Re: Propiedades del GET
Posted: Mon Nov 09, 2009 01:41 PM
Cuando una propiedad de un objeto empiece por 'b'; te indica que es un bloque de c贸digo
Ahora bi茅n dicho bloque sirve generalmente para modificar un comportamiento de la clase

Entonces cuando tu te refieres a bchange : es el bloque que efectuar谩 cada vez que detecte un cambio en el contenido de Tget (inclusive cada nueva tecla pisada)



Code (fw): Select all Collapse
  REDEFINE GET            oGetFilt    ;
           VAR            cSeek       ;
           ID             201 OF oDlg ;
           MESSAGE        'Escriba los datos para la b煤squeda'
  oGetFilt:bChange  := { || FiltroSql( @oLbx , cSeek , @oQuery , eval(bSeek,cSeek)) ,;
                           eval(bRowCount) }
  oGetFilt:bKeyDown := { | nKey | iif(  nKey==VK_RETURN , oLbx:Setfocus() , NIL ) }


Otro ejemplo con m谩s propiedades modificadas

Code (fw): Select all Collapse
    REDEFINE  GET oRamo  VAR cRamo   ID 202 OF oDlg;
              PICTURE "@!@K";
              MESSAGE "Indique El Ramo, (F4 o Doble Click=>Lista)";
              ON CHANGE val_val({||IIF(!EMPTY(cRamo),Verifica_cRamo(cRamo),.f.),oPlan:Refresh(),oPlan:Click(.t.)});
              WHEN !lEdit

    oRamo:bKeyDown  := { |nKey|iif(nKey==VK_F4,eval(bRamo),;
                                       (iif(nKey==VK_RETURN,(Verifica_cRamo(cRamo),oPlan:Refresh(),oPlan:Click(.t.)),)))}

    oRamo:bLDblClick:= {|| eval(bRamo)}

    oRamo:bGotFocus := {|| oButMod:Disable()    ,;
                           oButActiva:Disable() ,;
                           oButInserta:Disable(),;
                           oButDupli:Disable()  ,;
                           oButElim:Disable()   ,;
                           oSay1:Hide()         ,;
                           EVAL(bSay2)          ,;
                           oButListar:Enable()}


Espero que esto te pueda dar algunas luces
Saludos



Angel, Valencia, Venezuela



xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
Posts: 464
Joined: Tue Mar 21, 2006 07:30 PM
Re: Propiedades del GET
Posted: Mon Nov 09, 2009 03:02 PM

Hola Angel
Gracias por la explicaci贸n, que me ha quedado claro por si en otra ocasi贸n necesito usar de esto, pero no es lo que busco.
Como dec铆a, necesito saber si el get se edit贸, es decir, en la validaci贸n que hago de 茅l necesito saberlo, despu茅s necesitar铆a saber el valor original del get antes de su edici贸n, el buffer lo puedo saber por oGet:Varget(), que contiene el valor despu茅s de la edici贸n. Por ponerte un ejemplo, imagina un albar谩n que al hacerlo se le cambian algunos datos que vienen de la tabla de clientes, al modificar el albar谩n y validar el cliente, los datos se modifican y yo lo que quiero es saber si el cliente se edit贸, entonces modifico los datos, si el cliente no se edit贸 dejo los datos que est谩n ya grabados en el albar谩n, independientemente de si esos datos son los del cliente o modificados para ese albar谩n en concreto.Por eso quiero comparar el original con el buffer, por si el usuario digita de nuevo el mismo cliente, le cambio los datos por los originales del cliente, si digita otro, los cambio por los del nuevo cliente y si no edita el cliente dejo los que est谩n.
Gracias de nuevo, Angel

Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Posts: 44
Joined: Mon Nov 12, 2007 01:50 PM
Re: Propiedades del GET
Posted: Mon Nov 09, 2009 03:26 PM

Hola Pedro,

No s茅 si te sirve, pero una posibilidad es comparar el valor que tiene el GET, si usas una variable, con lo que hay en la base de datos antes de grabar.

Un cordial saludo
Ernesto

Posts: 464
Joined: Tue Mar 21, 2006 07:30 PM
Re: Propiedades del GET
Posted: Mon Nov 09, 2009 04:13 PM

Hola Ernesto
No se trata de verificar cuando grabo, yo saco el registro a un array y lo manejo desde el array, lo que necesito es verificar si se edit贸 el get, para al validarlo, si se ha editado, poner los valores del cliente en el array, pero si no se ha editado, dejar los valores como est谩n. De ah铆 el saber si se ha editado, o no ese get.

Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Posts: 299
Joined: Mon Oct 22, 2007 03:03 PM
Re: Propiedades del GET
Posted: Mon Nov 09, 2009 06:25 PM

Bueno, y si utilizas una variable local l贸gica que le cambias el valor en el ON MODIFY del get

Algo Asi:

LOCAL oGet,;
cVariable,;
lChange:=.F.,;
bModif

bModif:={ || lChange:=.T. }

REDEFINE GET oGET VAR cVariable .......,;
ON CHANGE eval(bModif)
.
.
.
.
.
IF lChange
// Almaceno
ENDIF

No se, pudiera trabajar...

:oops:

Saludos



Angel, Valencia, Venezuela



xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
Re: Propiedades del GET
Posted: Mon Nov 09, 2009 10:44 PM
Pedro wrote:Hola Ernesto
No se trata de verificar cuando grabo, yo saco el registro a un array y lo manejo desde el array, lo que necesito es verificar si se edit贸 el get, para al validarlo, si se ha editado, poner los valores del cliente en el array, pero si no se ha editado, dejar los valores como est谩n. De ah铆 el saber si se ha editado, o no ese get.



A ver si lo digo bien:

10,20 GET oMiGet VAR cMiGet When ( ValorDummy := oMiGet:Original, .T.) VALID ( IF(ValorDummy <> oMiGet:Buffer, Hagoloquequiero(), Nil),.T.)

Saludos
Carlos G.

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 464
Joined: Tue Mar 21, 2006 07:30 PM
Re: Propiedades del GET
Posted: Tue Nov 10, 2009 10:06 AM

Hola Carlos
Gracias por la aportaci贸n, al menos ya no me da error de que no encuentra el m茅todo o el mensaje, pero no s茅 porque buffer y original me vienen a nil.
Hago la comprobaci贸n en una funci贸n, a donde env铆o el get, el changed del get me viene bien, F si no ha habido edici贸n T si la ha habido, eso ya es un paso importante, pero no logro extraer ni el buffer ni el Original, har茅 unas cuantas pruebas m谩s a ver si lo consigo

Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
Re: Propiedades del GET
Posted: Tue Nov 10, 2009 03:50 PM
Pedro wrote:Hola Carlos
Gracias por la aportaci贸n, al menos ya no me da error de que no encuentra el m茅todo o el mensaje, pero no s茅 porque buffer y original me vienen a nil.
Hago la comprobaci贸n en una funci贸n, a donde env铆o el get, el changed del get me viene bien, F si no ha habido edici贸n T si la ha habido, eso ya es un paso importante, pero no logro extraer ni el buffer ni el Original, har茅 unas cuantas pruebas m谩s a ver si lo consigo


M谩s pruebas:

10,20 GET oMiGet VAR cMiGet When ( ValorDummy := cMiGet, .T.) VALID ( oMiGet:Assign(),IF(ValorDummy <> cMiGet, Hagoloquequiero(), Nil),.T.)

o quiz谩s:

10,20 GET oMiGet VAR cMiGet When ( ValorDummy := cMiGet, .T.) VALID ( Self:Assign(),IF(ValorDummy <> cMiGet, Hagoloquequiero(), Nil),.T.)


Suerte,
Carlos G.

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Continue the discussion