dcl编辑框
你好我正在尝试编写我的第一个dcl文件。。。是否有任何方法可以使用ENTER键盘按钮(而不是tab)将光标移动到编辑框上,类似于Visual Basic中的TabIndex?
lsp文件启动后,我希望光标定位在第一个编辑框中,在我在那里写入一些值后,我希望使用enter按钮转到下一个编辑框。。。在3个或4个编辑框之后,光标应该定位在OK按钮上,等待我再次按下enter。。。
欢迎提出任何建议。
谢谢 当程序启动时,使用(mode_tile“your tile here”2)将焦点设置为该互动程序。然后,您必须使用tab键转到下一个互动程序。 谢谢你这么做。这是我问题的一部分的解决方案。
那么,没有办法使用ENTER按钮? 我不这么认为,
当你按下OK按钮时,你会点击enter来启动程序,所以如果你可以使用enter for选项卡,你怎么能不用鼠标点击按钮就启动程序呢。
我从来没有遇到过tab键的问题,不管怎样,我的左手总是在那里。 我非常怀疑你是否能够控制鼠标——这是一种比LISP低得多的编程语言,用于实现这一功能。
我就是这么想的。至少可以是VB。
谢谢大家。 实际上,您可以使用(仅从键盘)在对话框字段之间进行导航–请尝试以下代码:
另存为test\u dclnavigate。AutoCAD搜索路径上的dcl文件:
TESTDIALOG : dialog {
: edit_box { key = "EditBox1st"; label = "1st Edit Box: "; allow_accept = false; edit_width = 12;}
: edit_box { key = "EditBox2nd"; label = "2nd Edit Box: "; allow_accept = false; edit_width = 12;}
: edit_box { key = "EditBox3rd"; label = "3rd Edit Box: "; allow_accept = false; edit_width = 12;}
ok_only;
}
另存为test\u dclnavigate。lsp文件:
(defun TestDialogNavigate()
(setq CodDialog (load_dialog "test_dclnavigate.dcl"))
(if (not (new_dialog "TESTDIALOG" CodDialog)) (exit))
(mode_tile "EditBox1st" 2) ;set initial focus to first edit box
(action_tile "EditBox1st" "(mode_tile \"EditBox2nd\" 2)") ;switch focus from first to second
(action_tile "EditBox2nd" "(mode_tile \"EditBox3rd\" 2)") ;switch focus from second to third
(action_tile "EditBox3rd" "(mode_tile \"accept\" 2)") ;set final focus from third to OK
(action_tile "accept" "(done_dialog 1)")
(start_dialog)
(unload_dialog CodDialog)
(princ)
)
在代码中,不要忘记为导航中包含的所有字段将allow_accept属性设置为false。
当做
那很容易!!!好极了!!!这就是我想要的。真的很好。谢谢。
我把在这里找到的所有建议都编成代码,对我来说很好。
它需要更多的化妆。。。
我添加了一个list_框,并在其中列出了层名称,以便用户可以选择工作层。按下ok按钮后,绘制点及其编号(例如),并再次弹出下一个点的对话框。
我将选择的图层名保存到变量中,但有没有办法通过在列表框中自动高亮显示将该图层名设置为下一个条目的默认(当前)图层名?问题是:如何在列表框中突出显示存储在变量中的层名称?
再次感谢msasu为代码带来的巨大和平。 谢谢你的评论!我很高兴能帮助你。
为了突出显示列表框或弹出列表中的条目,您应该首先找到您的默认值是否存储在该列表及其索引中(列表中的位置,第一个条目是索引0)。接下来,加载对话框时,通过以下方式高亮显示它:
(set_tile “MyListBox” (itoa ItemIndexInList))
注意,set\u tile语句只接受字符串作为参数;提供nil作为第二个参数将引发致命错误!
当做
页:
[1]
2