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

VC++ .NET Discussion :

[C++.NET][ListView]Comment activer un Icone avec 'Enter' ?


Sujet :

VC++ .NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    D�cembre 2005
    Messages
    13
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2005
    Messages : 13
    Par d�faut [C++.NET][ListView]Comment activer un Icone avec 'Enter' ?
    Slt,

    Comment faire pour que dans une listView, lorsque l'on fait appuye sur "entrer" sur un des icones, celui-ci soit activ�. En gros avoir la meme chose qu'un double click sur l'icone mais avec la touche entr�e.
    J'ai rien trouv� dans la msdn sur les �v�nements li�s au touchee du clavier.

    Thx
    ++

  2. #2
    Expert confirm�
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    D�tails du profil
    Informations personnelles :
    �ge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par d�faut
    Le moyen que j'ai test� est de faire un d�riv� de ListView ce qui permettra d'atteindre par exemple la m�thode prot�g�e OnDoubleClick . Celle-ci �tant appel�e dans la m�thode KeyPress de ton CustomListView si le EventArgs.KeyCode est un (char) 13
    D�sol�, ne connaissant pas correctement le C++, je ne pourrai te donner que du code C# ou VB.Net ou Delphi.Net

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    D�cembre 2005
    Messages
    13
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2005
    Messages : 13
    Par d�faut
    Slt,

    Quand tu parles de "CustomListView", c'est quelquechose qui existe deja dans VC++?
    Sinon, meme si j'arrive � r�cup�rer l'�v�nement li� au clavier, comment je peux savoir ou peux d�finir qu'il doit �tre r�cup�rer que dans le cas o� l'on utilise la touche "enter"?

    je ne pourrai te donner que du code C# ou VB.Net ou Delphi.Net
    Et bien si tu as quelquechose dans ces langages, je suis quand m�me preneur, ce que j'aimerais bien c'est juste avoir un mod�le, apr�s j'essairais de me d�brouiller.
    (si j'avais su je me serais mis au C# pour faire mon ihm....)


    En plus de ceci, il y a quelque chose que je ne sais pas faire sur mon ihm (dsl je suis un newbie), euh neguib, je peux exposer ca sur le meme post ou faut que je refasse un sujet? (j'demande car j'ai post� deja plusieurs posts en qques jours :S)

    ++

  4. #4
    Membre exp�riment� Avatar de DeusXL
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    300
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 300
    Par d�faut
    Allez hop je ressors mon C++ .NET :
    Par "CustomListView", j'imagine qu'il veut te conseiller de cr�er une nouvelle classe h�rit�e de ListView et si ce n'est pas le cas, alors moi je le fais

    Voici ce que donne son code :
    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
    	__gc class CustomListView : public ListView
    	{
    		protected: bool ProcessDialogKey(Keys keyData)
    				   {
    					   switch(keyData)
    					   {
    							case Keys::Return:
    								this->OnDoubleClick(NULL);
    								return true;
     
    							default:
    								return ListView::ProcessDialogKey(keyData);
    					   }
    				   }
    	};
    Par contre mon C++ .NET �tant bien rouill�, je sais pas si �a fonctionnera vraiment Mais �a ne co�te rien d'essayer

    [Edit]Je suis pas du tout s�r que �a fasse exactement ce que tu veux car je connais pas le fonctionnement de ListView.OnDoubleClick ( et j'avoue aussi que j'ai pas trop compris ce que tu voulais faire )... Mais tu as d�j� le fond de la solution [/Edit]

  5. #5
    Expert confirm�
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    D�tails du profil
    Informations personnelles :
    �ge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par d�faut
    Citation Envoy� par DeusXL
    Allez hop je ressors mon C++ .NET :
    Par "CustomListView", j'imagine qu'il veut te conseiller de cr�er une nouvelle classe h�rit�e de ListView et si ce n'est pas le cas, alors moi je le fais

    Voici ce que donne son code :
    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
    	__gc class CustomListView : public ListView
    	{
    		protected: bool ProcessDialogKey(Keys keyData)
    				   {
    					   switch(keyData)
    					   {
    							case Keys::Return:
    								this->OnDoubleClick(NULL);
    								return true;
     
    							default:
    								return ListView::ProcessDialogKey(keyData);
    					   }
    				   }
    	};
    Par contre mon C++ .NET �tant bien rouill�, je sais pas si �a fonctionnera vraiment Mais �a ne co�te rien d'essayer

    [Edit]Je suis pas du tout s�r que �a fasse exactement ce que tu veux car je connais pas le fonctionnement de ListView.OnDoubleClick ( et j'avoue aussi que j'ai pas trop compris ce que tu voulais faire )... Mais tu as d�j� le fond de la solution [/Edit]
    Eh bien merci DeusXL pour cette le�on de C++
    A vue de nez c'est ce que je voulais expliquer � notre ami, bien s�r ceci ne fonctionnera que si la propri�t� CustomListView.Activation a pour valeur dans cet exemple ItemActivation.TwoClick

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    D�cembre 2005
    Messages
    13
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2005
    Messages : 13
    Par d�faut
    Slt,

    J'ai essay� de faire comme ceci:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void OutilsSpectra::Form1::listView1_KeyPress(System::Object*  sender, System::Windows::Forms::KeyPressEventArgs*  e)
    {
    	ListViewItem* selection = listView1->GetItemAt(e->X, e->Y);
     
    	if (e->KeyChar == '\r') 
    	{
    		// If the user chooses item[0] in the ListView, display
    		// the "FT_to_FC" form.
    		if (Object::Equals(selection, listView1->Items->get_Item(0))) 
    		{	
    			Fiche_FT_to_FC* f1 = new Fiche_FT_to_FC();
    		}
         }
    }
    et d�finit un peu avant dans mon code:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    this->listView1->KeyPress += new KeyPressEventHandler(this, listView1_KeyPress);
    Alors, avec ce code je peux activer les icones de mon listview avec "enter", mais le probleme c'est que j'arrive pas � diff�rencier chacun des icones lorsque l'on fait "enter" dessus. J'ai essay� d'utiliser listView1->GetItemAt(e->X, e->Y), mais pour un KeyPressEventArgs, il n'y a pas de propri�t� X et Y , y a t-il une alternive pour distinguer chacun des icones?

    ++

  7. #7
    Membre exp�riment� Avatar de DeusXL
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    300
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 300
    Par d�faut
    Bah pour avoir la position relative de ta souris sur ta form, il faut faire :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    Point myPoint = Cursor::get_Position();
    myPoint.X -= this->Location.X;
    myPoint.Y -= this->Location.Y;
    listView1->GetItemAt(myPoint->X, myPoint->Y);
    Et apr�s, tu peux traiter ces valeurs mais bon la derni�re fois que je me suis aventur� dans les curseurs de souris, j'en suis mal ressort. Et en plus je parie que je me casse la t�te et qu'il y a plein de fonctions bien basiques pour faire �a.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    D�cembre 2005
    Messages
    13
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2005
    Messages : 13
    Par d�faut
    Lut DEusXL
    pour ton code, la position de la souris ne va pas m'aider puisque je ne l'utilise pas pour s�lectionner mon icone, si par exemple j'utilise le focus sur l'icone et apres je fais entrer. D'un autre cot�, je vais test� ton code en esperant que ca puisse m'aider.

    Bonne soir�e.

  9. #9
    Membre exp�riment� Avatar de DeusXL
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    300
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 300
    Par d�faut
    Attend je ne comprends pas, tu veux d�velopper un item s�lectionn� lorsqu'on appuie sur Entrer : Si oui alors
    ListView::get_SelectedItems()
    ne t'aide pas ?
    Comme tu parlais de GetItemAt, j'ai imagin� que tu voulais la position de la souris...

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    D�cembre 2005
    Messages
    13
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2005
    Messages : 13
    Par d�faut
    Attend je ne comprends pas, tu veux d�velopper un item s�lectionn� lorsqu'on appuie sur Entrer
    Oui c'est ca, en faisant "entrer" sur un des icones de ma listeView, une fenetre bien pr�cise doit s'ouvrir. Donc comme ce n'est pas la m�me fen�tre qui se lance suivant l'icone qui est activer par "enter" j'ai besion de savoir quel icone a recu l'ev�nement Keypress. J'espere me faire comprendre (javoue que c'est pas super simple de bien expliquer)

    J'ai utilis� GetItemAt() car je sais qu'avec cette m�thode je peux savoir quel icone a �t� s�lectionner, mais je ne savais pas que c'etait exclusivement valable avec le clic de souris. Enfin c'est du moins ce que j'en d�duis puisque pour un KeyPressEventArgs je n'ai pas acc�s au X et Y, donc getItemAt() n'est pas utilisable dans mon cas

    Quand � get_SelectedItems(), je n'ai pas souvenir d'avoir essayer avec ca (il y a telment de fonction qu'on finit par s'y perdre)

    ++[/b]

  11. #11
    Membre exp�riment� Avatar de DeusXL
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    300
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 300
    Par d�faut
    Citation Envoy� par Tchaka
    (il y a telment de fonction qu'on finit par s'y perdre)
    Enti�rement d'accord... Surtout que la documentation C++ .NET est sp�cialement mal r�dig�e et qu'on est bien souvent tent� de m�langer managed / unmanaged de mani�re impr�cise. Moi de toute fa�on j'ai vite l�ch� ce langage qui ne me semble pas tout � fait pr�t � .NET ... C'est juste une impression et elle est peut �tre stupide mais depuis que je suis au C#, la vie est... plus rose, le ciel plus bleu, l'herbe plus verte et les filles (encore) plus jolies mais �a, je pense que c'est une illusion d'optique, �a ne doit avoir aucun rapport avec le C#...

    Pour en revenir � ton probl�me, comme j'avais bien compris cette fois, c'est bien get_SelectedItems() qui t'aidera... Il faut que tu fasses un truc du genre :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ListView::SelectedListViewItemCollection *iList = listView1->get_SelectedItems();
    for(int i = 0; i < iList->Count; i++)
    {
       if(iList->get_Item(i)->get_Text() == S"Form1")
    	    //Afficher la Form1.
       else if(iList->get_Item(i)->get_Text() == S"Form1")
    	    //Afficher la Form1.
       else //usw...
    }

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    D�cembre 2005
    Messages
    13
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2005
    Messages : 13
    Par d�faut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    C'est juste une impression et elle est peut être stupide mais depuis que je suis au C#, la vie est... plus rose, le ciel plus bleu, l'herbe plus verte
    Eh oui, comme je l'ai mentionn� dans mon 2�me message de ce post
    (si j'avais su je me serais mis au C# pour faire mon ihm....)
    mais bon, je trouve vraiment que C++ rox donc c# attendra encore un peu

    Je prends note de ton dernire message et je tacherais de tester demain � la premi�re heure. Dsl je peux pas te dire sur le coup si j'ai trouv� solution � mon probl�me, mon projet VC++ est au boulot et l� je ne travaille pas sur Windows et je doute qu'Anjuta gobe les projets de Visual (ptite parenth�se, je fais cette ihm dans le cadre de mon stage... )

    Merci
    ciao

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    D�cembre 2005
    Messages
    13
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2005
    Messages : 13
    Par d�faut
    Re,

    DeusXL, j'ai essay� aujourdh'ui le code que tu m'as fourni et maintenant j'arrive � avoir ce que je voulais. L'activation de chaque icone par 'enter' avec l'association d'une Form bien pr�cise fonctionne. Donc merci � toi et au passage � Neguib

    ++

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 3
    Dernier message: 31/12/2008, 12h27
  2. [ListView] Comment parcourir les �l�ments avec la touche Tabulation ?
    Par ikeas dans le forum Windows Presentation Foundation
    R�ponses: 8
    Dernier message: 13/09/2008, 22h16
  3. comment activer la pagination avec un datalist ?
    Par DoraAimeLePoulet dans le forum ASP.NET
    R�ponses: 1
    Dernier message: 30/05/2008, 13h37
  4. R�ponses: 2
    Dernier message: 08/09/2006, 19h10
  5. [VB.NET] comment �crire du texte avec opengl?
    Par ero_senin dans le forum OpenGL
    R�ponses: 2
    Dernier message: 17/01/2005, 13h34

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