IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Blog de Serge Girard (aka SergioMaster)

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

Note : 2 votes pour une moyenne de 1,00.
par , 07/04/2018 à 10h38 (2015 Affichages)
La théorie, que vous pouvez lire dans mon premier billet sur le sujet, c'est pas mal mais je vais rajouter à mon article (accessible en lecture toujours via ce premier billet) un exemple de la vie "réelle"

j'ai utilisé les fichiers exemples fournis par Embarcadero (orders.cds et customers.cds) , via des TClientsDatasets pour obtenir cette liste

Nom : RealLife.PNG
Affichages : 952
Taille : 25,3 Ko

Qu'en pensez vous ? Oui, la présentation laisse à désirer mais il s'agit surtout d'un banc d'essai !

J'ai également rajouté de la couleur en cas d'impayés (voir l'image, MAKAI SCUBA CLUB a laissé une ardoise ! payé 0.00) car il y en a quelques uns dans le fichier proposé et la recherche en guise de @gbgreg

Nom : Final.PNG
Affichages : 188
Taille : 37,2 Ko
contrairement à ce que j'avais présenté dans mon tutoriel FMX : Mettre de la couleur dans un ListView, à la lumière de mes nouvelles découvertes j'ai opté pour un code différent en utilisant l'événement LinkListControlToField1FilledListItem plutôt que OnUpdatingObjects
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
45
procedure TForm15.LinkListControlToField1FilledListItem(Sender: TObject;
  const AEditor: IBindListEditorItem);
// le remplissage d'un item est fini
var AnItem : TListViewItem;
    Montant : String;
    AListItemBitmap : TListItemImage;
    AColor : TAlphaColor;
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 := Format('Total %s %3.2f',[idBloc,Cumul]);
          Purpose := TListItemPurpose.Footer;
     end;
     // cet item devra être déplacé vers le haut
   end;
  idBloc:=AnItem.Text;
  Cumul:=0;
 end
 else begin
   // Ajout des libellés fixes
   AListItemTextFixe:=AnItem.Objects.FindObjectT<TListItemText>('Text6');
   if Assigned(AListItemTextFixe) then AListItemTextFixe.Text:='Montant Total';
   AListItemTextFixe:=AnItem.Objects.FindObjectT<TListItemText>('Text7');
   if Assigned(AListItemTextFixe) then AListItemTextFixe.Text:='Payé';
  // Gestion de la "colorisation" ------------------------------------------------------------ 
  AListItemBitmap:=AnItem.Objects.FindObjectT<TListItemImage>('Image4');
   if assigned(AListItemBitmap) then
   begin
    AListItemBitmap.Bitmap:=TBitmap.Create(40,40);
    if OrdersAmountPaid.AsCurrency<OrdersItemsTotal.asCurrency then
       AColor:=TAlphacolorRec.Crimson
    else
      AColor:=TAlphaColorRec.Null;
    AListItemBitmap.Bitmap.Clear(AColor);
   end;
 // ----------------------------------------------------------------------------------------------
    Cumul:=Cumul+Orders.FieldByName('ItemsTotal').AsCurrency;   // AnItem.Data['Text2'].AsCurrency;
 end;
end;

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

Mis à jour 15/04/2018 à 10h14 par SergioMaster

Catégories
Programmation , Delphi , FMX

Commentaires

  1. Avatar de NABIL74
    • |
    • permalink
    Bonjour,

    Personnellement, je trouve que ce banc d'essai très réussit !!

    C'est beau et moderne. J'ai bien aimé l'ajout de la couleur des factures impayées ainsi que la recherche.

    Merci et bon courage SergioMaster!
  2. Avatar de SergioMaster
    • |
    • permalink
    La fonction de recherche me laissait un goût amer : on ne peut le faire que sur les objets contenus dans l'item de liste et non dans les Headers ou Footers ! Comment alors interroger un client particulier ?
    Aujourd'hui, c'est chose faite. Ma petite astuce ajouter un (ou des) objet(s) texte mais le(s) rendre invisible(s), dès lors plus de difficultés pour rechercher les factures d'un seul client.

    Correctif ajouté à mon tutoriel toujours accessible via le premier billet sur le sujet