Trier en cliquant sur le titre de la colonne on Grid

Signaler
Messages postés
37
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
13 août 2002
-
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
-
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...

Merci

E_____P
Enjoy Programmation
Jeff

3 réponses

Messages postés
962
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
12 septembre 2006
2
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 ).

--- :sleepy) Nono du Moulin :sleepy) ---
Messages postés
37
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
13 août 2002

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.

MERCI
E_____P
Enjoy Programmation
Jeff
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
Nono40 a raison.

La prochaine fois, donnes davantage de précisions si tu veux obtenir une réponse adaptée !

May Delphi be with you.
Delphi advanced