Salut,
j'ai associé un composant TTABLE à un DGGRID .Je veux quand on clique sur le titre d'une colonne de la grille (DBGRID) qu'il y ait un tri croissant ou decroissant de la grille selon cette colonne.
Salut,
j'ai associé un composant TTABLE à un DGGRID .Je veux quand on clique sur le titre d'une colonne de la grille (DBGRID) qu'il y ait un tri croissant ou decroissant de la grille selon cette colonne.
suite à recherche sur google :
http://phidels.com/php/index.php3?pa...ip.php3&id=488
Désolé pas trouvé sur developpez![]()
Sur ma web page tu trouveras un component (TExtendedGrid) qui descends de TRxDbGrid qui fait ça (et autres choses). Si tu veux, tu peux le prendre comme partie (il y a le code font)
La page est en espagnol mais, si tu ne comprends quelque chose, tu peux me le demander (mon français n'est pas très bon mais......)
Ma web page: www.clubdelphi.com/users/cadetill
tu met un filtre de ta table dans l'evenement OnTitleClick du DBGrid selon la colonne cliquée
Vous prposez de mettre un filtre sur l'evenement ontitleclick.
mais je voudrais savoir est ce que tu mettres un filtre dans l'evenement en precisant un tri ascendant ou descendant.
merci
Je pense qu'il faudrait modifier le "ORDER BY" de ta requete en fonction de la colonne sélectionnée. Et pour savoir si c descendant ou ascendant tu peux garder en memoire la derniere colonne sélectionnée ou le dernier ordre de tri de chaque colonne (ascendant ou descendant) ou qqc dans le genre selon ce qui t'arrange le mieu.
Je rappelle que c'est pas une requete que j'ai liée au DBGRID ,j'ai liée un composant TTABLE donc impossible de réaliser un "ORDER BY".
Merci
quant tuclique sur ta colonne tu fais
ttable.indexname := tonindex.
ton index doit être crée soit en ASCENDANT ou en DESCENDANT
Bon courage
Bonjour,
J'utilise ceci pour trier un DBGRID avec un IBQuery (Tri sur le champ TITRE) :
Dans l'évenement OnTitleClick du DBGRID
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 // Tri colonne Grid1 ============================================ procedure TMain.Grid1Click(Column: TColumn); begin //SQL 1> DataModule.IBQuery1.DisableControls; 2> DataModule.IBQuery1.SQL.Clear; 3> DataModule.IBQuery1.SQL.Add('SELECT* FROM ' + MaTable + ' ORDER BY TITRE '+ Sens ); 4> DataModule.IBQuery1.Open; 5> DataModule.IBQuery1.EnableControls; 6> if (Sens = 'DESC') then 7> Sens := 'ASC' else Sens := 'DESC';// On inverse le sens pour le prochain click 8> end; //---------------------------------------------------------------Note : Cela implique de déclarer la variable Sens comme ceci pour la rendre accessible dans tous les UNITS du programme :
Et de la définir quelquepart, par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public { Déclarations publiques } Sens: string ; // Stocke la valeur du tri (ASC / DESC) end;
Cordialement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 procedure TMain.FormCreate(Sender: TObject); begin S := 'ASC'; end;
N1bus
Partager