Bon. Il n'y a pas de bug et voici l'explication.
Exécute ce bout de programme:
- Code:
-
label focus
button 1
edit 2:top 2,50
text 2,"abcd"
on_click 1,focus
end
focus:
set_focus 2
return
En cliquant sur le bouton, tu donnes le focus au bouton et l'EDIT perd donc son focus.
Le traitement du click sur le bouton redonne le focus à l'EDIT alors qu'il l'avait perdu.
Un focus sur un EDIT qui n'a pas le focus sélectionne le texte qu'il contient, tandis qu'un focus sur un EDIT qui a déja le focus est inactif. C'est Windows qui fonctionne ainsi.
Ceci étant acquis, dans l'exemple que tu donnes (le premier), le premier EDIT (204) n'aura jamais le focus, car quand x% vaut 204, il y a SET_FOCUS 205
Lorsque qu'on tape un caractère dans l'EDIT de gauche 204, il ne se passe rien, aucun EDIT ne reçoit le focus.
Au 2ème caractère dans l'EDIT 204, le focus est donné au 2ème EDIT (205)
Lorsqu'on tape un 3ème caractère, il va dans cet EDIT 205.
Le test sur EDIT 204 étant positif, le focus est donné au 2ème EDIT 205; mais il a déjà le focus. Le set_focus est inactif.
Lorsqu'on tape un 4ème caractère, il va dans cet EDIT 205.
Le test sur EDIT 204 étant positif, le focus est donné au 2ème EDIT 205.
Le test sur EDIT 205 étant positif, le focus est ensuite donné au 3ème EDIT 206.
Lorsqu'on tape un 5ème caractère, il va dans cet EDIT 206.
Le test sur EDIT 204 étant positif, le focus est donné au 2ème EDIT 205.
Le test sur EDIT 205 étant positif, le focus est ensuite donné au 3ème EDIT 206. MAIS cette fois, cet EDIT n'avait plus le focus. Le texte qu'il contient est donc cette fois sélectionné.
Tout caractère tapé ensuite remplace le texte sélectionné, encore une fois, c'est Windows qui fonctionne comme ça.
Et tu as l'impression que plus rien n'est pris en compte...