乐筑天下

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

功能此!!

[复制链接]

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2008-3-5 06:28:37 | 显示全部楼层 |阅读模式
您好,我有以下代码,我想知道如何将它变成一个函数,并从10个不同的按钮调用它-唯一改变的是块名所在的文本框引用(选中),但这将被放入每个按钮#039;s单击sub。我只想避免每个按钮都包含所有这些代码
  1. Private Sub blockpick1BTN_Click()
  2. FixingsChartFRM.Hide 'Hide the form..
  3. On Error Resume Next
  4. PICK:
  5. ThisDrawing.Utility.GetEntity FixBlock, PickPoint, "Please select a fixing.."
  6. If Err  0 Then
  7.     Err.Clear
  8.     Exit Sub
  9. Else 'Else for error..
  10.     If FixBlock.ObjectName = "AcDbBlockReference" Then 'If block..
  11.         If FixBlock.Name Like "A$C*" Then 'If the block name is "A$C......." (A copied and pasted block)..
  12.             MsgBox "This isn't a true fixing block - It appears to be a copied / pasted block.." & vbCr & "Please pick another instance of it", vbExclamation, "Fixings Chart Creator.."
  13.             GoTo PICK
  14.         Else
  15.             'ENTER ATTRIBUTE CODE HERE GETTING "FIXDESC" STRING..
  16.         End If
  17.     ElseIf FixBlock.ObjectName  "AcDbBlockReference" Then 'If NOT block..
  18.         ThisDrawing.Utility.Prompt "You may only select a block: "
  19.         GoTo PICK
  20.     End If 'End If for objectname..
  21. End If 'End if for error..
  22. PICKED:
  23. fx1descTXT.text = FixBlock.Name & ": " & FixBlock.Handle 'Put the block name in the text box..
  24. FixingsChartFRM.Show 'Show the form..
  25. End Sub

..I'我以前从未做过finctions,当我尝试为此设置一个函数时,我尝试通过简单地输入函数名从每个按钮调用它,但它标记了一个错误
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2008-3-5 09:59:58 | 显示全部楼层
最好向我们展示一下你的功能。
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2008-3-5 12:20:56 | 显示全部楼层
嗨,正如我说的,我'与i&#039一样,m在功能上不热;我以前从未创建过一个,只是不时复制一些表单源,所以请耐心等待,如果我'我的编码不正确:
  1. Public Function GETFIXINGBLOCK(FixBlock As AcadObject, PickPoint As Variant)
  2. On Error Resume Next
  3. PICK:
  4. ThisDrawing.Utility.GetEntity FixBlock, PickPoint, "Please select a fixing.."
  5. If Err  0 Then
  6.     Err.Clear
  7.     Exit Function
  8. Else 'Else for error..
  9.     If FixBlock.ObjectName = "AcDbBlockReference" Then 'If block..
  10.         If FixBlock.Name Like "A$C*" Then 'If the block name is "A$C......." (A copied and pasted block)..
  11.             MsgBox "This isn't a true fixing block - It appears to be a copied / pasted block.." & vbCr & "Please pick another instance of it", vbExclamation, "Fixings Chart Creator.."
  12.             GoTo PICK
  13.         Else
  14.             ' Other code to go here later for getting the block attribute values but for now, just the block name..
  15.             GoTo PICKED
  16.         End If
  17.     ElseIf FixBlock.ObjectName  "AcDbBlockReference" Then 'If NOT block..
  18.         ThisDrawing.Utility.Prompt "You may only select a block: "
  19.         GoTo PICK
  20.     End If 'End If for objectname..
  21. End If 'End if for error..
  22. End Sub

…点击按钮的调用如下所示:
  1. Private Sub blockpick1BTN_Click()
  2.     FixingsChartFRM.Hide 'Hide the form..
  3.     GETFIXINGBLOCK
  4. PICKED:
  5.     fx1descTXT.text = FixBlock.Name & ": " & FixBlock.Handle 'Put the block name in the text box..
  6.     FixingsChartFRM.Show 'Show the form..
  7. End Sub
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2008-3-5 12:57:46 | 显示全部楼层
据我所知,你不't需要函数,您需要一个带有参数的Sub,其中参数是文本框。我使用了您的第一个代码:
  1. Sub ForButton(ByRef TB As TextBox)
  2. FixingsChartFRM.Hide 'Hide the form..
  3. On Error Resume Next
  4. PICK:
  5. Dim FixBlock As AcadEntity
  6. Dim PickPoint As Variant
  7. ThisDrawing.Utility.GetEntity FixBlock, PickPoint, "Please select a fixing.."
  8. If Err  0 Then
  9.     Err.Clear
  10.     Exit Sub
  11. Else 'Else for error..
  12.     If FixBlock.ObjectName = "AcDbBlockReference" Then 'If block..
  13.         If FixBlock.Name Like "A$C*" Then 'If the block name is "A$C......." (A copied and pasted block)..
  14.             MsgBox "This isn't a true fixing block - It appears to be a copied / pasted block.." & vbCr & "Please pick another instance of it", vbExclamation, "Fixings Chart Creator.."
  15.             GoTo PICK
  16.         Else
  17.             'ENTER ATTRIBUTE CODE HERE GETTING "FIXDESC" STRING..
  18.         End If
  19.     ElseIf FixBlock.ObjectName  "AcDbBlockReference" Then 'If NOT block..
  20.         ThisDrawing.Utility.Prompt "You may only select a block: "
  21.         GoTo PICK
  22.     End If 'End If for objectname..
  23. End If 'End if for error..
  24. PICKED:
  25. TB.Text = FixBlock.Name & ": " & FixBlock.Handle 'Put the block name in the text box..
  26. FixingsChartFRM.Show 'Show the form..
  27. End Sub
您可以将此代码放到每个按钮上,仅更改TB参数
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2008-3-5 19:30:38 | 显示全部楼层
Joro说得好,实际上,因为textbox是;形式类你不#039;我也不必通过,它's正在点击
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2008-3-6 04:28:34 | 显示全部楼层
所以,我必须将代码复制到每个按钮点击事件中,只需将TB更改为TB1或TB2等
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2008-3-6 06:57:12 | 显示全部楼层
不,你把这个放在你的一个模块里
然后,对于第一个按钮的点击事件:
  1. Private Sub blockpick1BTN_Click()
  2.      ForButton FixingsChartFRM.TextBox1
  3. Exit Sub
对于第二个按钮(可能其名称为blockpick2BTN),您有:
  1. Private Sub blockpick2BTN_Click()
  2.      ForButton FixingsChartFRM.TextBox2
  3. Exit Sub
等等。。。
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2008-3-6 07:27:48 | 显示全部楼层
好的,现在明白了,它就像一个梦一样工作-不像我昨晚做的那样,那是hella奇怪,哈哈,谢谢Joro
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2008-3-6 08:50:55 | 显示全部楼层
本人'我很高兴#039;这就是你需要的
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-6 06:21 , Processed in 0.589302 second(s), 71 queries .

© 2020-2025 乐筑天下

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