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.


Despues de volver a revisar el ejemplo, me doy cuenta que la columna total no se fusiona , y se comporta como yo desearia.

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"
A continuaci贸n se modifica el codeblcok bStrData de la segunda columna para que visualice el total.
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
Con esta modificaci贸n el c贸digo que uso en mi programa es:
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.

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


Despues de volver a revisar el ejemplo, me doy cuenta que la columna total no se fusiona , y se comporta como yo desearia.

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"
@ 10,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg DATASOURCE "TEST" ;
聽 聽 聽 COLUMNS "INVOICE", "INVOICE", "DATEPAY", "PAYMENT" ;
聽 聽 聽 HEADERS "INVOICE", "TOTAL", 聽 "DATEPAY", "PAYMENT" ;
聽 聽 聽 CELL LINES NOBORDERA continuaci贸n se modifica el codeblcok bStrData de la segunda columna para que visualice el total.
WITH OBJECT :Total
聽 聽 聽 聽 聽:lMergeVert 聽 聽 聽 聽 聽:= .t.
聽 聽 聽 聽 聽:bStrData 聽 聽 聽 聽 聽 聽:= { || TRANSFORM( TEST->TOTAL, NumPict( 10, 2 ) ) }
聽 聽 聽 聽 聽:nDataStrAlign 聽 聽 聽 := AL_RIGHT
聽 聽 聽 聽 聽:nHeadStrAlign 聽 聽 聽 := AL_RIGHT
聽 聽 聽 聽 聽:cSortOrder 聽 聽 聽 聽 聽:= ""
聽 聽 聽 ENDDe 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
聽 聽 聽 IF ::bMerge==NIL
聽 聽 聽 聽 聽uVal 聽:= ::Value()
聽 聽 聽 ELSE
聽 聽 聽 聽 聽uVal 聽:= Eval( ::bMerge )
聽 聽 聽 ENDIFCon esta modificaci贸n el c贸digo que uso en mi programa es:
...
聽 聽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.

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.