乐筑天下

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

模块拆分或表单代码

[复制链接]

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-3-12 17:30:40 | 显示全部楼层
我真的不想打一匹死马,但我觉得这句话太离谱了;以下是其中一个模块
  1. Option Explicit
  2. Public Const VK_ESCAPE = &H1B
  3. Public Const VK_LBUTTON = &H1
  4. Public Const VK_SPACE = &H20
  5. Public Const VK_RETURN = &HD
  6. Public Const VK_LEFT = &H25
  7. Public Declare Function GetAsyncKeyState Lib "user32" _
  8.                                          (ByVal vKey As Long) As Integer
  9. Public Function AddBKR()
  10.       Dim dimsc As Integer
  11.       dimsc = ThisDrawing.GetVariable("DIMSCALE")
  12.       Dim InsPT As Variant
  13.       Dim intOsMode As Integer
  14.       Dim dblRotation As Double
  15.       Dim objBlockRef As AcadBlockReference
  16.       '************** Esc Code *************
  17.       Dim varCancel As Variant
  18.       On Error GoTo Err_Control
  19.       '************** Esc Code *************
  20.       Call LayerSet("3D-EQPM", acRed)
  21.       intOsMode = ThisDrawing.GetVariable("OSMODE")
  22.       ThisDrawing.SetVariable "OSMODE", 32
  23.       InsPT = ThisDrawing.Utility.GetPoint(, "Pick Insertion Point: ")
  24.       ThisDrawing.SetVariable "OSMODE", 512
  25.       dblRotation = ThisDrawing.Utility.GetAngle(InsPT, "Pick Cabinet Side: ")
  26.       Set objBlockRef = ThisDrawing.ModelSpace.InsertBlock(InsPT, Path & "breaker.dwg", 1, 1, 1, dblRotation)
  27.       '************** Esc Code *************
  28. Exit_Here:
  29.       LayerReSet
  30.       ThisDrawing.SetVariable "OSMODE", intOsMode
  31.       ThisDrawing.SetVariable "DIMSCALE", dimsc
  32.       ThisDrawing.SetVariable "INSUNITS", 1
  33.       Exit Function
  34. Err_Control:
  35.       Select Case Err.Number
  36.             Case -2147352567
  37.                   'Debug.Print Err.Number, Err.Description
  38.                   varCancel = ThisDrawing.GetVariable("LASTPROMPT")
  39.                   If InStr(1, varCancel, "*Cancel*")  0 Then
  40.                         If GetAsyncKeyState(VK_ESCAPE) And 8000 > 0 Then
  41.                               Err.Clear
  42.                               Resume Exit_Here
  43.                         ElseIf GetAsyncKeyState(VK_LBUTTON) > 0 Then
  44.                               Err.Clear
  45.                               Resume
  46.                         End If
  47.                   Else
  48.                         If GetAsyncKeyState(VK_SPACE) Then
  49.                               Resume Exit_Here
  50.                         End If
  51.                         'Missed the pick, send them back!
  52.                         Err.Clear
  53.                         Resume
  54.                   End If
  55.             Case Else
  56.                   MsgBox Err.Description
  57.                   Resume Exit_Here
  58.       End Select
  59. End Function
你说的改变是什么
  1. Option Explicit
  2. Public Enum CloseMode
  3.   CloseMode_Close=???
  4.   CloseMode_Cancel=&H1B  ' Added here and I would reference CloseMode.CloseMode_Cancel  ?
  5. End Enum
  6. Public Declare Function GetAsyncKeyState Lib "user32" _
  7.                                          (ByVal vKey As Long) As Integer
  8. Public Function AddBKR()
  9.       Dim dimsc As Integer
  10.       dimsc = ThisDrawing.GetVariable("DIMSCALE")
  11.       Dim InsPT As Variant
  12.       Dim intOsMode As Integer
  13.       Dim dblRotation As Double
  14.       Dim objBlockRef As AcadBlockReference
  15.       '************** Esc Code *************
  16.       Dim varCancel As Variant
  17.       On Error GoTo Err_Control
  18.       '************** Esc Code *************
  19.       Call LayerSet("3D-EQPM", acRed)
  20.       intOsMode = ThisDrawing.GetVariable("OSMODE")
  21.       ThisDrawing.SetVariable "OSMODE", 32
  22.       InsPT = ThisDrawing.Utility.GetPoint(, "Pick Insertion Point: ")
  23.       ThisDrawing.SetVariable "OSMODE", 512
  24.       dblRotation = ThisDrawing.Utility.GetAngle(InsPT, "Pick Cabinet Side: ")
  25.       Set objBlockRef = ThisDrawing.ModelSpace.InsertBlock(InsPT, Path & "breaker.dwg", 1, 1, 1, dblRotation)
  26.       '************** Esc Code *************
  27. Exit_Here:
  28.       LayerReSet
  29.       ThisDrawing.SetVariable "OSMODE", intOsMode
  30.       ThisDrawing.SetVariable "DIMSCALE", dimsc
  31.       ThisDrawing.SetVariable "INSUNITS", 1
  32.       Exit Function
  33. Err_Control:
  34.       Select Case Err.Number
  35.             Case -2147352567
  36.                   'Debug.Print Err.Number, Err.Description
  37.                   varCancel = ThisDrawing.GetVariable("LASTPROMPT")
  38.                   If InStr(1, varCancel, "*Cancel*")  0 Then
  39.                         If GetAsyncKeyState(VK_ESCAPE) And 8000 > 0 Then
  40.                               Err.Clear
  41.                               Resume Exit_Here
  42.                         ElseIf GetAsyncKeyState(VK_LBUTTON) > 0 Then
  43.                               Err.Clear
  44.                               Resume
  45.                         End If
  46.                   Else
  47.                         If GetAsyncKeyState(VK_SPACE) Then
  48.                               Resume Exit_Here
  49.                         End If
  50.                         'Missed the pick, send them back!
  51.                         Err.Clear
  52.                         Resume
  53.                   End If
  54.             Case Else
  55.                   MsgBox Err.Description
  56.                   Resume Exit_Here
  57.       End Select
  58. End Function
回复

使用道具 举报

116

主题

996

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1466
发表于 2007-3-12 17:32:20 | 显示全部楼层
枚举会以init代码的形式出现吗 我意识到我发布了一个模块作为示例
回复

使用道具 举报

116

主题

996

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1466
发表于 2007-3-12 19:09:52 | 显示全部楼层
本人'等我有时间的时候再看,但是把const设为私有,它应该可以正常工作。
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-3-13 09:30:29 | 显示全部楼层

不完全是 我没有'我不是说你应该完全使用我发布的内容 只是一般形式;这里有一些更适合你特殊需要的东西
  1. Public Enum VirtualKeys
  2.   ESCAPE = &H1B
  3.   LBUTTON = &H1
  4.   SPACE = &H20
  5.   RETURN = &HD
  6.   LEFT = &H25
  7. End Enum
顺便提一下,在我发布的另一个示例中,我没有't显式地为枚举的每个成员分配一个值,因为它在我从中提取的代码中是不相关的 枚举应该在文件范围内(在任何过程之外)
顺便提一下 我认为布莱科是对的 仅仅将公共Const改为私人Const更为方便 对不起,如果我'我把你引向了一场白费力气的追逐。
回复

使用道具 举报

116

主题

996

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1466
发表于 2007-3-13 19:19:08 | 显示全部楼层
你好,大卫,我想你会得到更好的服务;“业务”;思维方式尤其是当您在OOP语言中做更多工作时。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-7 13:06 , Processed in 1.328147 second(s), 60 queries .

© 2020-2025 乐筑天下

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