William - TI Postado Maio 28, 2009 Denunciar Share Postado Maio 28, 2009 Bom dia.E ai galera mais uma vez estou aqui com um problema, preciso indexar de orden inversa ao clicar no titulo do Grid.so que não quero usar a pesquisa com order by campo desc ordenar normal eu consigo fazendo assim no ontitleclick do dbgrid.qryQuery.IndexFieldNames:= dbgrid1.Columns[Column.index].FieldName;agora inverso não faço nem ideia de como fazer.mais uma vez grato pela atenção. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Douglas Soares Postado Maio 28, 2009 Denunciar Share Postado Maio 28, 2009 Ae Amigo, uhhuhu, toma ai o que você precisa!Coloque essa procedure:procedure OrdenaDataSetGrid( var CDS: TClientDataSet; Column: TColumn; var dbgPrin: TDBGrid); const idxDefault = 'DEFAULT_ORDER'; var strColumn : string; i : integer; bolUsed : boolean; idOptions : TIndexOptions; begin strColumn := idxDefault; if Column.Field.FieldKind in [fkCalculated, fkLookup, fkAggregate] then Exit; if Column.Field.DataType in [ftBlob, ftMemo] then Exit; for i := 0 to dbgPrin.Columns.Count -1 do dbgPrin.Columns[i].Title.Font.Style := []; bolUsed := (Column.Field.FieldName = CDS.IndexName); CDS.IndexDefs.Update; for i := 0 to CDS.IndexDefs.Count - 1 do begin if CDS.IndexDefs.Items[i].Name = Column.Field.FieldName then begin strColumn := Column.Field.FieldName; case (CDS.IndexDefs.Items[i].Options = [ixDescending]) of true : idOptions := []; false : idOptions := [ixDescending]; end; end; end; if (strColumn = idxDefault) or (bolUsed) then begin if bolUsed then CDS.DeleteIndex(Column.Field.FieldName); try CDS.AddIndex(Column.Field.FieldName, Column.Field.FieldName, idOptions, '', '', 0); strColumn := Column.Field.FieldName; except if bolUsed then strColumn := idxDefault; end; end; try CDS.IndexName := strColumn; Column.Title.Font.Style := [fsbold]; except CDS.IndexName := idxDefault; end; end; e depois vá até o DBGrid on TitleClick e coloque isto: OrdenaDataSetGrid(ClientDataSet, Column, DBGrid1);Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 William - TI Postado Maio 28, 2009 Autor Denunciar Share Postado Maio 28, 2009 Amigo estou tendo uma certa dificuldade para usar o codigo pois uso o componente Zeus, componente query.você tem exemplo para para o query do zeus?muito grato pela resposta. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 28, 2009 Denunciar Share Postado Maio 28, 2009 Amigo estou tendo uma certa dificuldade para usar o codigo pois uso o componente Zeus, componente query.O que o amigo Douglas_Soares te passou é um código generico que irá usar o DBGrid independente de ser IBQuery ou ZQuery ou ADOQuery abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Douglas Soares Postado Maio 29, 2009 Denunciar Share Postado Maio 29, 2009 Então, como o proprio Jhonas disse, isso é um código generico!, testa ai, se mesmo assim encontrar dificuldades, é só falar! que iremos tentar te ajudar da melhor forma possivel! Vlw! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 William - TI Postado Maio 29, 2009 Autor Denunciar Share Postado Maio 29, 2009 Caros amigo ainda não consegui. aqui vai minha duvida.como uso Zeues auterei o codigo assim.procedure OrdenaDataSetGrid( var CDS: TZMySqlQuery; Column: TColumn; var dbgPrin: TDBGrid);auterei de TClientDataSet; para TZMySqlQuery;porem me da um erro nesta parteif bolUsed then CDS.DeleteIndex(Column.Field.FieldName); (Aqui da erro) try CDS.AddIndex(Column.Field.FieldName, Column.Field.FieldName,idOptions, '', '', 0); (aqui da erro) strColumn := Column.Field.FieldName;imagino que o erro esta por na query não deve exixtirDeleteIndex e nem AddIndexgostaria de saber por qual eu substituo.mais uma vez grato pela atenção. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Douglas Soares Postado Maio 29, 2009 Denunciar Share Postado Maio 29, 2009 Amigo, não conheço o componente Zeus, eu uso DBExpress, mas creio que o tal possui um item clientdataset, ou TZMysqlCDS? eheh!, então veja se tem esse componente, e muda ai!Vou procurar uma solução!Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 William - TI Postado Maio 29, 2009 Autor Denunciar Share Postado Maio 29, 2009 (editado) Amigo pior que não tem.agradeço a atenção.tb estou buscando alternativa caso ache posto aqui. Editado Maio 29, 2009 por William - TI Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 29, 2009 Denunciar Share Postado Maio 29, 2009 Amigo pior que não tem ( ClientDataSet )agradeço a atenção.tb estou buscando alternativa caso ache posto aqui.E para que voce acha que serve o ClientDataSet da paleta Midas ? Estude um pouco mais sobre o delphiabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
William - TI
Bom dia.
E ai galera mais uma vez estou aqui com um problema, preciso indexar de orden inversa ao clicar no titulo do Grid.
so que não quero usar a pesquisa com order by campo desc
ordenar normal eu consigo fazendo assim no ontitleclick do dbgrid.
qryQuery.IndexFieldNames:= dbgrid1.Columns[Column.index].FieldName;
agora inverso não faço nem ideia de como fazer.
mais uma vez grato pela atenção.
Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.