首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VID或R3-Gui中的文本和插入符号

VID或R3-Gui中的文本和插入符号
EN

Stack Overflow用户
提问于 2015-02-16 16:30:30
回答 2查看 214关注 0票数 2

一个简单的例子:

如果我在样式“区域”中键入#"w“,如何得到#"z"?(例如"qwerty ww“-> "qzerty zz")

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-17 12:04:12

由于您希望动态转换,您可以在加载之前修改R3-GUI。因此,将r3-gui.r3加载到本地目录。然后将行(如果键为== #"w“key:#"z" )添加到函数do-text- key 中,因此如下所示

代码语言:javascript
复制
do-text-key: funct [
  "Process text face keyboard events."
  face [object!]
  event [event! object!]
  key
] [
  text-key-map/face: face
  text-key-map/shift?: find event/flags 'shift
  if no-edit: not tag-face? face 'edit [
    key: any [select/skip text-key-map/no-edit key 2 key]
  ]
  either char? key [
    if key == #"w" [key: #"z"]
    text-key-map/key: key
    switch/default key bind text-key-map/chars 'event [
      unless no-edit [
          insert-text-face face key
      ]
    ]
  ] [
    if find event/flags 'control [
      key: any [select text-key-map/control key key]
    ]
      text-key-map/key: key
      switch/default key text-key-map/words [return event]
  ]
  none
]

可能官方的方法是使用on-key wih Rebol3。

代码语言:javascript
复制
load-gui
view [
  a: area  on-key [ ; arg: event
     if arg/type = 'key [
        if  arg/key == #"w" [arg/key:  #"z"]
     ]
     do-actor/style face 'on-key arg face/style
  ]
]

最后一种方法是在Rebol2上执行此操作

代码语言:javascript
复制
key-event: func [face event] [
    if event/type = 'key [ 
        if all [event/key = #"w"   ] [
            append a/text  #"z" 
            focus a
            view w 
           return false
        ]
    ] 
    event 
] 
insert-event-func :key-event        

view w: layout [
    a: area 
]
票数 2
EN

Stack Overflow用户

发布于 2015-03-02 10:25:51

在阅读了r3-gui的一些文件(text-caret.r3、text-cursor.r3、text-ed.r3、text-keys.r3、text.r3)和编辑器之后,我找到了一个解决方案,允许我不仅插入一个字符,还可以插入字符串:

代码语言:javascript
复制
do %r3-gui.r3

insertText-moveCursor-updateFace: func [
    face
    string
    n-move
][
    insert-text-face face string
    move-cursor face 'left n-move false 
    update-text-caret face 
    see-caret face
    show-later face
]   

i-m-u: :insertText-moveCursor-updateFace

view [
    area on-key [
        either arg/type = 'key [
            switch/default  arg/key [
                #"w" [i-m-u face/names/text-box "z" 0]
                #"[" [i-m-u face/names/text-box "[]" 1]
                #"$" [i-m-u face/names/text-box "func [] []" 4]
            ] [
                ;switch/default 
                do-actor/style face 'on-key arg face/style
            ]
        ] [
            ;arg/type != 'key
            do-actor/style face 'on-key arg face/style
        ]   
    ]   
]

区域是一种复合风格。它由一个文本框和一个滚动体组成.它们包含在面孔/名字中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28546013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档