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
Propiedades del GET
Propiedades del GET
Un saludo
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Re: Propiedades del GET
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)
Otro ejemplo con más propiedades modificadas
Espero que esto te pueda dar algunas luces
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 ) }
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()}
Saludos
Angel, Valencia, Venezuela
xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
Angel, Valencia, Venezuela
xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
Re: Propiedades del GET
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
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
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Re: Propiedades del GET
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
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
Re: Propiedades del GET
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.
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
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Re: Propiedades del GET
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...
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...
Saludos
Angel, Valencia, Venezuela
xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
Angel, Valencia, Venezuela
xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
Re: Propiedades del GET
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
Carlos G.
FiveWin 19.06 + Harbour 3.2, BCC 7 Windows 10
Re: Propiedades del GET
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
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
Pedro
gahetesoft@gmail.com
FWH12.06 BCC582, Xverce CW, Pelles C 6.00.4,PSPAD 4.54
y ahora con ADO
Re: Propiedades del GET
Más pruebas: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
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
Carlos G.
FiveWin 19.06 + Harbour 3.2, BCC 7 Windows 10