Congelar columnas en xBrowse (Solucionado)

Post Reply
abelcervantes
Posts: 37
Joined: Tue Aug 10, 2010 2:05 pm

Congelar columnas en xBrowse (Solucionado)

Post 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?
Last edited by abelcervantes on Thu Jun 06, 2013 4:52 pm, edited 1 time in total.
User avatar
rolando
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Re: Congelar columnas en xBrowse

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

Re: Congelar columnas en xBrowse

Post 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.
User avatar
FranciscoA
Posts: 1964
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Congelar columnas en xBrowse

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

Fwxh1204-MySql-TMySql
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: Congelar columnas en xBrowse

Post 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
Regards

G. N. Rao.
Hyderabad, India
User avatar
FranciscoA
Posts: 1964
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Congelar columnas en xBrowse

Post by FranciscoA »

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

Fwxh1204-MySql-TMySql
abelcervantes
Posts: 37
Joined: Tue Aug 10, 2010 2:05 pm

Re: Congelar columnas en xBrowse

Post 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?
User avatar
FranciscoA
Posts: 1964
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Congelar columnas en xBrowse

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

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

Re: Congelar columnas en xBrowse

Post by FranciscoA »

Tambien puedes sobre-escribir el metodo. Mira aqui:
http://forums.fivetechsupport.com/viewt ... 419#p28178
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh1204-MySql-TMySql
abelcervantes
Posts: 37
Joined: Tue Aug 10, 2010 2:05 pm

Re: Congelar columnas en xBrowse

Post 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.
Post Reply