Bonjour,

TListview a une propriété CanSwipeDelete et des évènements (méthodes) comme OnDeleteItem et OnDeletingItem.
La fonctionnalité balayer-pour-supprimer est prise en charge sur les apps mobiles (iOS et Android), ainsi que les apps de bureau (Windows et OS X) lorsque la saisie tactile est activée.
Ma première question est donc, comment avec un pc sans écran tactile simuler ce swipe ?

l'objectif est de supprimer un élément de la liste mais également dans la table
Nom : Capture.PNG
Affichages : 141
Taille : 9,8 Ko

Pour contourner la difficulté du balayage j'ai donc comméncé par une utilisation plus classique avec un bouton l'item de liste
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
procedure TForm1.ListView1ButtonClick(const Sender: TObject;
  const AItem: TListItem; const AObject: TListItemSimpleControl);
begin
listview1.Items.Delete(AItem.Index); 
end;
Je pensais que le Delete écrit ainsi lèverait les événements mais non, seul un "argument hors limites" m'est signalé


Du coup, plus inquiétant, si je code ainsi (Test avec D10 Alexandria)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
procedure TForm1.LinkListControlToField1FilledListItem(Sender: TObject;
  const AEditor: IBindListEditorItem);
begin
(AEditor.CurrentObject as TListItem).Tag :=FDTable1.FieldByName('ID').AsInteger; // mémorise la clé
end;
 
procedure TForm1.ListView1ButtonClick(const Sender: TObject;
  const AItem: TListItem; const AObject: TListItemSimpleControl);
begin
if FDtable1.Locate('Id',AItem.Tag) then FDtable1.Delete;
end;
et tente de supprimer le dernier élément de la liste, j'ai une exception de lecture d'adresse (en cause procedure TListItem.MouseUp)