2011-08-04 17 views
8

¿Hay una manera simple de conseguir que esto funcione?simple línea de campo de entrada de texto aceptar rompe

text = ""; 
DialogInput[{TextCell["Try to type a text with linebreaks :-)"], 
    InputField[Dynamic[text], String], 
    Button["Ok", DialogReturn[text]]}] 

El problema es que InputField termina después de escribir Return. Solo quiero un campo de entrada de texto simple.

+5

Chris Degnen publicó su solución a este problema aquí: http://groups.google.com/group/comp.soft-sys.math.mathematica/browse_thread/thread/3a2b1cfa8efa6df9 (véase su último mensaje allí) –

+0

@Leonid : Debes poner eso en una respuesta (o invitar a Chris a). – Simon

+0

@Simon Ok, gracias por la sugerencia, tiene sentido. Lo publicado, aunque sería mejor si Chris hizo él mismo - se puso mucho esfuerzo en conseguir que funcione, y esto es un problema no trivial. Solo puedo hablar por mí mismo, pero me di por vencido en algún momento, hasta que vi su publicación. –

Respuesta

11

Gracias por el Leonid heads-up. Aquí está el código:

text = ""; 
DialogInput[{TextCell["Try to type a text with linebreaks :-)"], 
    InputField[Dynamic[text], String, FieldSize -> {30, 6}], 
    DefaultButton[DialogReturn[text]]}, 
NotebookEventActions -> {"ReturnKeyDown" :> 
    FrontEndExecute[NotebookWrite[InputNotebook[], "\n"]]}] 

La instrucción FrontEndExecute es un poco más simple en esta versión.

Por cierto, para eliminar la configuración predeterminada de retorno de acción clave NotebookEventActions puede utilizar NotebookEventActions->{}. Esto puede ser útil para evitar que los diálogos desaparezcan durante la entrada.

+2

¡Genial! Eliminé mi publicación. Espero que quienes votaron por él gastarán algunos votos adicionales por su respuesta, ya que es aquí donde pertenecen esos votos. –

+0

¡Gracias, funciona perfecto! – phantomas1234

Cuestiones relacionadas