Page 1 of 1

Leer una celda en un TxBrowse()

PostPosted: Mon May 01, 2006 12:35 pm
by Rafael Clemente
Estoy intentando hacer que al mover el ratón sobre un TxBrowse un campo Say me indique el contenido de las celdas sobre las que pasa el ratón, sin necesidad de clicar en ninguna de ellas. Hasta ahora he llegado aquí:
Code: Select all  Expand view
     @ 1,1 SAY ::oSay .....   // Para ver el contenido de cada celda
     oBrw:bMMoved := {|nR,nC| ::LeerCelda(nR, nC)}   // esto va Ok
......

METHOD LeerCelda(nR,nC)
nRow  := ::oBrw:MouseRowPos(nR)
nCol  := ::oBrw:MouseColPos(nC)
cData := ?????
::oSay:VarPut(STR(nRow)+STR(nCol) +"  "+ cData)
RETURN NIL

La pregunta, obviamente, es ¿cómo hago para obtener cData, o sea, el contenido de cada celda en nRow, nCol sin clicar en ella? ¿Alguien podría echarme una mano? Gracias
Rafael

PostPosted: Tue May 02, 2006 5:22 pm
by RenOmaS
cData := Eval( oBrw:aCols[ nCol ]:bStrData, oBrw )

PostPosted: Tue May 02, 2006 5:38 pm
by Rafael Clemente
Pues casi, pero no...

Efectivamente, tu solución lee el valor de la celda CUANDO SE CLICA EN ELLA. Creo que lo que yo necesito es una función más o menos así:

cData := MiFunción(nR, nC), que se llamaría desde oBrw:bMMoved

La idea es que devuelve cData al pasar el ratón sobre la celda, no al clicar.

De todas formas, muchas gracias

Rafael

PostPosted: Tue May 02, 2006 5:51 pm
by RenOmaS
revisando la clase twindow . esta evalua bMMoved.. deberias poner un flag para poder trazar si es que efectivamentente llama a este bloque dentro del metodo MouseMove().

Tambien intenta devolver 0 en tu funcion... es decir Return 0

;)

PostPosted: Tue May 02, 2006 5:59 pm
by Rafael Clemente
Si. Mi método se evalúa al mover el ratón. Es solamente esto:
Code: Select all  Expand view
::oBrw:bMMoved := {|y,x| ::LeerCelda(x,y)}

METHOD LeerCelda(x,y) CLASS TWorkLoad
LOCAL nCol  := ::oBrw:MouseColPos(x)
LOCAL nRow  := ::oBrw:MouseRowPos(y)
LOCAL cData
IF nCol > 0
   cData := Eval(::oBrw:aCols[ nCol ]:bStrData, ::oBrw )
   ::oSay:VarPut(STR(nCol,3,0) + STR(nRow,3,0) + "  " + cData)
   ::oSay:Refresh()
ENDIF
RETURN 0

Sé que se evalúa porque al mover el ratón, nCol y nRow se actualizan en pantalla. ¿Es esto a lo que te referías?

Re: Leer una celda en un TxBrowse()

PostPosted: Mon Jun 04, 2012 10:47 pm
by Marcelo Roggeri
Hola Rafael, he visto tu post y me intereso saber si lograste hacer que al pasar con el mouse sobre una celda del txbrowse poder leer el dato de la misma.
Comento que estoy desarrollando un almanaque personalizado y me seria interesante al pasar sobre el dia en cuestion poder iluminar dicha celda o cualquier otro efecto.
Te agradezco cualquier ayuda que puedas darme.
Saludos
Marcelo

Re: Leer una celda en un TxBrowse()

PostPosted: Tue Jun 05, 2012 3:45 am
by joseluisysturiz
Revisa este link a ver si te ayuda en algo...saludos... :shock:

viewtopic.php?f=6&t=22975&start=0

Re: Leer una celda en un TxBrowse()

PostPosted: Tue Jun 05, 2012 2:00 pm
by Marcelo Roggeri
Gracias Jose Luis por el post, leo y pruebo, luego comento
Saludos
Marcelo

Re: Leer una celda en un TxBrowse()

PostPosted: Tue Jun 05, 2012 2:37 pm
by Francisco Horta
Rafa,
se me ocurre que mandes un click a la posicion de esta forma a ver si te devuelve el valor

#define WM_CLICK 245

METHOD LeerCelda(x,y) CLASS TWorkLoad
LOCAL nCol := ::oBrw:MouseColPos(x)
LOCAL nRow := ::oBrw:MouseRowPos(y)
LOCAL cData
IF nCol > 0
cData := Eval(::oBrw:aCols[ nCol ]:bStrData, ::oBrw )
cData := ::oBrw:PostMsg(WM_CLICK,13,0)
::oSay:VarPut(STR(nCol,3,0) + STR(nRow,3,0) + " " + cData)
::oSay:Refresh()
ENDIF
RETURN 0


saludos
paco