Foco em `InputField` na criação? [duplicado]

Aug 17 2020

Digamos que criamos um campo de entrada como

InputField[]

Após pressionar enter, o campo de entrada aparece na área de saída abaixo, porém o foco no notebook pula direto para a próxima linha, onde uma nova célula pode ser criada. Existe uma maneira de criar um InputFielde selecioná-lo imediatamente para o foco na criação (sem ter que clicar nele), de modo que o texto possa ser imediatamente digitado no InputField?

Respostas

4 kglr Aug 18 2020 at 05:22

Você pode atribuir um id de caixa a um campo de entrada usando BoxID -> "id"e usar a função FrontEnd`MoveCursorToInputFieldpara mover o foco para o campo de entrada desejado:

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

Outro exemplo:

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

Como alternativa, destaque o conteúdo da célula e use Ctrl+ Shift+ Enterpara avaliar no local: