FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Congelar columnas en xBrowse (Solucionado)
Posts: 38
Joined: Tue Aug 10, 2010 02:05 PM
Congelar columnas en xBrowse (Solucionado)
Posted: 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?

Posts: 593
Joined: Sat May 12, 2007 11:47 AM
Re: Congelar columnas en xBrowse
Posted: Tue May 14, 2013 04:35 PM
Abel,

Yo lo hago así:

Code (fw): Select all Collapse
for f = 4 to 30   // columnas a ocultar
  oBrw:aCols[f]:hide()
next


Espero te sirva.

Rolando :-)
Posts: 38
Joined: Tue Aug 10, 2010 02:05 PM
Re: Congelar columnas en xBrowse
Posted: Wed May 15, 2013 08: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.

Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Congelar columnas en xBrowse
Posted: 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
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Congelar columnas en xBrowse
Posted: Sat May 18, 2013 08: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
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Congelar columnas en xBrowse
Posted: Sun May 19, 2013 04:00 AM

Abel, prueba esto: viewtopic.php?f=6&t=26360#p145111
Saludos.

Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 38
Joined: Tue Aug 10, 2010 02:05 PM
Re: Congelar columnas en xBrowse
Posted: Wed Jun 05, 2013 09: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?

Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Congelar columnas en xBrowse
Posted: Thu Jun 06, 2013 01: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 (fw): Select all Collapse
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
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Congelar columnas en xBrowse
Posted: Thu Jun 06, 2013 01:35 AM

Tambien puedes sobre-escribir el metodo. Mira aqui:

viewtopic.php?f=6t=6317hilit=sobreescribir+methodsid=78ce4d41cc2c248cf5733591351f9419#p28178
Saludos.

&&&

Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 38
Joined: Tue Aug 10, 2010 02:05 PM
Re: Congelar columnas en xBrowse
Posted: Thu Jun 06, 2013 04: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.

Continue the discussion