乐筑天下

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

布局和列表框以及其他L字。

[复制链接]

46

主题

118

帖子

23

银币

后起之秀

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

铜币
291
发表于 2008-4-1 07:17:22 | 显示全部楼层 |阅读模式
嗨,
在一个新程序上,我有一个列表框,它由当前绘图的布局填充,该程序的要点是向标题块添加/编辑修订数据...
我运行它以更新当前布局,但现在添加列表框后,我想要的是让用户从列表框中选择所需的布局,所以可能是一个、三个、所有等...
这些是我卡在上面的点点滴滴,所以非常感谢任何帮助:
1:我如何对其进行编码以找出用户选择的布局,然后仅循环这些以更新标题块?
2:我想要一个
Select All
复选框-那么我如何对其进行编程以选择列表框中的所有条目...
3:当表单第一次加载时,我希望当前布局是列表框中唯一选定的条目,同样,如果用户取消选中
Select All
复选框,我希望它只恢复到选定的当前布局...
谢谢...

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

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

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2008-4-1 08:44:24 | 显示全部楼层
列表框因使用起来有点固执而臭名昭着。还行。。不是固执,而是有点不直观。
为了能够在列表框中选择多个项目,请将多选属性设置为frmMultiSelectMulti (1)
要确定选择了哪些项目,您需要遍历列表框并选中每个项目
  1. Private SelectedLayouts() As String
  2. Private Sub ListBox1_Change()
  3.     Dim X As Integer
  4.     ReDim SelectedLayouts(0)
  5. 'loop through the listbox
  6.     For X = 0 To ListBox1.ListCount - 1
  7. 'if an item is selected
  8.         If ListBox1.Selected(X) = True Then
  9. 'then increment our array and add it to the array
  10.             ReDim Preserve SelectedLayouts(UBound(SelectedLayouts) + 1)
  11.             SelectedLayouts(UBound(SelectedLayouts)) = ListBox1.List(X)
  12.         End If
  13.     Next X
  14. End Sub

现在您有一个数组,其中包含所有选定的布局
SelectedLayouts() 变量定义应放置在表单的声明部分中,以便它全局可用于表单的其余部分。
现在,使用复选框选择列表框中的所有项目。
  1. Private Sub CheckBox1_Click()
  2. Dim X As Integer
  3. For X = 0 To ListBox1.ListCount - 1
  4.     ListBox1.Selected(X) = CheckBox1.Value
  5. Next X
  6. End Sub

干杯
回复

使用道具 举报

18

主题

222

帖子

51

银币

后起之秀

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

铜币
260
发表于 2008-4-1 08:51:40 | 显示全部楼层
您应该知道,用于过滤布局的dxf代码410在VBA中不起作用
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2008-4-1 09:10:57 | 显示全部楼层
啊...忘了那个小花絮
回复

使用道具 举报

46

主题

118

帖子

23

银币

后起之秀

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

铜币
291
发表于 2008-4-1 10:10:36 | 显示全部楼层
基思,你是个传奇,你似乎每次都帮我,谢谢。
右手得到了选择所有的东西,现在得到了slected项的数组,但现在从这里,我如何使用此数组遍历布局。我确实有:
  1. Dim Cx as Integer
  2. For Cx = LBound(SelectedLayouts) To UBound(SelectedLayouts) - 1
  3.    ThisDrawing.ActiveLayout = SelectedLayouts(Cx)
  4.    ' blah blah blah code for revising stuff blah blah..
  5. next Cx

显然对于Cx = LBound(SelectedLayouts)到UBound(SelectedLayouts) - 1只是循环遍历字符串值,所以我如何将它们传递给布局。我以为ThisDrawing.ActiveLayout = SelectedLayouts(Cx)行会这样做,但我得到了一个类型不匹配的错误。
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2008-4-1 10:21:18 | 显示全部楼层
好的..几个提示...
除非使用鼠标从屏幕上以图形方式选择对象,或者使用坐标以编程方式选择对象,否则不需要设置ActiveLayout。我怀疑您想以编程方式完成它,并且可以通过选择合适的块来修改属性。
如果您确实需要设置ActiveLayout,您将需要传递布局对象,而不仅仅是名称..为了做到这一点...
  1. ThisDrawing.ActiveLayout = ThisDrawing.Layouts.Item(SelectedLayouts(Cx))

现在,假设您将在每个布局上选择标题栏。为此,您只需获取图形中所有标题栏的集合,并根据它们所在的布局对它们进行过滤。正如亨迪提到的,这有点棘手..在VBA没有用于布局的过滤器...因此,您必须实际检查已选择的每个块参照的布局特性。
回复

使用道具 举报

46

主题

118

帖子

23

银币

后起之秀

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

铜币
291
发表于 2008-4-1 10:39:01 | 显示全部楼层
我在 ThisDrawing.ActiveLayout = ThisDrawing.Layouts.Item(SelectedLayouts(Cx))  行上收到一个
Key Not found
错误。
是的,如果可以的话,我确实想在不循环布局的情况下访问标题块,并且不会太难。到目前为止,我通过物理循环遍历每个布局来更新这些块上的标题块和属性的所有内容,但有时由于再生时间,这可能非常耗时。如果我无法在VBA中过滤布局,该怎么办?
回复

使用道具 举报

18

主题

222

帖子

51

银币

后起之秀

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

铜币
260
发表于 2008-4-1 10:50:05 | 显示全部楼层
检查局部变量窗口中所选布局(Cx)的值...你绝对使它全球化,不是吗?
你可以在vba中过滤布局,你不能使用410 dxf代码,这使得它更加复杂
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2008-4-1 10:58:14 | 显示全部楼层
问题在于,在我提供的代码中(以及您随后使用的代码中),我用0初始化了SelectedLayouts,然后从0开始递增。我这样做的原因是因为计数不是基于零的。也就是说,布局#3=SelectedLayouts(3)…您应该从LBound(SelectedLayouts)+1开始循环,并在UBound(SelectedLayoutes)结束循环…或者,您可以修改我提供的代码,开始存储在索引0而不是索引1
回复

使用道具 举报

46

主题

118

帖子

23

银币

后起之秀

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

铜币
291
发表于 2008-4-1 12:16:12 | 显示全部楼层
Brilliant Keith,非常感谢现在几乎在那里,只需要整理出在列表框中突出显示当前布局(程序在运行时进入纸质空间) - 我该如何实现?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-4 23:47 , Processed in 0.622453 second(s), 72 queries .

© 2020-2025 乐筑天下

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