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
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
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
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 :
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
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:
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
En fait il faut écrire (en supposant que ton IGUIEnvironment soit guienv) :
guienv->hasFocus(editBox);
Hors ligne
la compilation marche mais quand j'utilise un raccourcis le programme plante
Hors ligne
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 )
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
c'est bon ça marche merci beaucoup
et sinon pour mettre F1 en raccourcis faut faire comment ?
Hors ligne
Il y a une touche KEY_F1, utilises la comme n'importe quelle autre touche du clavier
Hors ligne
Options | Liens officiels | Caractéristiques | Statistiques | Communauté |
---|---|---|---|---|
Corrections |
|
xhtml 1.0 css 2.1 Propulsé par FluxBB Traduit par FluxBB.fr |
882 membres 1429 sujets 11119 messages |
Dernier membre inscrit: LiseBuisson96 16 invités en ligne Aucun membre connecté RSS Feed |