#0 

09-07-2007 20:31:04

vrag
Membre
Date d'inscription: 30-06-2007
Messages: 61

salut tout le monde

j'ai crée un éditeur de map ( le code est dans un autre sujet) et j'ai voulu rajouter des raccourcis. Seulement voila comme j'ai aussi des editBox, quand je veux écrire dans une des editBox et que j'appuis sur "a" par exemple, le raccourcis s'enclenche. Comment faire pour que quand j'écris dans une des box j'ai pas de raccourcis qui s'enclenche ?

Voila le code que j'ai rajouté:

if (event.EventType == irr::EET_KEY_INPUT_EVENT &&
            !event.KeyInput.PressedDown)
        {
            switch(event.KeyInput.Key)
            {
                case KEY_KEY_A:

                createToolBoxForet();

                return true;

                case KEY_KEY_C:

                createToolBoxCiel();

                return true;

                case KEY_KEY_R:

                createToolBoxRelief();

                return true;

                case KEY_KEY_O:

                createToolBoxEau();

                return true;

                case KEY_KEY_I:

                createToolBoxInsertion();

                return true;
            }
        }


Merci d'avance.

Hors ligne


#1 

09-07-2007 20:51:30

dark calculator
Abonné
Date d'inscription: 25-02-2007
Messages: 153

salut

Pour savoir si ton editbox a le focus il faut utiliset edit->hasFocus() qui retourne true si l'edit box a le focus.
Sinon tu peut utiliser ctrl+a a la place de a : dans la class event il y a unmembre qui donne si ctrl est appuyé ou non

je pense que tu pourat implémenter les idées

voila en esperant t'avoir aidé

dark calculator

Hors ligne


#2 

09-07-2007 20:59:23

vrag
Membre
Date d'inscription: 30-06-2007
Messages: 61

c'est quoi un focus ?
et puis pour le CTRL j'avais déjà eu l'idée mais j'ai pas trouvé comment la mettre en place. J'ai cherché dans la doc mais sans résultat

Hors ligne


#3 

10-07-2007 00:22:43

dark calculator
Abonné
Date d'inscription: 25-02-2007
Messages: 153

vrag :

c'est quoi un focus ?


Quand un element a le focus cela signifie n quelque sorte qu'il est sélectionne. C'est souvent le dernier objet que t'a cliqué, la textbox ou tu tapes... qui le possède, quand tu appuis sur tab le focus change d'element. Ce terme est valable a tous les gui pas seulemnt à irrlicht

C'est à dire que si l'editbox a le focus sa veut dire que l'utilisateur est sensé taper du texte dedans donc pas d'action a effectuer.
Je te donne un exemple a verifier et je ne suis pas sur du nom exact de la fonction hasFocus :

Code:

if (event.EventType == irr::EET_KEY_INPUT_EVENT &&
            !event.KeyInput.PressedDown) && (!editbox->hasFocus())
        {
            switch(event.KeyInput.Key)
            {
                case KEY_KEY_A:

                createToolBoxForet();

                return true;

                case KEY_KEY_C:

                createToolBoxCiel();

                return true;

                case KEY_KEY_R:

                createToolBoxRelief();

                return true;

                case KEY_KEY_O:

                createToolBoxEau();

                return true;

                case KEY_KEY_I:

                createToolBoxInsertion();

                return true;
            }
        }

editbox doit etre recuperer via son id ou une variable globale ...
Sinon pour controle c'est event.KeyInput.Control qui est à true si ctrl est appuyé

j'espere avoir ete clair pour le focus car je me suis rendu conte que ce n'etait pas évident a explique et je me demande comment je l'ai appris pour la premiere fois

dark calculator

Dernière modification par dark calculator (10-07-2007 00:24:30)

Hors ligne


#4 

12-07-2007 11:08:11

vrag
Membre
Date d'inscription: 30-06-2007
Messages: 61

j'ai déclaré une variable globale ( c'est pas bien je sais je corrigerais plus tard):

IGUIEditBox* editBox = 0;

et ensuite j'ai insérer ton code dans mon EventReceiver mais quand je compile, ça m'affiche ça:

main.cpp:325: error: 'class irr::gui::IGUIEditBox' has no member named 'hadFocus'


je suis allé fouillé dans la doc et hasFocus se met avec IGUIEnvironment. Seulement voila c'est IGUIEditBox que je veux.

Je sais pas quoi faire

Hors ligne


#5 

12-07-2007 11:37:26

Perceval
Abonné
Date d'inscription: 20-10-2006
Messages: 105

En fait il faut écrire (en supposant que ton IGUIEnvironment soit guienv) :

Code:

guienv->hasFocus(editBox);

Hors ligne


#6 

12-07-2007 12:23:02

vrag
Membre
Date d'inscription: 30-06-2007
Messages: 61

la compilation marche mais quand j'utilise un raccourcis le programme plante

Hors ligne


#7 

12-07-2007 13:18:31

Perceval
Abonné
Date d'inscription: 20-10-2006
Messages: 105

Tu as peut être oublié d'initialiser ton editBox.
Sinon, je n'avais pas lu le début du post, mais si tu veux utiliser des raccourcis du genre ctrl+a, utilises plutôt event.KeyInput.Control comme Dark calculator le suggère, je penses que c'est plus simple, surtout si tu créées d'autres editBox après (tu serais obligé de faire un test pour vérifier qu'aucune editBox n'a le focus hmm )

Code:

if (event.EventType == irr::EET_KEY_INPUT_EVENT &&
                 !event.KeyInput.PressedDown)
        {
            if (event.KeyInput.Control)
            {
 switch(event.KeyInput.Key)
            {
                case KEY_KEY_A:

                createToolBoxForet();

                return true;

                case KEY_KEY_C:

                createToolBoxCiel();

                return true;

                case KEY_KEY_R:

                createToolBoxRelief();

                return true;

                case KEY_KEY_O:

                createToolBoxEau();

                return true;

                case KEY_KEY_I:

                createToolBoxInsertion();

                return true;
            }
        }
}

Hors ligne


#8 

12-07-2007 14:40:36

vrag
Membre
Date d'inscription: 30-06-2007
Messages: 61

c'est bon ça marche merci beaucoup

et sinon pour mettre F1 en raccourcis faut faire comment ?

Hors ligne


#9 

12-07-2007 14:50:26

Perceval
Abonné
Date d'inscription: 20-10-2006
Messages: 105

Il y a une touche KEY_F1, utilises la comme n'importe quelle autre touche du clavier smile

Hors ligne


#10 

12-07-2007 17:29:22

vrag
Membre
Date d'inscription: 30-06-2007
Messages: 61

merci beaucoup

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
78 invités en ligne
Aucun membre connecté
RSS Feed