jbuzbee 发表于 2006-7-18 10:28:21

需要对话框帮助。。。。

我是来自ODCL的许多难民之一,他们正在努力解决VBA问题,我似乎取得了合理的进展,但遇到了一个恼人的障碍,我希望可以轻松克服
我有一个现有的lisp例程,我想为其重新创建对话框控件。本人'我已经把它们放在一起了,它完全按照我想要的方式工作。该对话框是从lisp例程中启动的,以获得一些用户输入。用户输入的一个方面是GetDistance选择,这就是我的问题开始的地方。当我隐藏对话框以执行GetDistance时,lisp例程的其余部分将执行。我的对话框,然后重新出现后,我的距离,但当我点击确定按钮,没有更多的事情发生,因为所有的lisp执行之前
在我点击对话框上的正确按钮之前,我如何隐藏对话框而不向lisp例程发送信号?

七十年代生人 发表于 2006-7-18 12:16:36

你好,尼克,我不是很确定,但在VB中你可以关闭一个窗体并将其隐藏
这里有一个类模块调用一个模块,然后模块调用表单,然后表单隐藏,然后表单卸载。如果不卸载表单,它仍会加载到mem中
Option Explicit
'this allows the AcadApplication to be accessable from the form
Public AcadApp2 As AcadApplication

&039''课堂模块Public Sub SLW1(AcadApp As AcadApplication)
   
   SLWal1c AcadApp
End Sub
&039''模块Public Sub SLWal1c(AcadApp As AcadApplication)
Set AutoCAD_Application = AcadApp
Set thisdrawing = AutoCAD_Application.ActiveDocument
Set AcadApp2 = AcadApp
   frmW1.Show vbModal
End Sub
表单现在对用户开放,并显示
&039''表单Private Sub cmdGO_Click()
Set AutoCAD_Application = AcadApp2
Set thisdrawing = AutoCAD_Application.ActiveDocument
    frmW1.Hide'form hidden here
   msgbox "You form is hidden, but still loaded"
   msgbox "Now to unload the form..."
   Unload Me
End Sub
你可能需要做类似的事情
祝你好运,戴夫

新迁安 发表于 2006-7-19 03:11:37

嗯。这与我之前的项目设置非常相似。我一直在隐藏表单,而不是在执行GetDistance时卸载,并且只在点击OK关闭对话框时卸载。我曾假设,虽然对话框只是隐藏而不是卸载,但lisp不会将其视为继续点头。不幸的是,似乎一旦对话框从屏幕上删除,lisp就认为它可以继续了
我想我'我只需要继续努力,看看我是否能偶然发现什么;

Andy 发表于 2006-7-19 11:18:57

尼克先生,你在ObjectDCL论坛上关注过VBA吗 在我看来,您需要首先获取用户输入,将其设置为AutoLISP变量,然后运行lisp例程 我首先让VBA表单独立运行(就像ObjectDCL一样),并设置它;“全球”;变量,则具有;“ok”;按钮(通过sendcommand或EvalLispExpression[见下文])利用所述变量执行lisp例程 这里是#039;有点“s”;“偏移层”;让你开始的例行程序
jb

杨佳 发表于 2006-7-19 18:45:15

Lisp和VBA don#039;t互动良好,尤其是在你描述的方式上 实际上,如果不是不可能的话,也几乎不可能同步两个串联运行的系统 JB向你们展示的方法确实是我所知道的唯一可行的往返方法。

大海 发表于 2006-7-20 09:07:22

有时,我不'不要以貌取人
花了一段时间查看我的例程,看看它为什么会出问题,我发现在关闭对话框后要运行的lisp中包含一个命令调用,它不是't由VLAX支持。我不知道'我不知道我'我读过了,但它只是没有#039;我每次扫描代码时都不会注册
无论如何,经过一点谨慎的修剪和调整,我已经设法把我的日常生活变成了一个功能齐全的混合怪物!!当然不是'我不干净也不聪明,但至少这意味着我终于可以安全地开始过渡到2007年,因为我对ODCL的依赖现在已经严重了

韩妃 发表于 2006-7-20 09:09:34

好交易
页: [1]
查看完整版本: 需要对话框帮助。。。。