Clipper On Line • Ver Tópico - Cabeçalho no GRID mudar ordem do indice??

Cabeçalho no GRID mudar ordem do indice??

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Cabeçalho no GRID mudar ordem do indice??

Mensagempor mmaciel11 » 06 Out 2009 16:27

Boa Tarde,

tem alguma função que me deixe ao clicar no cabeçalho do grid mudar a ordem do indice, tipo irei fazer uma funcao para usar em codigo e outra no nome.

so queria saber se tem algum evento propriedade do grid !!!

desde ja agradeço

marco maciel
HBMake v1.55 - xHarbour Make
xHarbour build 0.99.60 (simplex)
Borland c++ 5.5.1
mmaciel11
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 69
Data de registro: 23 Mar 2006 11:16
Cidade/Estado: sao luis
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Cabeçalho no GRID mudar ordem do indice??

Mensagempor Toledo » 06 Out 2009 16:58

Olá Marco, faz um teste, acho que vai dar certo.

#include "minigui.ch"

Function Main

Priv aRows [20] [3]

   DEFINE WINDOW Form_1 ;
      AT 0,0 ;
      WIDTH 480 ;
      HEIGHT 300 ;
      TITLE 'Ordenar Grid' ;
      MAIN

      aRows [1]   := {'Simpson','Homer','555-5555'}
      aRows [2]   := {'Mulder','Fox','324-6432'}
      aRows [3]   := {'Smart','Max','432-5892'}
      aRows [4]   := {'Grillo','Pepe','894-2332'}
      aRows [5]   := {'Kirk','James','346-9873'}
      aRows [6]   := {'Barriga','Carlos','394-9654'}
      aRows [7]   := {'Flanders','Ned','435-3211'}
      aRows [8]   := {'Smith','John','123-1234'}
      aRows [9]   := {'Pedemonti','Flavio','000-0000'}
      aRows [10]   := {'Gomez','Juan','583-4832'}
      aRows [11]   := {'Fernandez','Raul','321-4332'}
      aRows [12]   := {'Borges','Javier','326-9430'}
      aRows [13]   := {'Alvarez','Alberto','543-7898'}
      aRows [14]   := {'Gonzalez','Ambo','437-8473'}
      aRows [15]   := {'Batistuta','Gol','485-2843'}
      aRows [16]   := {'Vinazzi','Amigo','394-5983'}
      aRows [17]   := {'Pedemonti','Flavio','534-7984'}
      aRows [18]   := {'Samarbide','Armando','854-7873'}
      aRows [19]   := {'Pradon','Alejandra','???-????'}
      aRows [20]   := {'Reyes','Monica','432-5836'}

      @ 10,10 GRID Grid_1 ;
      WIDTH 445 ;
      HEIGHT 240 ;
      HEADERS {'Last Name','First Name','Phone'} ;
      WIDTHS {140,140,140};
      ITEMS aRows ;
      VALUE 1 EDIT ;
      TOOLTIP 'Editable Grid Control' ;
      ON HEADCLICK { {||Ordem(1)} , {||Ordem(2)} , {||Ordem(3)} } ;
                JUSTIFY { BROWSE_JTFY_LEFT,BROWSE_JTFY_CENTER, BROWSE_JTFY_CENTER }

   END WINDOW

   CENTER WINDOW Form_1

   ACTIVATE WINDOW Form_1

Return

Func Ordem(nOrd)
aSort(aRows,,,{|x,y| x[nOrd] < y[nOrd]})
DELETE ITEM ALL FROM Grid_1 OF Form_1
FOR i=1 TO LEN(aRows)
Form_1.Grid_1.AddItem ( {aRows[i,1],aRows[i,2],aRows[i,3]} )
NEXT
Form_1.Grid_1.SetFocus
Retu Nil


Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

Re: Cabeçalho no GRID mudar ordem do indice??

Mensagempor mmaciel11 » 07 Out 2009 09:04

Bom dia TOLEDO,

eu monto a gride assim,

// GRID                          
@ 020,010 GRID Grid_Funcionario ;
WIDTH  620 ; // largura
HEIGHT 400 ;
HEADERS {"CodFunc","Funcionario","Data Nasc.","Admissão"} ;
WIDTHS  {65,280,80,80} ;
FONT "Arial" SIZE 09

Atualiza_GRID_Funcionario()


e preencho assim,

Function Atualiza_GRID_Funcionario()
             DELETE ITEM ALL FROM GRID_Funcionario OF Frm_Funcionario
             
         /*  ENCHE GRID */
         Funcionario->(DBGoTop())        
         Do While !Funcionario->(Eof())
            ADD ITEM { str(codfunc,5), nome, Dtoc(dt_nasc), Dtoc(dt_admis) } TO Grid_Funcionario OF Frm_Funcionario
            Funcionario->(DBSkip())
         Enddo
         
         MODIFY GRID_Funcionario OF Frm_Funcionario VALUE 1


como ficaria entao.. sou um pouco leigo

desde ja agradeço
HBMake v1.55 - xHarbour Make
xHarbour build 0.99.60 (simplex)
Borland c++ 5.5.1
mmaciel11
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 69
Data de registro: 23 Mar 2006 11:16
Cidade/Estado: sao luis
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Cabeçalho no GRID mudar ordem do indice??

Mensagempor Toledo » 07 Out 2009 12:48

Olá Marco, veja este exemplo:

#include "minigui.ch"

Function Main

HB_LANGSELECT("PT")
SET DATE  TO BRITISH
SET CENT  ON
SET EPOCH TO 1920
SET( _SET_DELETED   , .t.  )

AbreArq()

if Funcionario->(LastRec())=0
  Funcionario->(DBAppend())
  Funcionario->codfunc := 1
  Funcionario->Nome   := "PAULO CESAR TOLEDO"
  Funcionario->dt_nasc := CTOD("29/05/1962")
  Funcionario->dt_admis   := CTOD("01/01/2009")
  Funcionario->(DBAppend())
  Funcionario->codfunc := 2
  Funcionario->Nome   := "MARCO MACIEL"
  Funcionario->dt_nasc := CTOD("01/06/1980")
  Funcionario->dt_admis   := CTOD("01/05/2007")
  Funcionario->(DBAppend())
  Funcionario->codfunc := 3
  Funcionario->Nome   := "ROBERTO CARLOS"
  Funcionario->dt_nasc := CTOD("19/04/1943")
  Funcionario->dt_admis   := CTOD("20/10/2001")
  Funcionario->(DBAppend())
  Funcionario->codfunc := 4
  Funcionario->Nome   := "LUCIANO HUCK"
  Funcionario->dt_nasc := CTOD("03/09/1971")
  Funcionario->dt_admis   := CTOD("15/02/2009")
  Funcionario->(DBAppend())
  Funcionario->codfunc := 5
  Funcionario->Nome   := "SILVIO SANTOS"
  Funcionario->dt_nasc := CTOD("12/12/1930")
  Funcionario->dt_admis   := CTOD("25/08/1970")
  Funcionario->(DBAppend())
  Funcionario->codfunc := 6
  Funcionario->Nome   := "JOSE DA SILVA"
  Funcionario->dt_nasc := CTOD("22/07/1980")
  Funcionario->dt_admis   := CTOD("01/01/2009")
  Funcionario->(DBAppend())
  Funcionario->codfunc := 7
  Funcionario->Nome   := "MANOEL DOS SANTOS"
  Funcionario->dt_nasc := CTOD("18/01/1978")
  Funcionario->dt_admis   := CTOD("01/06/2006")
endif

DEFINE WINDOW Frm_Funcionario ;
AT 0,0 ;
WIDTH 550 ;
HEIGHT 300 ;
TITLE 'Ordenar Grid' ;
MAIN

@ 10,10 GRID Grid_Funcionario ;
WIDTH 530 ;
HEIGHT 240 ;
HEADERS {'CodFunc','Funcionário','Data Nasc.','Admissão'} ;
WIDTHS {65,280,80,80};
TOOLTIP 'Clique no cabeçalho do Grid para mudar a Ordem' ;
ON HEADCLICK { {||Ordem(1)} , {||Ordem(2)}, Nil, Nil } ;
FONT "Arial" SIZE 9

END WINDOW

Ordem(1)

CENTER WINDOW Frm_Funcionario

ACTIVATE WINDOW Frm_Funcionario

Return

Func Ordem(nOrd)
Funcionario->(DBSetOrder(nOrd))
DELETE ITEM ALL FROM Grid_Funcionario OF Frm_Funcionario
Funcionario->(DBGoTop())
Do While !Funcionario->(Eof())
ADD ITEM { strzero(codfunc,5), nome, Dtoc(dt_nasc), Dtoc(dt_admis) } TO Grid_Funcionario OF Frm_Funcionario
Funcionario->(DBSkip())
Enddo
MODIFY GRID_Funcionario OF Frm_Funcionario VALUE 1
Retu Nil

Func AbreArq()
Local aarq    := {}   
Local cPath   := DiskName()+":\"+CurDir()+"\"
Local ArqBase := cPath + "Func.DBF"
If ! FILE( (ArqBase) )
  Aadd( aArq , { 'codfunc'   , 'N' , 05 , 0 } )
  Aadd( aArq , { 'nome'      , 'C' , 30 , 0 } )
  Aadd( aArq , { 'dt_nasc'   , 'D' , 08 , 0 } )
  Aadd( aArq , { 'dt_admis'  , 'D' , 08 , 0 } )
  DBCreate     ( (ArqBase)   , aarq  )
EndIf
Use (ArqBase) Alias Funcionario new shared
If !File( cPath+'Func1.ntx' )
Index on strzero(codfunc,5) to (cPath)+"Func1"
Endif
If !File( cPath+'Func2.ntx' )
Index on Nome to (cPath)+"Func2"
Endif
Funcionario->(DBCLearIndex())
Funcionario->(DBSetIndex( cPath+'Func1'))
Funcionario->(DBSetIndex( cPath+'Func2'))
Retu Nil


Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

Re: Cabeçalho no GRID mudar ordem do indice??

Mensagempor mmaciel11 » 13 Out 2009 09:43

Blz amigao funcionou 100%
HBMake v1.55 - xHarbour Make
xHarbour build 0.99.60 (simplex)
Borland c++ 5.5.1
mmaciel11
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 69
Data de registro: 23 Mar 2006 11:16
Cidade/Estado: sao luis
Curtiu: 0 vez
Mens.Curtidas: 0 vez




Retornar para MiniGui

Quem está online

Usuários vendo este fórum: HASA e 10 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro