2016-04-22 56 views
1

只需要一个包装输入的文本字段%一个基本的例子如何使用球拍GUI插件包在文本字段中输入文本

(define blogPost% 
    (class horizontal-panel% 
    (super-new) 
    (define (callback button event) 
     (define title-new-value (send titleoutput get-value)) 
     (define new-value (send output get-value)) 
     (save title-new-value new-value)) 
     ;;(display title-new-value) 
     ;;(display new-value)) 
    (define button (new button% (label "Submit") 
         (vert-margin 0) 
         (parent this) 
         (callback callback))) 
    (define titleoutput (new text-field% (label " title") 
          (min-height 20) 
          (min-width 200) 
          (parent this))) 
    (define output (new text-field% (label "blog") 
         (min-height 450) 
         (min-width 400) 
         (stretchable-width 300) 
         (vert-margin 0) 
         (parent this))) 
    )) 


(define f (new frame% (label "prism blog post GUI") (min-width 400) (min-height 500))) 

(define tib (new blogPost% 
       (parent f))) 

(send f show #t) 

有更多的这个,基本上它节省了用户的输入到我们计划可以访问并打印到屏幕的数据库中。但是,用户在输入文本字段时只需在一行中水平输入,并且不会进行文字换行,并且输入按钮不会换行。这个问题是否可以解决?

+0

尝试运行示例时,出现未绑定的标识符错误。 'callback'定义中的'save'是什么? –

回答

1

要允许多行输入到一个文本字段,你需要添加[style '(multiple)]的初始化参数是这样的:

(define output (new text-field% [label "blog"] 
         [style '(multiple)] 
         [min-height 450] 
         [min-width 400] 
         [stretchable-width 300] 
         [vert-margin 0] 
         [parent this])) 

然后文本字段可以换行,并环绕文字时,行得太长。

此文档是here。在这方面,它说:

有两个文本字段风格:

  • 单个文本行是可见的,并且当用户按下回车键,否则会生成一个特殊的控制事件的输入(当文本字段具有焦点),并且该事件不由文本字段的框架或对话框处理(请参阅top-level-window<%>中的on-traverse-char)。

  • 多行文本是可见的,并且Enter没有专门处理。

后来,它指定样式参数是一个符号列表,并说:

样式必须包含的'single'multiple只有一个;前者指定单行字段,后者指定多行字段。

相关问题