vb怎么调用模块
vb吧
全部回复
仅看楼主
level 8
tbzp666 楼主
VB怎么调用类模块、用户控件、属性页?
2023年10月16日 02点10分 1
level 8
tbzp666 楼主

Private Type Student
Name As String * 8
Sex As String * 2
End Type
private 的使用在窗体模块中调用,但在类模块和标准模块中也能用,但这样做有什么用呢?
2023年10月16日 02点10分 2
level 13
这个是私有的,你得先确定在类模块和标准模块中也能用,除了你的VB有问题
调用类模块用new一个对象就可以,用户控件直接拖到窗体上和一般控件一样,属性页是在用户控件里用的(比如控件要加个设置PNG图片的功能,VB默认只支持bmp,就得用属性页来实现,其他属性或可不用属性页)
2023年10月16日 04点10分 3
能举个实例么?
2023年10月16日 06点10分
level 8
tbzp666 楼主
变长字符串存储空间为什么是10字节+字符串长度,有什么说头没有?
2023年10月19日 07点10分 4
level 8
tbzp666 楼主
枚举类型的书写位置在哪里,是在窗体模块?还是标准模块?它与记录类型有什么区别
2023年10月19日 07点10分 5
level 8
tbzp666 楼主
for each……next语句如果用做一般数组和集合,怎么用?能分别举出一个例子吗
2023年10月19日 07点10分 6
level 8
tbzp666 楼主
Set怎么用,它的形式为什么总觉得多种多样
2023年10月19日 07点10分 7
level 12
一,类模块的使用
VB6的类是进程内COM服务器,拥有双接口
1, Iunknown
dim obj as new class1 '声明变量时直接实例化对象
obj.xxx(xxx表示类成员函数) 这样直接调用类中成员函数效率高。
2,IDispatch
dim obj as class1 或且 dim obj as object
set obj = class1 ‘实例化对象
obj.xxx (xxx表示类中成员内部类函数)
这样调用是走的IDispatch接口,内部会通过,Dispatch.GetIDsofName 和 Dispatch.Invoke 分发调用类成员函数,效率较低。
二, Private 修饰符,表示变量,函数,结构体等为模块私有,仅在本模块内有效,所有模块都可以使用Private 修饰符,不仅仅在窗体模块
三,变长字符串存储空间应该只有4字节吧(字符串指针),那来的10字节+长度,
四,枚举类型,跟常量感觉也没什么区别,爱用啥用啥,什么模块内都可以写
五 for each .......next
dim s() as variant,n as variant
s = array(1,2,3,4,5)
for each n in s
msgbox n
next
2023年10月19日 11点10分 8
感谢大哥
2023年10月20日 01点10分
level 15
百度现在这德性,我只能说,呵呵[呵呵]
2023年10月19日 11点10分 9
感谢大哥
2023年10月20日 01点10分
看了你的回复,我也查找了以前贴吧被删原因。晕死,我写的是代码,居然系统说“发布的内容包含违规信息”
2023年10月20日 02点10分
level 8
tbzp666 楼主
为什么有的书上这样写
Dim a(,) '声明一个二维动态数组
是不是由于版本的不同,最新的版本是6.0不可以,早期的版本是严格区分的(一维动态数组和二维动态数组)?
2023年10月20日 03点10分 10
是版本原因,但你正好说反了,早期的6.0版本不可以这样写,新版的.net版本可以
2023年10月20日 11点10分
@初音✨七奈 您懂的好多
2023年10月20日 14点10分
level 8
tbzp666 楼主
当前版本
Visual Basic 16.9/Visual Studio 2019 版本 16.9
早期版本
Visual Basic 16.0/Visual Studio 2019 版本 16.0
Visual Basic 15.5/Visual Studio 2017 版本 15.5
Visual Basic 15.3/Visual Studio 2017 版本 15.3
Visual Basic 15/Visual Studio 2017
Visual Basic/Visual Studio 2015
Visual Basic/Visual Studio 2013
.NET Compiler Platform(“Roslyn”)的技术预览
Visual Basic/Visual Studio 2012
Async 和 await 关键字、迭代器、调用方信息特性
Visual Basic, Visual Studio 2010
自动实现的属性、集合初始值设定项、隐式行继续符、动态、泛型协变/逆变、全局命名空间访问
Visual Basic/Visual Studio 2008
语言集成查询 (LINQ)、XML 文本、本地类型推断、对象初始值设定项、匿名类型、扩展方法、本地 var 类型推断、lambda 表达式、if 运算符、分部方法、可以为 null 的值类型
Visual Basic/Visual Studio 2005
My 类型和帮助程序类型(对应用、计算机、文件系统、网络的访问)
Visual Basic/Visual Studio .NET 2003
移位运算符、循环变量声明
Visual Basic/Visual Studio .NET 2002
Visual Basic.NET 的首次发布
1998-10 Visual Basic 6.0 正式发布
1997-02 Visual Basic 5.0 包含了对用户自建控件的支持,且从这个版本开始 VB 可以支持中文。
1995-08 Visual Basic 4.0 发布了32位和16位的版本。其中包含了对类的支持。
1993-06 Visual Basic 3.0 包含一个数据引擎,可以直接读取 Access 数据库。
1992-11 Visual Basic 2.0 对于上一个版本的界面和速度都有所改善。
1992-09 Visual Basic 1.0 DOS 版本
1991-04 Visual Basic 1.0 Windows 版本 ,VB编程语言正式诞生
功能特点
Visual Basic 16.9
Visual Basic 16.9 允许使用仅限 init 属性。
Visual Basic 16.0
Visual Basic 16.0 侧重于向 .NET Core 提供 Visual Basic 运行时 (microsoft.visualbasic.dll) 的更多功能,这是 Visual Basic 侧重于 .NET Core 的第一个版本。Visual Basic 运行时的许多部分都依赖于 WinForms,它们将添加到 Visual Basic 的更高版本中
2023年10月20日 14点10分 11
level 8
tbzp666 楼主
Dim a%(1 To 10), max%
Randomize
For Each n In a
n = Int(Rnd * 90) + 10
Print n;
Next
Print
max = a(1)
For Each n In a
If CInt(n) > max Then max = CInt(n)
Next
Print max
max结果为什么是0?
n是一个变体类型变量,怎么转化成一个整型数?
2023年10月23日 01点10分 12
level 13
很简单的一个for循环,非要用for each,最后问题一大堆
2023年10月23日 02点10分 13
是赋值时出现了问题吗?因为n是变体型,转化时出现问题了么?
2023年10月23日 02点10分
@tbzp666 for each 的n用作输出可以,但不能赋值(就是对n值的改变,体现不到数组a的每元素中)
2023年10月23日 03点10分
@隨風🍁缒夢 明白了
2023年10月23日 03点10分
@tbzp666 for Each 一般用在类的对象集合中,你如果将a数组定义为Class,然后在类中定义属性或类公有变量。用for each 赋值和输出对象集合中每个对象的类公有变量是可以的。只是为了这个循环动用类,就是打鸟用大炮,太浪费了
2023年10月23日 03点10分
level 8
tbzp666 楼主
究竟怎么来调用类模块和标准模块声明的数据类型(type 和enum)
2023年10月24日 01点10分 14
对于声明,肯定有问题,如果声明为private的,怎么调用
2023年10月24日 01点10分
如果声明为class1,下面怎么调用成员
2023年10月24日 01点10分
类模块中不能用Public声明自定义类型(Type),因此在类模块中的自定义类型无法被其他模块使用
2023年10月24日 12点10分
@初音✨七奈 哪些是私有对象模块。另一类是不是叫公共对象模块(标准模块)
2023年10月25日 02点10分
level 15
就以你的四张图为例吧
用Private的两张图(图三和图四),都是错误的,在一个模块中用Private声明的任何东西都不能在其他模块当中使用;如果用Private声明了某种类型,那么在哪个模块中声明的,就只能在那个模块中使用,比如图三,Student是标准模块的私有类型,就只能在标准模块中使用
用Public的两张图,图一是
正确的
,可以这样声明类型并在其他模块中使用;图二是错误的,不能在类模块中声明Public Type,不过Public Enum在哪里都是可以用的
最后关于枚举类型再说几句:其实枚举类型不是你这么用的,枚举类型的成员不是变量的成员,而是类型的成员,也就是说你这里的 变量.a 是错误的,而写成 xin.a 才是正确的;实际上,通常连这个类型前缀都不用写的,直接用a就行,你记住这样一句话:Enum类型就是一组Long型的常量,也就是说,你这里的a和b就相当于两个用Const定义的常量
那么枚举类型的变量又该怎么用呢?比如可以用枚举类型的成员给变量赋值:
变量 = a
可以用任意整数给枚举类型的变量赋值,就好像它们是Long型的变量一样(其实从本质上说就是):
变量 = 15
也可以用枚举类型的变量或成员给其他类型的变量赋值:
Dim x As Integer
x = b
x = 变量
说到VB内置的枚举类型,其实MsgBox函数的第二个参数以及返回值就是枚举类型的(不是同一个枚举类型),你在代码中可以写vbOKCancel、vbYes之类的东西,这些就是枚举类型的成员;另外,还可以写vbYesNo+vbInformation这样的运算,说明枚举类型的值是可以进行运算的(之前也说过了,枚举类型本质上就是Long类型)
2023年10月25日 12点10分 15
感谢大神,终于弄清楚了。另外,我设的那个变量名不太恰当,实质上枚举类型只能使用常量,不能使用变量。枚举的作用是管理和使用常量。
2023年10月26日 01点10分
vbYesNo这样一类的在教材中叫做内部符号常量,准确叫法是枚举类型常量
2023年10月26日 01点10分
1 2 尾页