Focus sur «InputField» lors de la création? [dupliquer]

Aug 17 2020

Disons que nous créons un champ de saisie comme

InputField[]

Après avoir appuyé sur Entrée, le champ de saisie apparaît dans la zone de sortie ci-dessous, mais le focus dans le cahier passe directement à la ligne suivante, où une nouvelle cellule peut être créée. Existe-t-il un moyen de créer un InputFieldet de le sélectionner immédiatement lors de la création (sans avoir à cliquer dessus), de sorte que le texte puisse être immédiatement saisi dans le InputField?

Réponses

4 kglr Aug 18 2020 at 05:22

Vous pouvez attribuer un identifiant de boîte à un champ de saisie en utilisant BoxID -> "id"et utiliser la fonction FrontEnd`MoveCursorToInputFieldpour déplacer le focus vers le champ de saisie souhaité:

InputField[Null, BoxID -> "id"]
FrontEnd`MoveCursorToInputField[EvaluationNotebook[], "id"];

Un autre exemple:

Grid[{{InputField[Dynamic[x]], InputField[Dynamic[y], BoxID -> "ify"],
    InputField[Dynamic[z]]}}]
FrontEnd`MoveCursorToInputField[EvaluationNotebook[], "ify"]; 

Vous pouvez également mettre en surbrillance le contenu de la cellule et utiliser Ctrl+ Shift+ Enterpour évaluer en place: