Trier en cliquant sur le titre de la colonne on Grid
MasterJ
Messages postés37Date d'inscriptionjeudi 27 juin 2002StatutMembreDernière intervention13 août 2002
-
9 août 2002 à 16:01
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 2013
-
14 août 2002 à 09:08
Bonjour Programmeur(se) de Delphi,
Je voudrais savoir s'il est possible de trier un TDBGrid seulement en cliquant sur le title de la column. Aussi, est-t-il possible de desable le scroll de la souris sur le grid...
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 20062 9 août 2002 à 21:25
La réponse est non aux deux questions. Un DBGrid ne contient pas de données mais ne fait qu'afficher une vue des données d'une Table. Pour que les données soient triées il faut donc que la table soit Triée.
Pour Trier une table soit il faut utiliser des index soit créer sur la table une requète SQL comportant une clause Order By. La méthode à utiliser dépend surtout des bases utilisées à l'origine et l'utilisation que est faite ensuite de la grille ( saisie ou simple visu ).
MasterJ
Messages postés37Date d'inscriptionjeudi 27 juin 2002StatutMembreDernière intervention13 août 2002 13 août 2002 à 22:53
Voici ce que j'ai de mieux a date..s Je ne peux pas créer des indexes a la vole car mon Grid dataset est une query.
procedure TFormCurrentCie.GridOperationTitleClick(Column: TColumn);
begin
GridOperation.Columns.Items[flagColonne].Title.Font.Color:=clWindowText;
case Column.ID of
1: begin
InitGridColumn(GridOperation,'Bank');
Column.title.Font.Color:=clBlue;
flagColonne:=1;
end;
2: begin
InitGridColumn(GridOperation,'LaDate');
Column.title.Font.Color:=clBlue;
flagColonne:=2;
end;
3: InitGridColumn(GridOperation,'Amount');
end;
end;
procedure TFormCurrentCie.InitGridColumn(leGrid: Tdbgrid;orderBy: string);
var dynaQuery,condition1,order: string;
begin
dynaQuery:='Select NoTransac,Bank,LaDate,NomSupplier,Dept,Status,NoDisbursement,Amount,GL ';
dynaQuery:=dynaQuery+'From Tdisbursements,Tsupplier WHERE %s AND Tdisbursements.NoCie='+UnitMain.tabCurrentCie[0];
dynaQuery:=dynaQuery+' ORDER BY %s';
condition1:='Tdisbursements.NoSupplier=Tsupplier.NoSupplier';
order:=orderBy;
with Qdyn do
begin
if active then close;
sql.Clear;
sql.Text:=format(DynaQuery,[condition1,order]);
end;
Qdyn.Active:=True;
with Qdyn.Fields do
begin
leGrid.Columns[0].FieldName:=Fields[0].DisplayName;
leGrid.Columns[1].FieldName:=Fields[1].DisplayName;
leGrid.Columns[2].FieldName:=Fields[2].DisplayName;
leGrid.Columns[3].FieldName:=Fields[3].DisplayName;
leGrid.Columns[4].FieldName:=Fields[4].DisplayName;
leGrid.Columns[5].FieldName:=Fields[5].DisplayName;
leGrid.Columns[6].FieldName:=Fields[6].DisplayName;
leGrid.Columns[7].FieldName:=Fields[7].DisplayName;
leGrid.Columns[8].FieldName:=Fields[8].DisplayName;
end;
end;
SI QUELQU UN A QUELQUE CHOSE DE MIEUX CAR COMME VOUS LE CONSTATER... LE GRID AFFICHE UNE REQUETE SUR DEUX TABLES.