Trier en cliquant sur le titre de la colonne on Grid

MasterJ Messages postés 37 Date d'inscription jeudi 27 juin 2002 Statut Membre Dernière intervention 13 août 2002 - 9 août 2002 à 16:01
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Derniè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...

Merci

E_____P
Enjoy Programmation
Jeff

3 réponses

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

--- :sleepy) Nono du Moulin :sleepy) ---
0
MasterJ Messages postés 37 Date d'inscription jeudi 27 juin 2002 Statut Membre Dernière intervention 13 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.

MERCI
E_____P
Enjoy Programmation
Jeff
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
14 août 2002 à 09:08
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
0
Rejoignez-nous