Gracias por tomarse la molestia de leer mi petición:
Carlos: Con get no hay problema, tengo algo similiar a lo que me comentas para obtener estas teclas, solo necesito obtenerlas y hacer que funcionen en la clase xbrowse, de todas maneras muchas gracias por tu comentario...
Maestro Antonio:
Estoy trabajando con oBrw:SetTree() de xBrowse para obtener el árbol de directorios de un disco duro, pero como solo tiene 1 columna y el scroll horizontal no reposiciona el xbrowse para ver lo que esta oculto:
![Image](http://img14.imageshack.us/img14/876/j8f3.jpg)
He solucionado este detalle haciendo chapuza, ocultando la barra de scroll horizontal que por defecto muestra xbrowse con: oBrw:lHScroll := .F. y a la vez poniendo una barra de scroll independiente para agrandar la columna y mover el xbrowse:
Code: Select all | Expand
@ 30, nX1 xBROWSE oBrw SIZE nX2,425 Pixel OF oObj1 NOBORDER
@ 456, 01 SCROLLBAR oHScroll HORIZONTAL Pixel SIZE 192, 20 OF oObj1 RANGE 1, 1 ;
ON UP(IF(nX1 <= -2, (MueveBr(-10)),(SysRefresh()))) ON DOWN(IF(nX1 <= oBrw:aCols[1]:nWidth, (MueveBr(10)),(SysRefresh())))// ON THUMBPOS(nTrack:= oHScroll:GetPos(), oHScroll:SETPOS(nTrack), MSGInfo(nTrack))
Code: Select all | Expand
STATIC FUNCTION MueveBr(nMov)
LOCAL nLong,nPos,nRango
oHScroll:Show()
oHScroll:Refresh()
nX1:= nX1 - nMov
nX2:= nX2 + nMov
nRango:= oHScroll:GetRange()
nLong:= oBrw:aCols[1]:nWidth
nPos:= INT(nRango[2]) + (nMov/10)
oBrw:aCols[1]:nWidth:= nLong + nMov
oBrw:SetSize(nX2)
oBrw:Move(,nX1)
oBrw:Refresh()
oHScroll:SetRange(1,nPos)
oHScroll:SETPOS(nX2)
oHScroll:UPDATE()
SysRefresh()
RETURN Nil
Funciona, pero solo puedo mover el scroll con el mouse, aqui es donde necesito detectar VK_LEFT y VK_RIGHT dentro de xbrowse que siempre tiene el foco para mover el scroll como si fuera propio de xbrowse, temia que no pudiera detectarse sin modificar el método KeyDown().
¿ Cómo hacer que evalue un codeblock..?, Hasta ahora así he dejado el método cuando solo es 1 columna, que es lo más lógico para no afectar el funcionamiento normar de la Clase.
Code: Select all | Expand
CASE nKey == VK_LEFT
IF GetKeyState( VK_CONTROL )
::GoLeftMost()
ELSE
IF LEN(::aCols) == 1
msginfo("Aki la función","VK_LEFT")
ELSE
::GoLeft()
ENDIF
ENDIF
CASE nKey == VK_RIGHT
IF GetKeyState( VK_CONTROL )
::GoRightMost()
ELSE
IF LEN(::aCols) == 1
msginfo("Aki la función","VK_RIGHT")
ELSE
::GoRight()
ENDIF
ENDIF
Aqui dejo un ejemplo autocontenido
http://www.mediafire.com/download/9b4cwi7cyvbybaf/EXPLORAR.rar Gracias Maestro y estare pendiente de la solución..