1 pièce(s) jointe(s)
TListView : Simuler un balayage, Supprimer des éléments
Bonjour,
TListview a une propriété CanSwipeDelete et des évènements (méthodes) comme OnDeleteItem et OnDeletingItem.
Citation:
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
Pièce jointe 608424
Pour contourner la difficulté du balayage j'ai donc comméncé par une utilisation plus classique avec un bouton l'item de liste
Code:
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, :bug::question: si je code ainsi (Test avec D10 Alexandria)
Code:
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)