Cabeçalho no GRID mudar ordem do indice??

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

mmaciel11
Usuário Nível 2
Usuário Nível 2
Mensagens: 69
Registrado em: 23 Mar 2006 11:16
Localização: sao luis
Contato:

Cabeçalho no GRID mudar ordem do indice??

Mensagem por mmaciel11 »

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
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

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

Mensagem por Toledo »

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

Código: Selecionar todos

#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
mmaciel11
Usuário Nível 2
Usuário Nível 2
Mensagens: 69
Registrado em: 23 Mar 2006 11:16
Localização: sao luis
Contato:

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

Mensagem por mmaciel11 »

Bom dia TOLEDO,

eu monto a gride assim,

Código: Selecionar todos

// 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,

Código: Selecionar todos

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
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

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

Mensagem por Toledo »

Olá Marco, veja este exemplo:

Código: Selecionar todos

#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
mmaciel11
Usuário Nível 2
Usuário Nível 2
Mensagens: 69
Registrado em: 23 Mar 2006 11:16
Localização: sao luis
Contato:

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

Mensagem por mmaciel11 »

Blz amigao funcionou 100%
HBMake v1.55 - xHarbour Make
xHarbour build 0.99.60 (simplex)
Borland c++ 5.5.1
Responder