IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants FMX Delphi Discussion :

TListView (FMX) et sélection d'éléments


Sujet :

Composants FMX Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 598
    Billets dans le blog
    65
    Par défaut TListView (FMX) et sélection d'éléments
    Bonjour,

    Toujours sur mes ListView(s) je suis en train de regarder comment fonctionne la sélection.
    Posez un TListview sur une forme (apparence de l'item par défaut, soit ItemList et ItemListShowCheck en mode édition) , reliez-la à des données (TPrototypeBindSource pour aller vite ou une source de données quelconque) et basculez la dite liste en mode Edition
    Nom : Capture.PNG
Affichages : 216
Taille : 9,3 Ko
    À l'exécution tout fonctionne comme prévu, on clique sur un élément, la case se coche

    Maintenant premier point d'achoppement, je veux que la sélection ne se fasse que si je clique la case à cocher. Selon la doc, la propriété ClickOnSelect, si j'ai bien saisi son sens, est là pour ça mais cela ne fonctionne pas
    [Edit] cela fonctionnait avec XE4

    Deuxième point d'achoppement : j'adore utiliser l'apparence dynamique, j'ai donc créé une liste identique mais cette fois en utilisant celle-ci. En mode édition, la case à cocher apparaît bien mais ne réagit pas , j'ai alors vérifié si l'item était quand même sélectionné et c'est le cas.
    (testé avec Tokyo et Rio)

    Avez-vous constaté le même phénomène ?

  2. #2
    Membre éprouvé Avatar de oneDev
    Homme Profil pro
    dilettant
    Inscrit en
    Mars 2019
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : dilettant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2019
    Messages : 220
    Par défaut
    Je te vois sans arrêt galérer avec ces composants qui permettent pourtant de faire tant de choses.
    C'est tout de même dommage que ce soit si compliqué.

    Je ne saurais pas t'aider, mais te souhaite bon courage pour nous revenir rapidement avec de beaux tutos

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 598
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par oneDev Voir le message
    Je te vois sans arrêt galérer avec ces composants qui permettent pourtant de faire tant de choses.
    Ce n'est pas tant galérer que pousser le composant dans ses limites

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 598
    Billets dans le blog
    65
    Par défaut
    J'ai deux solutions "code" à améliorées pour chacun de ces deux points.

    Dans le premier point soulevé une codification de l'évènement OnItemClickEx permet de prendre en compte le fait que CheckOnSelect soit autorisé ou non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure TForm1.ListView1ItemClickEx(const Sender: TObject;
      ItemIndex: Integer; const LocalClickPos: TPointF;
      const ItemObject: TListItemDrawable);
    begin 
    if not ListView1.Items[ItemIndex].HasClickOnSelectItems then 
       ListView1.Items[ItemIndex].Checked:=not ListView1.Items[ItemIndex].Checked; // la valeur avait déjà changé !
    if ItemObject.ClassNameIs('TListItemGlyphButton') then
        ListView1.Items[ItemIndex].Checked:=not TListItemGlyphButton(ItemObject).Checked;
    Pour le second point (apparence dynamique) c'est légèrement différent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm1.ListView1ButtonClick(const Sender: TObject;
      const AItem: TListItem; const AObject: TListItemSimpleControl);
    begin
    if AObject.ClassNameIs('TListItemGlyphButton') then
        TListItemGlyphButton(AObject).Checked:=not TListItemGlyphButton(AObject).Checked;
    end;
    Reste qu'à mon avis ce sont deux bogues que je n'ai pas vu reporté (ou alors j'ai mal cherché )

    Je planche bien sûr sur une solution plus élégante à base d'interface existant IListViewCheckProvider et ce que j'ai pu annoncer ici

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 598
    Billets dans le blog
    65
    Par défaut
    Je clos cette discussion si ce n'est sur les bogues putatifs du moins sur la manière de s'en sortir.

    Je vous offrirai certainement sous forme de tutoriel ou de billet(s) mes différentes solutions face à la sélection d'éléments

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 598
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Je vous offrirai certainement sous forme de tutoriel ou de billet(s) mes différentes solutions face à la sélection d'éléments
    Voilà déjà le billet publié
    J'ai pu apporter beaucoup simplification et abandonner la fausse bonne idée d'interface.

    Note : le code sur l'évènement OnClickItemEx n'est pas parfait, il faut que l'élément soit sélectionné AVANT de cliquer sur la case à cocher, et n'importe quelle case fait l'affaire ce qui n'est pas vraiment le but

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/10/2009, 10h47
  2. Réponses: 7
    Dernier message: 11/06/2009, 12h14
  3. Réponses: 5
    Dernier message: 03/03/2009, 09h47
  4. Sélection d'éléments avec wildcards
    Par Invité dans le forum Langage SQL
    Réponses: 6
    Dernier message: 05/06/2008, 16h12
  5. Réponses: 5
    Dernier message: 12/08/2006, 20h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo