Congelar columnas en xBrowse (Solucionado)

Congelar columnas en xBrowse (Solucionado)

Postby abelcervantes » Mon May 13, 2013 10:44 pm

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?
Last edited by abelcervantes on Thu Jun 06, 2013 4:52 pm, edited 1 time in total.
abelcervantes
 
Posts: 37
Joined: Tue Aug 10, 2010 2:05 pm

Re: Congelar columnas en xBrowse

Postby rolando » Tue May 14, 2013 4:35 pm

Abel,

Yo lo hago así:

Code: Select all  Expand view

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


Espero te sirva.

Rolando :D
User avatar
rolando
 
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Re: Congelar columnas en xBrowse

Postby abelcervantes » Wed May 15, 2013 8:41 pm

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.
abelcervantes
 
Posts: 37
Joined: Tue Aug 10, 2010 2:05 pm

Re: Congelar columnas en xBrowse

Postby FranciscoA » Thu May 16, 2013 12:52 am

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.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Congelar columnas en xBrowse

Postby nageswaragunupudi » Sat May 18, 2013 8:40 am

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
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10248
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Congelar columnas en xBrowse

Postby FranciscoA » Sun May 19, 2013 4:00 am

Abel, prueba esto: viewtopic.php?f=6&t=26360#p145111
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Congelar columnas en xBrowse

Postby abelcervantes » Wed Jun 05, 2013 9:39 pm

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?
abelcervantes
 
Posts: 37
Joined: Tue Aug 10, 2010 2:05 pm

Re: Congelar columnas en xBrowse

Postby FranciscoA » Thu Jun 06, 2013 1:19 am

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  Expand view
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.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Congelar columnas en xBrowse

Postby FranciscoA » Thu Jun 06, 2013 1:35 am

Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Congelar columnas en xBrowse

Postby abelcervantes » Thu Jun 06, 2013 4:51 pm

Estimado Francisco:

¡Muchisimas gracias!

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

Realmente este es un maravilloso foro.
abelcervantes
 
Posts: 37
Joined: Tue Aug 10, 2010 2:05 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 77 guests