Fórum Grid com Seta(Parecido com o Windows Explorer) #299688

17/10/2005

0

Ae galera, tudo certo?
Alguém sabe como eu faço pra colocar setinha no DBGrid para ficar parecido com o Windows Explorer. Quero o seguinte, clicar no titulo da coluna e ele organizar e colocar a setinha. Vai ai a image de como eu gostaria que ficasse:
[URL=http://imageshack.us][img:99f7208cfa]http://img352.imageshack.us/img352/3544/grid0dy.jpg[/img:99f7208cfa][/URL]
Olhem a setinha no NOME...

Se possivel sem componentes terceiros..
vlw


Lucianobarreto

Lucianobarreto

Responder

Post mais votado

17/10/2005

Cara eu faço + ou - assim:
1º crio uma variavel onde guardo o tipo de ordenação (Asc ou Desc) e uma outra para guardar o campo que estou ordenando.
2º Coloco as imagens em um imagelist
3º no OnDrawCollun do Dbgrid:

 Application.processmessages;
 if dbGrid.Columns[Column.Index].Field.Origin = sOrderByCampo then
 begin
  {** Exibe imagem no título da coluna seleciona indicando a ordem do OrderBy}
  if UpperCase(sOrderByOrdem) = ´ASC´  
  then ImageList.Draw(dbGrid.Canvas, Rect.Left + (Column.Width - 19), 1, 27)
  else ImageList.Draw(dbGrid.Canvas, Rect.Left + (Column.Width - 19), 1, 26);
end;


3º no OnTitleClik

 if sOrderByCampo = Column.Field.Origin
 then
  if sOrderByOrdem = ´Asc´ then sOrderByOrdem:= ´Desc´ else sOrderByOrdem:= ´Asc´;

 {** Define o campo que será usado para o OrderBy}
 sOrderByCampo := Column.Field.Origin;

 {** Altera o Sql da tabela com os padrões de OrderBy conforme o campo selecionado}
 if ibQuery <> nil
 then
  begin
   Application.ProcessMessages;
   if ibQuery.Active then ibQuery.Close;
   ibQuery.SQL[ibQuery.SQL.Count -1]:= ´order by ´+sOrderByCampo + ´ ´ + sOrderByOrdem;
   if not ibQuery.Prepared then ibQuery.Prepare;
   ibQuery.open;
  end;


Ve se te ajuda em algo, qualquer coisa, da um toque.


Steve_narancic

Steve_narancic
Responder

Gostei + 1

Mais Posts

17/10/2005

Lucianobarreto

Opa, deu certinho...
vlw


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar