关于with
vb吧
全部回复
仅看楼主
level 11
我发现with……end with里面只能使用属性,不能使用方法。
不知道我的发现对不对?
专门查看了帮助,也只泛泛而谈,没有提到方法,及没有说可以用,也没有说不能用(也没有说只适用于属性)
2022年05月25日 08点05分 1
level 15
可以用方法啊,示例代码只写了属性赋值,并不意味着不能调用方法
要知道能不能用,自己写个代码测试一下不就行了么
2022年05月25日 08点05分 2
不过,确实有一种情况是不能用的,就是像Print这样的特殊方法
2022年05月25日 08点05分
在picturebox里面试验用line,发生静态错误
2022年05月25日 09点05分
@璐村惂鐢ㄦ埛_0748V5Z馃惥 Line不是方法,是关键字。
2022年05月30日 16点05分
@yjryym 懂了,With块中可以使用方法成员,但不能使用关键字成员
2022年05月31日 02点05分
level 13
可以的,不过有些不支持(需要变动写法),具体得自己一个个尝试
Print "ddd"
With Me
.Caption = "aaa"
.Cls
.Line 0, 0, 0, 100, 100, vbRed
End With
with块我一般都是用在设置结构的各个成员,基本不在with块中调用方法、函数
2022年05月25日 09点05分 3
对不支持的,变动写法……能不给一个具体思路或者指导?谢谢
2022年05月25日 09点05分
@璐村惂鐢ㄦ埛_0748V5Z馃惥 等等,line是去掉括号吗?
2022年05月25日 09点05分
@璐村惂鐢ㄦ埛_0748V5Z馃惥 不是,对象浏览器查找line,Sub Line(Flags As Integer, X1 As Single, Y1 As Single, X2 As Single, Y2 As Single, Color As Long)就是这样的
2022年05月25日 09点05分
@隨風🍁缒夢 VB6有个关键字叫Line,而VB的控件有个方法叫Line,关键字的优先级高于对象成员,所以才有 对象.Line (X1, Y2)-(X2, Y2) 这种写法,Line关键字实际上最终还是调用的对象Line方法,只是VB通过一个语法糖来让你画线的时候更方便。
2022年05月30日 16点05分
level 15
3楼说改变原本的语法格式就可以用,这倒是我没想到的
说一下我个人的猜想:
在对象浏览器中可以看到的(也是自动列表中可见的)方法就是With中还可以用的,看不到的(比如Print)就不行
对于可以看到的方法,对象浏览器中是给出了头部定义的,比如Line是这样的:
Sub Line(Flags As Integer, X1 As Single, Y1 As Single, X2 As Single, Y2 As Single, Color As Long)
所以在With块中,按照这种格式调用Line,也是行得通的;而具体每个参数是什么意思,有些看名称就能理解,有些就需要研究一下了,比如这里的Flags,对应的应该是原本Line里面两个端点前的Step,以及最后控制画矩形的BF,这些应该对应Flags参数当中的4个二进制位,至于到底是不是,是哪几位,就得试验一下了
2022年05月25日 09点05分 4
谢谢指导
2022年05月25日 09点05分
@璐村惂鐢ㄦ埛_0748V5Z馃惥 Flags=&H10(二进制10000),绘制的是矩形边框,&H20是填充,这个分析一下就可以了
2022年05月25日 09点05分
@隨風🍁缒夢 /tb2.bdstatic.com/tb/editor/images/bearchildren/bearchildren_17.gif?t=20140803" >回复 #(reply,tb.1.794d190b.oTqS5_gnTkFf8rM3lYjkLg,隨風🍁缒夢) :
2022年05月26日 00点05分
@隨風🍁缒夢 我之前写的自己实现带PSet、Line、Circle、Scale、Print等关键字操作的对象,里面有枚举对应的Flags值:https://tieba.baidu.com/p/7709442877
2022年05月30日 16点05分
1