 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
wjuniordias Profissional


Registrado: Sexta-Feira, 16 de Março de 2012 Mensagens: 667
|
Enviada: Qui Out 04, 2018 4:24 pm Assunto: Ordenação DBGrid + FDQuery [Resolvido] |
|
|
Galera, preciso converter o código abaixo para FDQuery:
| Código: |
procedure TFrmPrincipal.dbgPesqTitleClick(Column: TColumn);
var
vlbMesmoCampo: Boolean;
vloIndices: TStrings;
vliCont: Integer;
begin
inherited;
vlbMesmoCampo := False;
vloIndices := TStringList.Create;
TClientDataSet(Column.Grid.DataSource.DataSet).GetIndexNames(vloIndices);
TClientDataSet(Column.Grid.DataSource.DataSet).IndexName := EmptyStr;
vliCont := vloIndices.IndexOf('idx' + Column.FieldName);
if vliCont >= 0 then
begin
vlbMesmoCampo := not(ixDescending in TClientDataSet(Column.Grid.DataSource.DataSet).IndexDefs[vliCont].Options);
TClientDataSet(Column.Grid.DataSource.DataSet).DeleteIndex('idx' + Column.FieldName);
end;
TClientDataSet(Column.Grid.DataSource.DataSet).AddIndex('idx' + Column.FieldName, Column.FieldName, [],
IfThen(vlbMesmoCampo, Column.FieldName));
TClientDataSet(Column.Grid.DataSource.DataSet).IndexName := 'idx' + Column.FieldName;
end;
|
Eu uso este código para ordenar a caso o usuário clique no título de alguma coluna do DBGrid, porém, usando TClienteDataSet, estou mudando tudo para FireDAC, e no código acima, tentei substituir onde possui "TClientDataSet" por "TFDQuery", mas está dando erro no método "AddIndex", parece que tem alguns parâmetros a mais no FDQuery e não estou conseguindo acertar. Se alguém puder ajudar agradeço. _________________ "O sábio nunca diz tudo o que pensa, mas pensa sempre tudo o que diz." (Aristóteles)
Editado pela última vez por wjuniordias em Seg Out 08, 2018 8:42 am, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
natanbh1 Colaborador

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Qui Out 04, 2018 5:12 pm Assunto: |
|
|
Segue procedimento que uso abaixo. Ordena pelo título clicado e destaca a coluna:
| Código: | procedure GridTitulo(Column: TColumn; DBGrid: TDBGrid);
var
I: Integer;
begin
With DBGrid do
Begin
// Retira o destaque de todas as colunas
for I := 0 to Columns.Count - 1 do
Columns[I].Title.Font.Style := Columns[I].Title.Font.Style - [fsBold, fsUnderline];
// Destaca a coluna clicada
Columns[Column.Index].Title.Font.Style := Columns[Column.Index].Title.Font.Style +
[fsBold, fsUnderline];
End;
TFDQuery(DBGrid.DataSource.DataSet).IndexFieldNames := Column.FieldName;
end; |
Exemplo de uso, no evento OnTitleClick do DBGrid:
| Código: | | GridTitulo(Column, DBGrid1); |
_________________ ''A persistência é o caminho para o êxito.''
Charlie Chaplin |
|
| Voltar ao Topo |
|
 |
wjuniordias Profissional


Registrado: Sexta-Feira, 16 de Março de 2012 Mensagens: 667
|
Enviada: Seg Out 08, 2018 8:39 am Assunto: |
|
|
Obrigado natanbh1, o código funcionou, só tive que fazer uma pequena alteração para que quando o usuário clicasse na coluna mais de uma vez ele alternar entre ordem crescente e decrescente, segue a alteração, na verdade, eu apenas acrescentei esse código no final:
| Código: |
if TFDQuery(DBGrid.DataSource.DataSet).IndexFieldNames = Column.FieldName + ':D' then
TFDQuery(DBGrid.DataSource.DataSet).IndexFieldNames := Column.FieldName + ':A'
else
TFDQuery(DBGrid.DataSource.DataSet).IndexFieldNames := Column.FieldName + ':D'
|
_________________ "O sábio nunca diz tudo o que pensa, mas pensa sempre tudo o que diz." (Aristóteles) |
|
| Voltar ao Topo |
|
 |
natanbh1 Colaborador

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Seg Out 08, 2018 9:41 am Assunto: |
|
|
Muito bom incremento. Já vou acrescentar na minha procedure também. _________________ ''A persistência é o caminho para o êxito.''
Charlie Chaplin |
|
| Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|