乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 107|回复: 6

需要对话框帮助。。。。

[复制链接]

10

主题

34

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
74
发表于 2006-7-18 10:28:21 | 显示全部楼层 |阅读模式
我是来自ODCL的众多难民之一,他们正试图掌握VBA,我似乎取得了合理的进展,但遇到了一个令人讨厌的障碍,我希望可以轻松克服。
我有一个现有的lisp例程,我想为它重新创建对话框控件。我已经把它们放在一起,它完全按照我想要的方式工作。该对话框从 lisp 例程中启动,以获取一些用户输入。用户输入的一个方面是GetDistance选择,这就是我的问题开始的地方。当我隐藏对话框以执行 GetDistance 时,将执行 lisp 例程的其余部分。然后,我的对话框在获得我的距离后重新出现,但是当我点击“确定”按钮时,由于之前执行了所有lisp,因此没有发生更多的事情。
如何让我的对话框隐藏起来,而不是向lisp例程发出信号,直到我点击对话框上的正确按钮?

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

12

主题

150

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
198
发表于 2006-7-18 12:16:36 | 显示全部楼层
你好,尼克,
不是很确定,但在VB中,您可以关闭窗体并将其隐藏
这里有一个类模块调用一个模块,然后模块调用表单,然后表单隐藏,然后表单卸载。如果不卸载表单,它仍将在mem中加载
  1. Option Explicit
  2. 'this allows the AcadApplication to be accessable from the form
  3. Public AcadApp2 As AcadApplication

类模块
  1. Public Sub SLW1(AcadApp As AcadApplication)
  2.    
  3.    SLWal1c AcadApp
  4. End Sub

模块
  1. Public Sub SLWal1c(AcadApp As AcadApplication)
  2. Set AutoCAD_Application = AcadApp
  3. Set thisdrawing = AutoCAD_Application.ActiveDocument
  4. Set AcadApp2 = AcadApp
  5.    frmW1.Show vbModal
  6. End Sub

表单现在向用户开放,并显示
表单
  1. Private Sub cmdGO_Click()
  2. Set AutoCAD_Application = AcadApp2
  3. Set thisdrawing = AutoCAD_Application.ActiveDocument
  4.     frmW1.Hide  'form hidden here
  5.    msgbox "You form is hidden, but still loaded"
  6.    msgbox "Now to unload the form..."
  7.    Unload Me
  8. End Sub

您可能需要做类似的事情<祝你好运,戴夫
回复

使用道具 举报

10

主题

34

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
74
发表于 2006-7-19 03:11:37 | 显示全部楼层
嗯。这与我已经设置项目的方式非常相似。我一直在隐藏表单,而不是在执行GetDistance时卸载,并且仅在点击OK以关闭对话框时卸载。我原以为,虽然对话只是隐藏而不是卸载,但lisp不会认为这是在继续点头。不幸的是,似乎一旦对话框从屏幕中删除,lisp就会假设它很好。
我想我只需要继续插上插头,看看我是否可以偶然发现一些东西
回复

使用道具 举报

55

主题

197

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
416
发表于 2006-7-19 11:18:57 | 显示全部楼层
尼克先生,
你在ObjectDCL论坛上关注过VBA吗?在我看来,您需要首先获取用户输入,将其设置为AutoLISP变量,然后运行lisp例程。我首先让VBA表单独立运行(就像ObjectDCL一样),设置“全局”变量,然后让“确定”按钮(通过sendcommand或EvalLispExpression[见下文])利用所述变量执行lisp例程。这里有一个小的“偏移层”例程,可以让您开始。
jb
回复

使用道具 举报

10

主题

34

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
74
发表于 2006-7-19 18:45:15 | 显示全部楼层
Lisp和VBA交互不太好,尤其是在你描述的方式上。几乎如果不是实际上不可能同步这两个串联运行的话。据我所知,JB向您展示的方法确实是唯一可行的来回方式。
回复

使用道具 举报

10

主题

34

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
74
发表于 2006-7-20 09:07:22 | 显示全部楼层
有时候,我是只见树木不见森林!!
在花了一年时间查看我的例程以了解它为什么出问题后,我发现在关闭我的对话框后要运行的lisp包含一个命令调用——这是VLAX不支持的。我不知道我读过多少遍了,但是每次我扫描我的代码时,它都没有出现!!
无论如何,经过一点谨慎的调整和微调,我已经成功地将我的例程变成了一个全功能的混合怪物!!这当然不干净也不聪明,但至少这意味着我终于可以安全地开始向2007年过渡了,因为我知道我对ODCL的依赖已经被解除了
回复

使用道具 举报

55

主题

197

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
416
发表于 2006-7-20 09:09:34 | 显示全部楼层
好买卖
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-6 03:22 , Processed in 0.496871 second(s), 66 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表