Ordenando Browse Array

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Ordenando Browse Array

Mensagem por asimoes »

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: Selecionar todos

    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: Selecionar todos

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
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Responder