Voir le flux RSS

Blog de Serge Girard (aka SergioMaster)

[Delphi] obtenir une liste groupée avec les Livebindings. Finalisation ?

Noter ce billet
par , 13/04/2018 à 09h59 (616 Affichages)
Cette histoire de manipulation des éléments de type Footer à remonter, que je qualifiais de non académique, ma laissait un goût légèrement amer.
Ce matin, éclair de génie (toute modestie mise à part ), je me suis posé la question : 'Et si je pouvais changer le propos (purpose) de l'élément créé ?'
Tout se joue effectivement lors de l'événement OnFilledListItem
Petit rappel du code, j'ai mis en rouge la partie ajout d'un pied de groupe.
Code delphi : 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
procedure TForm15.LinkListControlToField1FilledListItem(Sender: TObject;
  const AEditor: IBindListEditorItem);
// le remplissage d'un item est fini
var AnItem : TListViewItem;
...
begin
AnItem:=AEditor.CurrentObject as TListViewItem;
if (AnItem.Purpose=TListItemPurpose.Header) then
 begin
  // Ajout du Pied de Groupe si ce n'est pas le premier groupe
  if (AnItem.Index>1)  then
   begin
      with ListView1.Items.Add do
       begin
          Text := AnItem.text;
          Purpose := TListItemPurpose.Header;
     end;
     AnItem.Text:=Format('Total %s %3.2f',[Customer,Cumul]);
     // cet item devra être déplacé vers le haut
   end;
  Cumul:=0;
 end
 else begin
   // Ajout des libellés fixes
  ...
   // Gestion de la couleur ---------------------------------------------
 ... 
  end;
   // ----------------------------------------------------------
   // Cumuls
   ...
 end;
end;
Cet ajout positionne sous l'élément en cours, l'élément créé à la volée, impossible de le mettre au-dessus du moins à mes tentatives infructueuses ! D'où la "remontée" à postériori de ces éléments

Le déclic de ce matin rend les choses plus simples :

Voici le code (en vert, ce qui change)
Code delphi : 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
procedure TForm15.LinkListControlToField1FilledListItem(Sender: TObject;
  const AEditor: IBindListEditorItem);
// le remplissage d'un item est fini
var AnItem : TListViewItem;
...
begin
AnItem:=AEditor.CurrentObject as TListViewItem;
if (AnItem.Purpose=TListItemPurpose.Header) then
 begin
  // Ajout du Pied de Groupe si ce n'est pas le premier groupe
  if (AnItem.Index>1)  then
   begin
      with ListView1.Items.Add do   // création, à la volée, en dessous
       begin
          // même texte 
          Text := AnItem.text;         
          Purpose := TListItemPurpose.Header;  
     end;
 
     // texte du Pied de groupe
     AnItem.Text:=Format('Total %s %3.2f',[Customer,Cumul]);
     AnItem.Purpose:=TListItemPurpose.Footer;  // changement du "propos" 
   end;
  Cumul:=0;
 end
 else begin
   // Ajout des libellés fixes
  ...
   // Gestion de la couleur ---------------------------------------------
  ...
  // Cumuls 
  ... 
 end;
end;

Envoyer le billet « [Delphi] obtenir une liste groupée avec les Livebindings. Finalisation ? » dans le blog Viadeo Envoyer le billet « [Delphi] obtenir une liste groupée avec les Livebindings. Finalisation ? » dans le blog Twitter Envoyer le billet « [Delphi] obtenir une liste groupée avec les Livebindings. Finalisation ? » dans le blog Google Envoyer le billet « [Delphi] obtenir une liste groupée avec les Livebindings. Finalisation ? » dans le blog Facebook Envoyer le billet « [Delphi] obtenir une liste groupée avec les Livebindings. Finalisation ? » dans le blog Digg Envoyer le billet « [Delphi] obtenir une liste groupée avec les Livebindings. Finalisation ? » dans le blog Delicious Envoyer le billet « [Delphi] obtenir une liste groupée avec les Livebindings. Finalisation ? » dans le blog MySpace Envoyer le billet « [Delphi] obtenir une liste groupée avec les Livebindings. Finalisation ? » dans le blog Yahoo

Mis à jour 17/04/2018 à 15h58 par SergioMaster

Catégories
Programmation , Delphi , FMX

Commentaires