Bonjour,
je rame sur un truc qui me semble bête.
Je charge le résultat d'une requête dans une table mémoire et je lui construis des index
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 procedure TDatas.MemMatieres(const SetActiveIndex : String='CODEASC'); begin FDMatieres.Active:=True; FDMatieres.FetchAll; FDMemMatieres.Data:=FDMatieres.Data; FDMatieres.Active:=False; FDMemMatieres.Indexes.Clear; FDMemMatieres.AddIndex('CODEASC','CODE','',[]); FDMemMatieres.AddIndex('CODEDSC','CODE','',[soDescending]); FDMemMatieres.AddIndex('DESCASC','DESIGNATION','',[]); FDMemMatieres.AddIndex('DESCDSC','DESIGNATION','',[soDescending]); FDMemMatieres.IndexesActive:=True; FDMemMatieres.IndexName:=SetActiveIndex; FDMemMatieres.Active:=True; end;
cliquer sur l'entête de colonne permet de changer l'ordre de tri
et cela fonctionne parfaitement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 procedure TFormMatiere.BtnCodeClick(Sender: TObject); begin LiaisonListeMat.Active:=False; case btnCode.ImageIndex of 1 : begin btnCode.ImageIndex:=0; // index ascendant sur code Datas.FDMemMatieres.IndexName:='CODEASC'; end else begin BtnCode.ImageIndex:=1; BtnCode.TextSettings.Font.Style:=[TFontStyle.fsBold]; btnDesc.TextSettings.Font.Style:=[]; btnDesc.ImageIndex:=-1; // changer index descendant sur code Datas.FDMemMatieres.IndexName:='CODEDSC'; end; end; Datas.FDMemMatieres.First; LiaisonListeMat.Active:=True; end; procedure TFormMatiere.btnDescClick(Sender: TObject); begin LiaisonListeMat.Active:=False; case btnDesc.ImageIndex of 1 : begin btnDesc.ImageIndex:=0; // index ascendant sur Designation Datas.FDMemMatieres.IndexName:='DESCASC'; end else begin btnDesc.ImageIndex:=1; btnDesc.TextSettings.Font.Style:=[TFontStyle.fsBold]; btnCode.TextSettings.Font.Style:=[]; btnCode.ImageIndex:=-1; // changer index descendant sur Designation Datas.FDMemMatieres.IndexName:='DESCDSC'; end; end; Datas.FDMemMatieres.First; LiaisonListeMat.Active:=True; end;
J'ai voulu ajouter un bouton [Rafraîchir] et c'est là ma galère je ne comprends pas pourquoi cela ne fonctionne pas
la valeur de tri est correcte mais les lignes sont en vrac
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 procedure TFormMatiere.BtnRefreshClick(Sender: TObject); var tri : String; begin ListeMatiere.BeginUpdate; // normalement inutile LiaisonListeMat.Active:=False; Datas.FDMemMatieres.IndexesActive:=False; Datas.FDMemMatieres.Active:=False; if BtnCode.ImageIndex=0 then tri:='CODEASC'; if BtnCode.ImageIndex=1 then tri:='CODEDSC'; if BtnDesc.ImageIndex=0 then tri:='DESCASC'; if BtnDesc.ImageIndex=1 then tri:='DESCDSC'; Datas.MemMatieres(tri); Datas.FDMemMatieres.First; // normalement inutile LiaisonListeMat.Active:=True; ListeMatiere.EndUpdate; // normalement inutile end;
j'obtiens ceci en clicquant sur le bouton
alors que je devrais avoir ceci
Une idée, un truc qui crève les yeux ?
Partager