Page 1 of 1

Congelar columnas en xBrowse (Solucionado)

Posted: Mon May 13, 2013 10:44 pm
by abelcervantes
Tengo el siguiente inconveniente cuando congelo columnas en el xBrowse:

Tengo de un xBrowse de 30 columnas, congelo la columna 3, muevo la celda activa hacia la derecha (hasta el final), algunas columnas quedan ocultas ( 4, 5, 6, etc.) por el congelamiento. Hasta ahí todo está bien.

El problema es cuando pulso la tecla hacia la izquierda para volver, las columnas que quedaron ocultas ( 4, 5, 6, etc.) no aparecen hasta que llego a la columna 1 y continúo pulsando la tecla a la izquierda recién empiezan a aparecer las columnas ocultadas.

¿No deberían aparecer las columnas ocultadas (4, 5, 6, etc.) cuando este intentando llegar a la columna 3?

Re: Congelar columnas en xBrowse

Posted: Tue May 14, 2013 4:35 pm
by rolando
Abel,

Yo lo hago así:

Code: Select all

for f = 4 to 30   // columnas a ocultar
  oBrw:aCols[f]:hide()
next
Espero te sirva.

Rolando :D

Re: Congelar columnas en xBrowse

Posted: Wed May 15, 2013 8:41 pm
by abelcervantes
Gracias Rolando, pero no quiero que las columnas 4 al 30 queden ocultas.

Estoy usando el nFreeze para congelar las tres primeras columnas de modo que cuando muevo el puntero a la derecha (hasta la última columna), varias columnas quedan ocultas (automáticamente) debido a que las tres primeras columnas están congeladas.

oBrw:nFreeze := 3

Hasta ahí todo funciona bien.
Mi problema es que cuando muevo el puntero hacia la izquierda llevandolo a la tercer columna (congelada) debería aparecer la columnas ocultadas, pero no sucede así.
Las columnas que quedaron ocultas solo aparecen cuando llego con el puntero a la primer columna y continúo pulsando la tecla hacia la izquierda.

Re: Congelar columnas en xBrowse

Posted: Thu May 16, 2013 12:52 am
by FranciscoA
Abel.
Yo tambien tengo ese pequeño inconveniente.
Un un dialog tengo 2 xbrowses. En el primero 50 columnas y congelada la 1 y 2da col, y en el segundo tengo 4 columnas. Al recorrer las columnas en el primer browse, se va actualizando el segundo con algunos datos. Al inicio y si voy hacia la derecha, todo correcto, pero cuando regreso, al llegar a las congeladas, ya no funciona el refrescamiento del 2do browse aunque llegue hasta la primer col congelada y siga presionando hacia la izquierda. Por ejemplo, visibles tengo 8 columnas incluyendo las congeladas. Si llego hasta la 50 y regreso, cuando llego a la 42 que está antes de las congeladas, ya no trabaja lo descrito, ni van apareciendo estas columnas, sino hasta cuando llego a la numero 1 y continuo con las flechitas hacia la izquierda.

Creo que xbrowse aun no cuenta con esta funcionalidad (si no me equivoco). Sería interesante si se pudiera contar con ella.

Por el momento, he codificado en el keydown para que manteniendo oprimida la tecla VK_CONTROL e introduciendo un valor, se active la columna deseada, y por lo consiguiente la accion que esperaba.

Saludos.

Re: Congelar columnas en xBrowse

Posted: Sat May 18, 2013 8:40 am
by nageswaragunupudi
abelcervantes wrote:Tengo el siguiente inconveniente cuando congelo columnas en el xBrowse:

Tengo de un xBrowse de 30 columnas, congelo la columna 3, muevo la celda activa hacia la derecha (hasta el final), algunas columnas quedan ocultas ( 4, 5, 6, etc.) por el congelamiento. Hasta ahí todo está bien.

El problema es cuando pulso la tecla hacia la izquierda para volver, las columnas que quedaron ocultas ( 4, 5, 6, etc.) no aparecen hasta que llego a la columna 1 y continúo pulsando la tecla a la izquierda recién empiezan a aparecer las columnas ocultadas.

¿No deberían aparecer las columnas ocultadas (4, 5, 6, etc.) cuando este intentando llegar a la columna 3?
This is the behaviour of xbrowse

Re: Congelar columnas en xBrowse

Posted: Sun May 19, 2013 4:00 am
by FranciscoA

Re: Congelar columnas en xBrowse

Posted: Wed Jun 05, 2013 9:39 pm
by abelcervantes
Estimado Francisco:

Antes que nada, muchas gracias por tu ayuda, estoy seguro que con el dato que me diste podré soluccionar mi problema.

Solo que... disculpa la ignorancia, pero, ¿dónde coloco la rutina (metodo) que has desarrollado?
¿Acaso debo colocarlo en mi programa? y ¿que pasos debo seguir para incluirlo?

Re: Congelar columnas en xBrowse

Posted: Thu Jun 06, 2013 1:19 am
by FranciscoA
Abel.
Yo acostumbro modificar la class original, y reconstruir la libreria.

Otra manera, más sencilla es hacer una copia de la class txbrowse al directorio de tu aplicacion, y ahí sustituyes el METHOD Goleft() por el que te muestro mas abajo. En esto colaboramos Rolando y el suscrito, y posteriormente fue perfeccionado por Mr. Nages. Una vez sustituido el metodo, agregas el prg a tu compilacion y listo.

Code: Select all

METHOD GoLeft( lOffset, lRefresh )  CLASS TXBrowse

   ::CancelEdit()

   if ::nMarqueeStyle == MARQSTYLE_NOMARQUEE  .or. ( ::nMarqueeStyle >= MARQSTYLE_HIGHLROW .and. ::bClrRowFocus == nil )
      lOffset := .t.
   endif

   DEFAULT lOffset  := .f., lRefresh := .t.

   // Begin insert new code
   if ::nFreeze > 0 .and. ::nColOffSet > 1 .and. ::nColSel == ::nFreeze + 1
      lOffset := .t.
   endif
   // end of inserted code

   if ( !lOffset .and. ::IsDisplayPosVisible( ::nColSel - 1 ) ) .or. ;
      ( ::nColOffset == 1 .and. ::nColSel > 1 )
      ::nColSel--
      if lRefresh
         if ::FullPaint()
            ::Super:Refresh( .t. )
         else
            ::DrawLine( .t. )
         endif
      endif
   elseif ::nColOffset > 1
      ::nColOffset--
      ::GetDisplayCols()
      if lRefresh
         ::Super:Refresh( ::FullPaint() )
      endif
   endif

   if ::oHScroll != nil
      ::oHScroll:GoUp()
   endif
   ::Change( .f. )

return nil
 
Cualquier duda posteala en este maravilloso foro.
Saludos.

Re: Congelar columnas en xBrowse

Posted: Thu Jun 06, 2013 1:35 am
by FranciscoA
Tambien puedes sobre-escribir el metodo. Mira aqui:
http://forums.fivetechsupport.com/viewt ... 419#p28178
Saludos.

Re: Congelar columnas en xBrowse

Posted: Thu Jun 06, 2013 4:51 pm
by abelcervantes
Estimado Francisco:

¡Muchisimas gracias!

Logré solucionar mi problema con la rutina y el procedimiento que me recomendaste.

Realmente este es un maravilloso foro.