xBrowse MergeVert

xBrowse MergeVert

Postby Biel EA6DD » Tue Nov 08, 2016 4:20 pm

Me disponia a usar la propiedad de fusión de celdas (combinación quizas mejor traducido), en definitiva Merge Vertical de xBrowse.
Y la idea era en un browse visualizar diferentes albranes de ventas, y fusionar las filas número, fecha y total si correspondian aun mismo albarán, y visualizar el detalle de lineas de artículos.

Busque y encontre un ejemplo de Mr.Rao, crei entender como funcionaba, y lo probe.
http://forums.fivetechsupport.com/viewtopic.php?f=3&t=28543&p=159813&hilit=lmergevert#p159813
A primera vista funcionaba perfecto, pero cuando dos albaranes correlativos eran de la misma fecha, o del mismo importe, tambien me fusionaba las filas.
Image
Image

Despues de volver a revisar el ejemplo, me doy cuenta que la columna total no se fusiona , y se comporta como yo desearia.
Image
Tras mirar nuevamente el código, veo donde esta el truco.
Se define el xBrowse usando dos veces el campo "INVOICE", y en el segundo le pone el titulo "TOTAL"
Code: Select all  Expand view  RUN
@ 10,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg DATASOURCE "TEST" ;
      COLUMNS "INVOICE", "INVOICE", "DATEPAY", "PAYMENT" ;
      HEADERS "INVOICE", "TOTAL",   "DATEPAY", "PAYMENT" ;
      CELL LINES NOBORDER

A continuación se modifica el codeblcok bStrData de la segunda columna para que visualice el total.
Code: Select all  Expand view  RUN
WITH OBJECT :Total
         :lMergeVert          := .t.
         :bStrData            := { || TRANSFORM( TEST->TOTAL, NumPict( 10, 2 ) ) }
         :nDataStrAlign       := AL_RIGHT
         :nHeadStrAlign       := AL_RIGHT
         :cSortOrder          := ""
      END

De esta forma entiendo que la segunda columna (total) tiene un codeblock que devuelve invoice (se usa para el merge) y otro que devuelve el total que es el que se visualiza.
Si bien esto funciona, creo que es algo enrevesado.

Revisando el código fuente de la clase propongo el siguiente cambio (que mantiene compatiblidad con versiones anteriores):
-Añadir un CodeBlock a la clase TXBrwColumn, bMerge. Que contendrá el codeblock a evaluar para merge.
-Modificar el método WorkMergeData(), si bMerge no está definido funcionará como ahora, y si esta definido lo evaluzara para determnar las filas a fusionar.
Línea 13910 xBrowse.prg
Code: Select all  Expand view  RUN

      IF ::bMerge==NIL
         uVal  := ::Value()
      ELSE
         uVal  := Eval( ::bMerge )
      ENDIF

Con esta modificación el código que uso en mi programa es:
Code: Select all  Expand view  RUN

...
   WITH OBJECT oBrw
      :SetDolphin( oDet, .F., .F.)  
      :SetColFromMySql("SerNum","Serie"+CRLF+"Nº.Albarán", .T.)
      WITH OBJECT ATail(:aCols)
         :lMergeVert  :=.T.   //Merge para SerNum
      END
      :SetColFromMySql("Fecha","Fecha", .T.)
      WITH OBJECT ATail(:aCols)
         :lMergeVert  :=.T.
         :bMerge      := {||oDet:SerNum } //Merge Fecha, tomando como referencia SerNum
      END
      :SetColFromMySql("ArtCod","Cod", .T.)
      :SetColFromMySql("ArtDes","Artículo",.T.)
      :SetColFromMySql("kgs","Kilos", .T.)
      :SetColFromMySql("Pvp","Precio", .T.)
      :SetColFromMySql("Importe","Importe",.t.)
      :SetColFromMySql("Lote","Lote",.t.)
      :SetColFromMySql("Total","Total",.T.)
      WITH OBJECT ATail(:aCols)
         :lMergeVert  :=.T.
         :bMerge      := {|| oDet:SerNum }  //Merge Total, tomando como referencia SerNum
      END

...

Que creo que para futuras modificaciones es más claro y legible que el ir asignando columnas que no son la que queremos visualizar, para después variar el bStrData y así obtener el resultado deseado.

Image
Perdon ha quedado un post un poco tocho, esto de viva voz se explica mucho más rápido, pero espero que se haya entendido, y que se pueda añadir si Antonio lo considera oportuno en venideras versiones.
User avatar
Biel EA6DD
 
Posts: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca

Re: xBrowse MergeVert

Postby Antonio Linares » Thu Nov 10, 2016 8:46 am

Biel,

Muchas gracias

Lo voy a comentar con Rao a ver cual es su opinión. A mi me parece excelente tu propuesta.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: xBrowse MergeVert

Postby Antonio Linares » Thu Nov 10, 2016 6:46 pm

Biel,

Incluido para la próxima versión de FWH

gracias! :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to FiveWin para Harbour/xHarbour

Who is online

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