Propiedades del GET

Post Reply
User avatar
Pedro
Posts: 457
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Propiedades del GET

Post by Pedro »

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
User avatar
ADBLANCO
Posts: 299
Joined: Mon Oct 22, 2007 3:03 pm
Location: Valencia - Venezuela

Re: Propiedades del GET

Post by ADBLANCO »

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: Select all

  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: Select all

    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
User avatar
Pedro
Posts: 457
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Propiedades del GET

Post by Pedro »

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, _ 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
ermatica
Posts: 44
Joined: Mon Nov 12, 2007 1:50 pm
Location: España

Re: Propiedades del GET

Post by ermatica »

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
User avatar
Pedro
Posts: 457
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Propiedades del GET

Post by Pedro »

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
User avatar
ADBLANCO
Posts: 299
Joined: Mon Oct 22, 2007 3:03 pm
Location: Valencia - Venezuela

Re: Propiedades del GET

Post by ADBLANCO »

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

:oops: No se, pudiera trabajar...
Saludos

Angel, Valencia, Venezuela

xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
FiveWiDi
Posts: 910
Joined: Mon Oct 10, 2005 2:38 pm

Re: Propiedades del GET

Post by FiveWiDi »

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:oGet:Original, .T.) VALID ( IF(ValorDummy <> oMiGet:oGet:Buffer, Hagoloquequiero(), Nil),.T.)

Saludos
Carlos G.
Un Saludo
Carlos G.

FiveWin 19.06 + Harbour 3.2, BCC 7 Windows 10
User avatar
Pedro
Posts: 457
Joined: Tue Mar 21, 2006 7:30 pm
Location: Córdoba (España)

Re: Propiedades del GET

Post by Pedro »

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
FiveWiDi
Posts: 910
Joined: Mon Oct 10, 2005 2:38 pm

Re: Propiedades del GET

Post by FiveWiDi »

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 19.06 + Harbour 3.2, BCC 7 Windows 10
Post Reply