Page 1 of 1

tamaño renglones xbrowse

Posted: Thu Dec 22, 2011 6:49 pm
by Francisco Horta
hola foro,

Me inetersa tener de diferenetes tamaños en renglones en un xbrowse, ya que en _ algunos productos tienen algunas notas( color rojo y este campo es un MEMO), por lo tanto el tamaño puede variar, alguna idea de como hacerlo?
adjunto imagen como me gustaria que quedara, (el producto + notas un solo renglon)

Image

Uploaded with ImageShack.us

gracias
paco

Re: tamaño renglones xbrowse

Posted: Thu Dec 22, 2011 7:36 pm
by El Loco
Francisco en "Samples" fíjate en Testmerg.prg. Ahi hace lo que vos queres.
Un abrazo.

Re: tamaño renglones xbrowse

Posted: Thu Dec 22, 2011 8:06 pm
by Francisco Horta
Gracias Loco,
le echare un vistazo
salu2
paco

Re: tamaño renglones xbrowse

Posted: Fri Dec 23, 2011 4:02 pm
by Francisco Horta
parece que no me funciono :-(

alguna otra sugerencia??
saludos
paco

Re: tamaño renglones xbrowse

Posted: Sat Dec 24, 2011 2:49 pm
by Rick Lipkin
Loco, Francisco

I am following this thread with much interest .. I posted a thread similar to this question in the English Forum and Rao helped in creating a function to AutoSize a row based on the character depth of the Memo column .. unfortunately, the depth of the column once set .. would not resize based on the actual depth of the Memo column of each row ..

http://forums.fivetechsupport.com/viewt ... 95#p114995

I tested my code and added the two columns I wanted merged like in the .. TestMerg.prg sample :

// Following two lines for vertical cell merging
oBrw:Customer:lMergeVert := .t.
oBrw:Description:lMergeVert := .t.

But it did not work :(

Rick Lipkin

Code: Select all

oRsReq:Filter := ""
oRsReq:Filter := "datereceived = null and datecancelled = null"

lOK := .F.
DEFINE ICON oICO RESOURCE "CLIENTS"

DEFINE WINDOW oWnd1                        ;
      FROM 0,0 to 35,100                   ;
      TITLE cTITLE                         ;
      MENU Buildmenu( oRsReq )             ;
      ICON oICO                            ;
      NOSYSMENU                            ;
      NOMINIMIZE                           ;
      NOZOOM                               ;
      MDICHILD

@ 0, 0 xBROWSE oBrw of oWnd1               ;
       RECORDSET oRsReq                    ;
       COLUMNS "PARTDESC",                 ; // insert for stock
               "CPHONE1",                  ;
               "VENDOR",                   ;
               "VPHONE1",                  ;
               "BIN",                      ;
               "STOCKNO",                  ;
               "DATEREQUESTED",            ;
               "DATEORDERED",              ;
               "DATESHIPPED",              ;
               "DATERECEIVED",             ;
               "DATECANCELLED",            ;
               "REQUESTNO"                 ;
       COLSIZES 138,75,100,75,33,80,65,65,65,65,65,65;
       HEADERS "Description",              ; // insert for stock
               "CustPhone",                ;
               "Vendor",                   ;
               "VendPhone",                ;
               "Bin",                      ;
               "Part Number",              ;
               "Requested",                ;
               "Ordered",                  ;
               "Shipped",                  ;
               "Received",                 ;
               "Cancelled",                ;
               "Request"                   ;
       AUTOSORT AUTOCOLS LINES CELL

       oWnd1:oClient := oBrw

   *   oBrw:nRowHeight := 45

    ADD oCol TO oBrw AT 1 DATA {|x| x := _ChkCust(oRsReq:Fields("clname"):Value,;
                oRsReq:Fields("cfname"):Value)  } HEADER "Customer" size 110

       oBrw:lFooter   := .t.
       oCol           := oBrw:aCols[ 1 ]
       oCol:bFooter   := { || Ltrim( Str( oBrw:KeyNo() ) ) + " / " + LTrim( Str( oBrw:KeyCount() ) ) }
       oCol:cHeader   := "Customer"
       oBrw:bChange   := { || oCol:RefreshFooter() }

       ADD oCol TO oBrw AT 8 DATA {|x| x := _ChkStock(oRsReq:Fields("OutOfStock"):Value)  } HEADER "For Stock" size 55

       oCol := oBrw:aCols[ 9 ]
       oCol:bStrData := { |x| x := if(oRsReq:eof,,oRsReq:Fields("DateRequested"):Value), If( Empty(x), '00/00/0000',DToC(x) ) }

       oCol := oBrw:aCols[ 10 ]
       oCol:bStrData := { |x| x := if(oRsReq:eof,,oRsReq:Fields("DateOrdered"):Value), If( Empty(x), '00/00/0000',DToC(x) ) }

       oCol := oBrw:aCols[ 11 ]
       oCol:bStrData := { |x| x := if(oRsReq:eof,,oRsReq:Fields("DateShipped"):Value), If( Empty(x), '00/00/0000',DToC(x) ) }

       oCol := oBrw:aCols[ 12 ]
       oCol:bStrData := { |x| x := if(oRsReq:eof,,oRsReq:Fields("DateReceived"):Value), If( Empty(x), '00/00/0000',DToC(x) ) }

       oCol := oBrw:aCols[ 13 ]
       oCol:bStrData := { |x| x := if(oRsReq:eof,,oRsReq:Fields("DateCancelled"):Value), If( Empty(x), '00/00/0000',DToC(x) ) }

       oBrw:aCols[ 2 ]:cDataType := "M"  // description

       // Following two lines for vertical cell merging
       oBrw:Customer:lMergeVert       := .t.
       oBrw:Description:lMergeVert    := .t.

       oBrw:bRClicked  := { | nRow, nCol | ShowPopup(oBrw,nROW,nCOL,;
                                           oRsReq,oBtn1,oBtn2,oBtn3,oBtn4,oBtn5,oBtn6 ) }
       oBrw:bLDblClick := { |nRow,nCol | _ReqView( "V", oRsReq,oBtn1,oBtn2,oBtn3,oBtn4,oBtn5,oBtn6,oWndFind) }
       oBrw:bKeyDown   := { |nKey| _Manual( nKey,oRsReq,oBtn1,oBtn2,oBtn3,oBtn4,oBtn5,oBtn6,oBrw ) }

       oBrw:bClrStd := {|| {CLR_BLACK, if( _CHkClosed(oRsReq) , RGB(179,203,204), CLR_WHITE ) } }

       oBrw:CreateFromCode()

ACTIVATE WINDOW oWND1 ;
         ON INIT( oBrw:SetFocus(), .F. ) ;
         VALID ( IIF( !lOK, ReqClose(.T.,oWnd1,oRsReq,oBar1,oBar2 ), .F. ))

Return(nil)
 

Re: tamaño renglones xbrowse

Posted: Tue Dec 27, 2011 3:47 pm
by Francisco Horta
Rick,
No se como explicarlo en ingles, pero creo es imposible hacerlo asi, ya que son 2 campos de un mismo registro tomandolos como un solo campo de un solo registro y poniendo el alto de la fila se ajuste automaticamente, entonces aqui el detalle es que cada registro puede tener alturas diferentes, aaaa y otra cosa, como es un campo MEMO que se ajustara el memo al ancho de la columna,,, ups lo voy a tener que solucionar poniendo un say y cada que recorra un registro ir actualizando ese sey que seria el campo MEMO,,,
saludos
paco

Re: tamaño renglones xbrowse

Posted: Tue Dec 27, 2011 8:23 pm
by MarioG
Paco;
interesante el tema, aunuqe no puedo aportar una solución :oops: , por favor no dejes de postear si lo consigues

muchas gracias

Re: tamaño renglones xbrowse

Posted: Wed Dec 28, 2011 2:38 pm
by pablovidal
Verificaste el ejemplo /fwh/samples/TestXbr6.prg

Re: tamaño renglones xbrowse

Posted: Wed Dec 28, 2011 5:40 pm
by Francisco Horta
Pablo
si lo vi y probe, funciona a medias, ya que el datalines no he podidio ajustarlo automaticamente calculando las lineas del campo memo, cada registro deberia tener un alto diferente del renglon y no he dado como hacerlo..
salu2
paco

Re: tamaño renglones xbrowse

Posted: Wed Dec 28, 2011 5:43 pm
by Francisco Horta
si existiera una datalines por cada row seria estupendo,,, asi le das exactamente el alto a cada fila
de hecho asi tengo mi xbrowse,nada del otro mundo

aoCols[2]:bStrData := { || ::oQryMesa:FieldGet("nombre") + CRLF + ALLTRIM(::oQryMesa:FieldGet("comentarios")) }

salu2
paco

Re: tamaño renglones xbrowse

Posted: Mon Jan 09, 2012 6:55 pm
by Raymundo Islas M.
Paco,

Me uno a los que nos interesa alguna solucion a este tema.

De momento, lo que hice fue hacerle un split al texto largo para poner varias lineas y usar colores para distinguir los renglones.

En mi caso lo estoy aplicando para un pequeño y limitado chat entre terminales.

Image

Saludos

PD : Por lo que veo, para que se te vaya el tren va a estar cañon.... ya que no lo sueltas para nada !!! jejeje

Re: tamaño renglones xbrowse

Posted: Mon Jan 09, 2012 10:23 pm
by RenOmaS
No he testado esto, pero puede funncionar, no tengo como probarlo.
Adiciona una data a la clase xbrowse

Code: Select all

     DATA lMultiHeight      INIT .F.   //NEW
Modifica o metodo DataHeight de la xbrowse

Code: Select all

  
 METHOD DataHeight( nAux )   INLINE If( ::lMultiHeight, ( nAux := 0, ;   //NEW
                                                          AEval ( ::aCols, { | o,n ] Max( nAux, o:DataHeight() ) } ), ; //Para traer la celda mas alta. //NEW
                                                          ::nRowHeight := nAux ), ), ; //asignamos el nRow. //NEW
                                         ::nRowHeight - iif(::nRowDividerStyle > LINESTYLE_NOLINES, 1, 0) - ;
                                         If(::nRowDividerStyle >= LINESTYLE_INSET, 1, 0)
 
Despues en tu prg haces.

Code: Select all

oXbr:lMultiHeight := .T.

Ahora esto creo que es mejor poner en el on init del dialog..puedes testar.

Seguro que en algun lado tenemos que recalcular el nMaxRows que es el maximo de lineas a pintar.
Pero por ahi debe ir los tiros.. Voy a testar cuando regrese de vagaciones :D.

Re: tamaño renglones xbrowse

Posted: Tue Jan 10, 2012 9:56 pm
by Raymundo Islas M.
RenOmaS,

Como ya he comentado anteriormente, las clases y todo lo relacionado nomas no se llevan conmigo :cry:

Pero creo que hace falta algo que "lea" el contenido de la celda para calcular el alto de la misma.
Si estoy equivocado, disculpa mi comentario.

Ojala los gurus del foro, encuentren alguna solucion a esto.

Saludos