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 :

[Rio][FMX]Comment cliquer sur un item d'une listbox?


Sujet :

Composants FMX Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    2 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 2 322
    Par défaut [Rio][FMX]Comment cliquer sur un item d'une listbox?
    Bonjour à tous,

    Comme d'hab avec FMX,je butte toujours sur les trucs les plus simples...

    Avec Delphi Rio entièrement patché, j'ai un TListBox dans laquelle j'ajoute des items via du code.

    Je veux pouvoir cliquer sur un item pour y récupérer des valeurs.

    Problème: l'event ne se déclenche pas quand je clique un item du Listbox

    J'ai essayé le "onclick" du ListBox puis le "onItemClick" avec et sans HitTest... Nada!

    Est-ce que quelqu'un a la solution magique? Y aurait-il un paramètre au niveau des Items que je ne dois pas laisser par défaut?

    Merci

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    2 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 2 322
    Par défaut
    Origine du problème trouvé... mais pas la solution!

    Les events onClick et onItemClick ne se déclenchent pas parce que j'utilise des styles personnalisés pour ListBox et ses items.

    Si j'utilise le layout "listboxstyle" fourni par un stylebook "officiel" dowloadé sur GetIt, les events se déclenchent!

    J'ai recopié le "listboxstyle" qui fonctionne et le modifie simplement en y ajoutant un Timage et les events ne se déclenchent plus!

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 663
    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 663
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    plus que certainement,un problème dans ton style. Ma "divination" : le Timage que tu as posé est avec un Hittest à true, si celui-ci est aligné au client ....

  4. #4
    Membre Expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Par défaut
    j'aurais pas pensé à ça de premier abord, mais effectivement les styles personnalisés peuvent avoir des effets de bord si on intercepte ou supperpose des choses sur celles qui doivent recevoir les actions gérées par le code d'origine

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 663
    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 663
    Billets dans le blog
    65
    Par défaut
    En fait, il faudrait "voir" le style utilisé et, tant qu'à faire, le code pour le "remplissage"

    [EDIT]J'avoue que je suis en train de faire un test et si j'ai bien le onItemClick qui fonctionne correctement, je bute lamentablement sur le chargement de l'image
    Nom : Capture.PNG
Affichages : 335
Taille : 81,6 Ko
    ici, c'est mon image "par défaut" dans le style, par contre le OnItemClick fonctionne après le OnListBoxItemClick
    mon code de "remplissage"
    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
    46
    47
    48
    49
    50
    51
    procedure TForm125.Button1Click(Sender: TObject);
    var FileList :  TArray<String>;
        aImage : TImage;
        s : String;
        alistItem : TListBoxItem;
    const dir = 'D:\Glyphesdelphi\GlyFX\Icons\AERO\PNG\64x64';
    begin
      Listbox1.Items.Clear;
      FileList := TDirectory.GetFiles(dir, '*.png');
      for s in FileList do
        begin
          aListItem:=TListBoxItem.Create(Self);
          with aListItem do
            begin
              Height:=80;
              StyleLookup:='itemimage';
              Text:=ExtractFileName(s);
              TagString:=s;
              OnClick:=ListboxItem1Click;  // se déclenchera avant ListBox1ItemClick
              OnApplyStyleLookup:=ListBoxItem1ApplyStyleLookup;
            end;
           ListBox1.AddObject(aListItem);
        end;
    end;
     
    procedure TForm125.ListBox1ItemClick(const Sender: TCustomListBox;
      const Item: TListBoxItem);
    begin
    Showmessage('Onitemclick de la liste '+Item.TagString);
    end;
     
    procedure TForm125.ListBoxItem1ApplyStyleLookup(Sender: TObject);
    var
      aImage: TFMXObject;
      f: string;
    begin
      aImage := TListBoxItem(Sender).FindStyleResource('Image');
      if assigned(aImage) then
      begin
        f := TListBoxItem(Sender).TagString;
        if FileExists(f) then
     
          TImage(aImage).Bitmap.LoadFromFile(f);
      end;
    end;
     
     
    procedure TForm125.ListBoxItem1Click(Sender: TObject);
    begin
    Showmessage('OnListBoxItemClick '+TListBoxItem(Sender).TagString);
    end;
    [EDIT] Code corrigé = chargement des images , ajustements dans le style (image passé en fond, marge gauche de l'image modifiée)
    Nom : Capture_1.PNG
Affichages : 320
Taille : 62,1 Ko

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    2 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 2 322
    Par défaut
    J'étais sûr que c'était un truc simple qui m'avait échappé!

    Et c'était le cas: Le problème vient simplement que les images ajoutées dans les styles personnalisés ont un HitTest=True par défaut...

    Merci à la "divination" de SergioMaster!!!

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

Discussions similaires

  1. Androi Studio : Cliquer sur un Item d'une listView pour ouvrir une autre listViem
    Par souleymanemakan dans le forum Composants graphiques
    Réponses: 2
    Dernier message: 16/03/2017, 15h56
  2. Cliquer sur un item d'une listview pour lancer une nouvelle activité
    Par kopbuc dans le forum Composants graphiques
    Réponses: 14
    Dernier message: 31/01/2016, 12h46
  3. Réponses: 8
    Dernier message: 11/11/2014, 22h17
  4. comment valider/devalider un item dans une listBox?
    Par Mickey.jet dans le forum Delphi
    Réponses: 2
    Dernier message: 30/05/2006, 07h25
  5. Réponses: 7
    Dernier message: 15/05/2006, 16h44

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