TXBrowse: Asociar Indices a los headers de las columnas

TXBrowse: Asociar Indices a los headers de las columnas

Postby Carlos Mora » Fri Sep 07, 2007 9:50 am

Hola compañeros,

estoy cambiando un TSBrowse por un TXBrowse. En la configuración anterior tenía el TSBrowse definido de forma tal que al hacer dobleclick en una columna se cambiaba a un índice asociado, como en
Code: Select all  Expand view
         ADD COLUMN TO OBROWSE HEADER  "CONCEPTO" ;
            ORDER "CONCEPTO"

Como se hace lo mismo en TXBrowse? He estado buscando pero no encuentro nada relacionado en el código, aunque me parece haberlo visto en algun lado.

Saludos,

Carlos.
Carlos Mora
 
Posts: 989
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Postby Kleyber » Fri Sep 07, 2007 12:58 pm

Hola Carlos,

Usas asi:

Code: Select all  Expand view
   oBrw                  := TXBrowse():New( oDlg1 )
   oBrw:nMarqueeStyle    := MARQSTYLE_HIGHLROW
   oBrw:nColDividerStyle := LINESTYLE_LIGHTGRAY
   oBrw:nRowDividerStyle := LINESTYLE_LIGHTGRAY
   oBrw:bSeek            := {|c| DbSeek( Upper( c ) ) }


Y en las columnas, yo defino asi:

Code: Select all  Expand view
   oCol := oBrw:AddCol()
   oCol:cHeader       := "Código"
   oCol:bStrData      := { || IF( SELECT(oBrw:cAlias) > 0,PRO->codi,"")  }
   oCol:nDataStrAlign := AL_LEFT
   oCol:nHeadStrAlign := AL_LEFT
   oCol:nWidth        := 82
   oCol:bLClickHeader := {|| Checa_Indices(1,1,oBrw,"PRO") }
   oCol:AddBmpFile( "BLANK.BMP", .T. )
   oCol:AddBmpFile( "CLIP.BMP", .T. )
   oCol:nHeadBmpNo := 2

   oCol := oBrw:AddCol()
   oCol:cHeader       := "Descrição"
   oCol:bStrData      := { || IF( SELECT(oBrw:cAlias) > 0,PRO->nome,"")  }
   oCol:nDataStrAlign := AL_LEFT
   oCol:nHeadStrAlign := AL_LEFT
   oCol:nWidth        := 302
   oCol:bLClickHeader := {|| Checa_Indices(2,2,oBrw,"PRO") }
   oCol:AddBmpFile( "BLANK.BMP", .T. )
   oCol:AddBmpFile( "CLIP.BMP", .T. )
   oCol:nHeadBmpNo := 1


Donde la función Checa_Indices() es solo para cambiar el bitmap que aparece en el header, asi:

Code: Select all  Expand view
//----------------------------------------------------------------------------//
Function Checa_Indices( nX, nZ, oBrwX, xAlias )
// Verificação do set order e dos headers
// nX - Índice
// nZ - Posição da coluna no browse
// oBrwX - Browse
// xAlias - Tabela a ser atualizada
//----------------------------------------------------------------------------//

for nA := 1 to len( oBrwX:aCols )
    oCol := oBrwX:aCols[ nA ]
    if oCol:nHeadBmpNo > 0
       if nA = nZ
          oCol:nHeadBmpNo := 2
       else
          oCol:nHeadBmpNo := 1
       endif
    endif
next
sele (xAlias)
DbSetOrder(nX)
oBrwX:Refresh()
return nil


Espero que te ayude.

Saludos,
Kleyber Derick

FWH / xHb / xDevStudio / SQLLIB
User avatar
Kleyber
 
Posts: 581
Joined: Tue Oct 11, 2005 11:28 am
Location: São Luiz, Brasil

Postby Carlos Mora » Fri Sep 07, 2007 1:09 pm

Hola Kleyber

muchas gracias por el código. El unico inconveniente es que TXBrowse no se refesca bien si por ejemplo está en el renglon 4 y con el nuevo indice estamos en la clave 2. Y hacer un Refresh(.T.) hace un gotop que no es lo que quiero.
Hay que tocar el refresh antes para que pivotee de manera correcta sobre el registro actual.

Un saludo,

Carlos.
Carlos Mora
 
Posts: 989
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España


Return to FiveWin para Harbour/xHarbour

Who is online

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