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

Langage Delphi Discussion :

Tester le mode Edition d'un TListItem ?


Sujet :

Langage Delphi

  1. #1
    Membre du Club Avatar de ddubois
    Profil pro
    Inscrit en
    Février 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 111
    Points : 47
    Points
    47
    Par défaut Tester le mode Edition d'un TListItem ?
    Je cherche la commande pour tester si le titre (caption) d'un TListitem est selectionné (par double-clic par ex.) ou non après un :
    ListView1.Selected.EditCaption.

    Recherches infructueuses sur le net.

    Merci,

    Denis

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 71
    Points : 102
    Points
    102
    Par défaut
    On va dire que tu cherche un truc comme ça peut-être
    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
    procedure TForm1.ListView1Edited(Sender: TObject; Item: TListItem;
      var S: string);
    var
        I : Integer;
    begin
        for I := 0 to ListView1.Items.Count - 1 do
            if UpperCase(S) = UpperCase(ListView1.Items.Item[I].Caption) then
                if ListView1.Selected.Index <> I then
                begin
                    ShowMessage('Un titre identique existe déjà !');
                    S := ListView1.Selected.Caption;
                    Break;
                end;
    end;
    procedure TForm1.ListView1Editing(Sender: TObject; Item: TListItem;
      var AllowEdit: Boolean);
    begin
        ShowMessage(Format('Index N°: %d en édition',[ListView1.Selected.Index]));
    end;
    procedure TForm1.ListView1DblClick(Sender: TObject);
    begin
        ListView1.Selected.EditCaption;
    end;
    @+

  3. #3
    Membre du Club Avatar de ddubois
    Profil pro
    Inscrit en
    Février 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 111
    Points : 47
    Points
    47
    Par défaut
    Merci pour ta réponse, mais cela ne correspond pas à ce que je cherche.
    Je m'explique davantage :
    Lorsque le fait F2 je rentre dans le mode édition du TListItem cad que le titre est selectionné et près a être saisie.
    Lorsque j'appuie sur la touche Entrée j'execute le programme associé au TListItem (à l'icone).

    Lorsque je renomme mon titre je suis obligé de taper "Entrée" pour valider les modifs, et alors le programme s'execute mais ce n'est pas le but.

    Je voudrais donc tester (dans onKeyPress ou onKeyUp) si le titre de l'item sélectionné en en mode édition alors ne pas lancer le programme associé lors de l'appuie sur la touche "Entrée".

    Merci.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 71
    Points : 102
    Points
    102
    Par défaut
    Justement tu as les infos qui vont bien...
    ListView1Editing => lorsque tu entre pour modifier
    ListView1Edited => lorsque tu en sort avec la touche Entrée
    Et utiliser OnKeyDown avec la touche entrée (pour l'ordre des messages...)
    Normalement tu devrais trouver avec ça...
    @+

  5. #5
    Membre du Club Avatar de ddubois
    Profil pro
    Inscrit en
    Février 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 111
    Points : 47
    Points
    47
    Par défaut
    Effectivement, j'ai pensé faire ca :

    Dans ListView1Editing, je met une variable boolean a True
    dans ListView1Edited, je teste la variable puis je la met à False

    Mais je voulais savoir si une commande/API permettait de tester directement.

    Merci,

    Denis

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 71
    Points : 102
    Points
    102
    Par défaut
    il existe IsEditing qui indique si un élément de la liste est en cours de modification...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ListView1.IsEditing then
    @+

  7. #7
    Membre du Club Avatar de ddubois
    Profil pro
    Inscrit en
    Février 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 111
    Points : 47
    Points
    47
    Par défaut
    Bizarre, ca fonctionne pour la touche Entrée mais pas pour la touche DEL !
    Dans tous les cas (true ou false) il execute "mnuDelClick(self)" au lieu de supprimer le caractère du libellé; Serais-ce un Bogue ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      case Key of
        VK_RETURN: if ListView1.IsEditing then ListView1.OnDblClick(self); 
        VK_F2: ListView1.Selected.EditCaption;
        VK_DELETE: if ListView1.IsEditing = False then Form1.mnuDelClick(self); 
      end;
    Merci pour la commande.

    Denis

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 71
    Points : 102
    Points
    102
    Par défaut
    Normal, gestion des messages up,down...
    J'ai dis dans un post plus haut KeyDown...
    De plus d'après ton code ce serait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm1.ListView1KeyDown...
    case Key of
        VK_RETURN: if not ListView1.IsEditing then ListView1.OnDblClick(self); 
        VK_F2: ListView1.Selected.EditCaption;
        VK_DELETE: if not ListView1.IsEditing then Form1.mnuDelClick(self); 
    end;
    @+

  9. #9
    Membre du Club Avatar de ddubois
    Profil pro
    Inscrit en
    Février 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 111
    Points : 47
    Points
    47
    Par défaut
    Désolé mais la gestion dela touche "Enter" marche mieux dans ListView1KeyDown(); que dans ListView1KeyUp();
    Mais la touche DELete supprime l'item (mnuDelClick) et non le caractère au curseur en mode Edition...
    C'est bizarre non ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    procedure TForm1.ListView1KeyDown();
    begin
    if ActiveControl is TListView then
      if Assigned(ListView1.Selected) then
      begin
      case Key of
    VK_RETURN: if not ListView1.IsEditing then ListView1.OnDblClick(self);    
    VK_F2: ListView1.selected.EditCaption;
    VK_DELETE: if not ListView1.IsEditing then Form1.mnuDelClick(self);
      end;
    end;
    end;
    Des suggestions ?

    Denis

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 71
    Points : 102
    Points
    102
    Par défaut
    Il ne te reste pas des bout de code dans OnKeyPress, OnKeyUp, Change...,qui font appel à cette procédure par hasard !
    Met un point d'arrêt dans cette procédure mnuDelClick, mais aussi dans KeyDown ou il y a l'appel de mnuDelClick,
    si mnuDelClick est appelée avant KeyDown, c'est donc qu'elle est appelée ailleurs...
    Sinon poste en plus, car normalement le code marche !
    @+

  11. #11
    Membre du Club Avatar de ddubois
    Profil pro
    Inscrit en
    Février 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 111
    Points : 47
    Points
    47
    Par défaut
    Effectivement, j'ai déterminé un raccourci clavier "DEL" dans mon menu déroulant.
    Je l'ai supprimé et maintenant ça fonctionne !
    Faut que je trouve comment la rajouter sans que ça interagisse

    En tout cas Merci,

    Denis

  12. #12
    Membre du Club Avatar de ddubois
    Profil pro
    Inscrit en
    Février 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 111
    Points : 47
    Points
    47
    Par défaut
    Lorsque je renomme le libellé (caption) de mon TlistView, la touche DEL ne fonctionne plus en mode édition pour effacer les caractères.
    Dois je gerer moi même l'effacement du caractère au curseur (lourd) ou est-il possible que la touche gère nativement sa fonction d'origine (je crois qu'on peut mettre un inherited ???)

    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
     
    //Menu déroulant "Supprimer" :
    procedure TForm1.mnuDeleteItemClick(Sender: TObject);
    var
      ListItem : TListItem;
    begin
      ListItem := listview1.Selected;
      if Assigned(ListItem) and (ListView1.SelCount = 1) and (not ListView1.IsEditing) then   
      begin
        if (MessageDlg('Voulez-vous supprimer DEFINITIVEMENT l''élément sélectionné ?',mtConfirmation,[mbYes, mbNo],0)=mrYes) then
        begin
          Dispose(PInfos(ListView1.Selected.Data));
          Listview1.DeleteSelected;                
          mnuAlignClick(Self);                         
        end
        //else begin
         // exit;
        //end;
      end;
    end;
    Merci,

    Denis

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 71
    Points : 102
    Points
    102
    Par défaut
    Il n'y a aucune raison que la touche del ne fonctionne pas...
    Vérifie les appels,tes procedures key du listview, les parent etc...
    Sinon poste ton code, parce qu'on va y passer 15 plombes...
    @+

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 71
    Points : 102
    Points
    102
    Par défaut
    Salut,
    ton problème est-il ?
    @+

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

Discussions similaires

  1. Tableau en mode editable
    Par DaTaFaiLuRe dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 02/10/2006, 11h46
  2. IFRAME : pas d"évenement souris en mode editable
    Par alheim dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/02/2006, 11h48
  3. [C#] Le DataGrid ne passe pas en mode edition
    Par mahboub dans le forum ASP.NET
    Réponses: 2
    Dernier message: 31/10/2005, 14h20
  4. ensemble de données pas en mode edition
    Par XloX dans le forum Bases de données
    Réponses: 3
    Dernier message: 13/06/2005, 12h17
  5. [C#] Mode édition DropDownList
    Par bolo dans le forum ASP.NET
    Réponses: 7
    Dernier message: 14/07/2004, 17h25

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