Clipper On Line • Ver Tópico - Ordenando Browse Array
Mudar para estilo Clássico
Projeto HwGui - Biblioteca visual para Harbour/xHarbour
Postar uma resposta

Ordenando Browse Array

05 Mar 2018 10:29

Consegui fazer ordenação de um browse tipo array
Ao clicar no Header da coluna faço a ordenação do vetor ascendente/descendente : função OrdenaArray()
Definição do array
Código:
    oBrowse1:freeze         := 1
    oBrowse1:aArray         := {}
    oBrowse1:HighlightStyle := 1
    oBrowse1:sepColor       := 16711680
    oBrowse1:tcolorSel      := Hwg_Rgb(0, 0, 0)
    oBrowse1:bcolorSel      := 16776960
    oBrowse1:headColor      := 16711680
    oBrowse1:lAdjRight      := .F.
    oBrowse1:AddColumn( HColumn():New('Código', hwg_ColumnArBlock() ,'C', 6, 2 ,.F.,0,,'@R 99.99',,,,,{|| OrdenaArray(1) },,,,))
    oBrowse1:AddColumn( HColumn():New('Ativo', hwg_ColumnArBlock()  ,'C', 5, 0 ,.F.,1,1,,,,,,{|| OrdenaArray(2) },,,,))
    oBrowse1:AddColumn( HColumn():New('Sigla', hwg_ColumnArBlock() ,'C', 20, 0 ,.F.,0,,,,,,,{|| OrdenaArray(3) },,,,))
    oBrowse1:AddColumn( HColumn():New('Descrição', hwg_ColumnArBlock() ,'C', 50, 0 ,.F.,0,,,,,,,{|| OrdenaArray(4) },,,,))
    oBrowse1:AddColumn( HColumn():New('Responsável', hwg_ColumnArBlock() ,'C', 40, 0 ,.F.,0,,,,,,,{|| OrdenaArray(5) },,,,))
    oBrowse1:AddColumn( HColumn():New('Cargo', hwg_ColumnArBlock() ,'C', 60, 0 ,.F.,0,,,,,,,{|| OrdenaArray(6) },,,,))
    oBrowse1:AddColumn( HColumn():New('Recebe Circular?', hwg_ColumnArBlock() ,'C',16, 0 ,.F.,1,1,,,,,,,,,,))
    oBrowse1:AddColumn( HColumn():New('Rec. Circ. Mensal?', hwg_ColumnArBlock() ,'C',20, 0 ,.F.,1,1,,,,,,,,,,))

Função Ordena Array
Código:
FUNCTION OrdenaArray( nPos )
THREAD STATIC lDescend := .F.

   nColBrow := nPos
   
   IF ! lDescend
      aSort( ThisForm:oBrowse1:aArray ,,, {|x,y| y[nColBrow] > x[nColBrow] } )
      lDescend := .T.
   ELSE
      aSort( ThisForm:oBrowse1:aArray ,,, {|x,y| x[nColBrow] > y[nColBrow] } )
      lDescend := .F.
   ENDIF
       
   ThisForm:oBrowse1:Refresh()

RETURN Nil
Postar uma resposta