Fórum index da coluna dbgrid default #363869

13/09/2008

0

Ola em minha aplicao, tem a posibilidade do usuario cliclar o no titulo da coluna e arrastalo invertento as posicoes das colunas, gostaria de saber se tem alguma funcao do proprio dbgrid onde ele retorna as posiçoes originais no grid, desde ja agradeço.


Digaopachesen

Digaopachesen

Responder

Posts

14/09/2008

Marco Salles

Ola em minha aplicao, tem a posibilidade do usuario cliclar o no titulo da coluna e arrastalo invertento as posicoes das colunas,


isto ja é default .. Nãp precisa de nenhuma codificação extra


gostaria de saber se tem alguma funcao do proprio dbgrid onde ele retorna as posiçoes originais no grid, desde ja agradeço


Pode criar.. Mas acho que fechar e Abri o DataSet ja Resolve


Responder

Gostei + 0

14/09/2008

Digaopachesen

Marcos nao funcionou, bom minha intecao era o seguinte q simplesmente tivese uma funcao do dbgrid q simplismente ele reoganizace as coluna como default, fechando e abrindo o dataset nao funcionau como vc comentou. se caso exista uma outra posibilidade estarei ai para testa as dicas enviadas. VLW T+.


Responder

Gostei + 0

15/09/2008

Marco Salles

Marcos nao funcionou


humm .. Sei . Deve ser pq voce tem os Tfields definidos , criados em Designed

Porém voce pode tentar a função abaixo , que pode ser adicionada ao
evento Onclick do Grid . <Este evento não existe mas pode ser Adicionado>

var
i:integer;
begin
for i:=0 To SeuDataSet.FieldCount-1 do
  SeuDataSet.Fields[i].Index:=SeuDataSet.Fields[i].FieldNo-1;



Responder

Gostei + 0

15/09/2008

Diegotiemann

Quando tenho uma DbGrid ligada um tclientDataSet através de um dataSource uso o seguinte comando

meuClientDataSet.IndexName:=´DEFAUL_ORDER´;

Mas pelo que me parece não é bem o que você prescisa.


Responder

Gostei + 0

16/09/2008

Digaopachesen

Marcos salles, utilizei tua rotina com um wwdbgrid e deu resultado, mas se eu mudar a possicção de varias coluna tenho q executala mais de uma vez para obter o resultado desejado, vou realizar mais alguns teste para ver o pq disso, vlw pela ajuda,
ja a função a baixo
meuClientDataSet.IndexName:=´DEFAUL_ORDER´;
não utilizei pq nao estou utilizando clientDataSet, mas valeu pela dica...


Responder

Gostei + 0

16/09/2008

Fernando

eu uso o ClientDataSet e funciona normal
segue a função

eu uso o TwwDBGrid do infopower

mas pode usar com qualquer um grid

var
IndexDef : TIndexDef;
IntIndex : integer;
strName : String;
blnDescending : boolean;
begin

blnDescending := False;

strName := ´TEMP´+AFieldName;
intIndex := ClientDataSet.IndexDefs.IndexOf(strName);

If ClientDataSet.IndexName = strName then
begin
// ativa indice
IndexDef := ClientDataSet.IndexDefs.Find(strName);
blnDescending := indexDef.DescFields = ´´;
end;

If IntIndex >= 0 then
begin
//deleta indice
ClientDataSet.DeleteIndex(strName);
ClientDataSet.IndexDefs.Delete(intIndex);
end;

IndexDef := ClientDataSet.IndexDefs.AddIndexDef;
IndexDef.Name := strName;
IndexDef.Fields := AFieldName;

If blnDescending then
IndexDef.DescFields := AFieldName;

ClientDataSet.IndexName := strName;


Responder

Gostei + 0

16/09/2008

Marco Salles

Marcos salles, utilizei tua rotina com um wwdbgrid e deu resultado, mas se eu mudar a possicção de varias coluna tenho q executala mais de uma vez para obter o resultado desejado, vou realizar mais alguns teste para ver o pq disso, vlw pela ajuda,


Tb não entendo... :?: :?:
Pq ao Mudar as colunas de Lugar independentemente
da quantidade de vezes o Valor da Propriedade FieldNo fica inalterado.
O que altera é o valor de Index

Mas poste mais resultados de usa experiência..


Responder

Gostei + 0

17/09/2008

Digaopachesen

Marcos resolvio utilizando tua rotina com mais alguns detalhes ai funcionou como eu desejava...

var 
  i, f:integer;
begin
  inherited; 
  for i:=0 To DBGrid1.FieldCount-1 do 
  begin
    f:= i;
    while f <= DBGrid1.FieldCount-1 do 
    begin
      if i = DBGrid1.Fields[f].FieldNo-1 then
        DBGrid1.Fields[f].Index:=DBGrid1.Fields[f].FieldNo-1;
      f:= f + 1;
    end;
  end;


um exemplo é o seguinte, vc tem um grid com 10 colunas, ai vc cola a coluna 1 na posição 5 a 3 na posicao 9 e a 4 na posicao 1. eu queria reordenalas como elas estavam da coluna 1 a 10, com a tua retoni ela nao os ordenava como default, agora sim, caso eu tenha feito algo de errado ou alguma bobage porfavor me corriga...vlw pela dica T+


Responder

Gostei + 0

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

Aceitar