VB6.0学习笔记

墨明
2021-08-05 / 0 评论 / 5 阅读 / 正在检测是否收录...

label控件的精妙应用

Caption属性:通用的标题属性,更改上面的文字

Backcolor属性:控件的背景颜色

Forecolor属性:前景色,其实就是文字的颜色

Font属性:文字的大小、字体、下划线等

Autosize属性:调节控件适应文字的大小

Alignment属性:调节控件内的文字适应控件大小的水平方向的对其属性

Visible属性:可见性,true可见,false不可见

如何通过代码去修改label控件的文字呢?

Labell.Caption=“你很帅,我欣赏你!“

文本要用””包围

=专业叫法:赋值,举例:把右侧的值扔给左侧的变量

Fom窗体常规属性介绍

Fom窗体常规属性介绍

Controlbox窗体的右上角几个按钮的显隐控制

Autoredraw控制不再闪烁的问题

Borderstyle,如果none,会使得窗体周围的边框全部隐藏,包括按钮

Picture属性,可以加入窗体背景图片, gi的图片可以在VB6中显示成透明,其它的图片都不会透明

Startuppostion:精确调节Fom窗体位置调节

如何才能漂亮的控制窗体点击事件?

可以采用label控件的backstvle选择0,这样可以使得labe控件透明

如何让窗体出现在任务栏?

Showintaskbar属性为true,

常用事件

Click单击事件

Dblclick (double click)双击

‘代表注释

MouseMove鼠标移动

MouseDown鼠标按下

MouseUp鼠标弹起

每一个控件对象有共有的事件,但也有自己特有的一些 事件

form对象

KeyDown键盘按下,参数是KeyCode,还能同时判断是否有安装另一个快捷键

KeyPress键盘按下,参数是KeyAscii,特性是比如当输入拼音时,确定某个字之后才执行 Keyup 键盘弹起 Form_Load 窗体加载事件,print前要先show,除非设置autoredraw为true

string变量类型

String类型:字符串类型,用来存储文本

它的内容的表示写在双引号中间””

编程中所有符号都要用英文状态下的半角的符号

声明变量:

Dim txt as string 内存中开辟了一个空间

赋值变量:

Txt=“编程创造城市”

字符串的连接方式,用符号&且这个符号两边都有空格

代码提示快捷键Ctrl+J

Exit sub可以立刻跳出当前sub

Vb中会忽视空行,空行是为了增加代码可读性

使用len函数来获取字符串长度,可以获取字符串中的字符数量

字节Byte

lenB函数用来获取字节数

Boolean布尔类型

这个类型的值只有true(真)或者false(假)

逻辑表达式的结果判断

声明布尔类型变量

Dim flag as Boolean

默认声明后,布尔类型变量默认值为false

逻辑表达式中的布尔型

1>=2 假false 1<2 真true

And和or的应用

And 与

And的应用特点:只要出现一个为假false,结果就为假false

Or 或

Or的应用特点:只要出现一个为真true,结果就为真true

多个and和or运算时,按照优先级为前提,然后我们依次按照从左到右顺序去进行判断

1、数学中的==()==代表优先运算

2、and和or运算优先级是同级的,同级的情况下我们按照==从左到右的顺序==

3、当用到or时候,如果==or的前面==已经是true,那么or的后面不用再运算,结果为true

4、当用到and时候,如果==and的前面==已经是false,那么and的后面不用再运算,结果为false

Print True Or False And False 输出True

Print (True Or False) And False 输出False

Print True Or (False And False) 输出True
1和3一样,说明两个运算的顺序是一样的,3先算的括号(后面的),显然1先算的后面的(And)。
说明And的优先级是大于Or的。

### Timer控件

Timer控件:动画的实现,使得我们程序界面上,静态的东西变成动态

Timer控件重要属性:

1、enabled属性:是否可用

2、interval属性:每隔多少时间执行依次timer事件的代码。时间单位:毫秒。1秒=1000毫秒

Timer1_Timer()时间中具体这个时钟控件要执行什么代码

实现一个随机抽奖动态实现。

时钟控件,在程序启动后是看不到的

if条件判断语句案例实战

1、登录框:QQ登录、手机APP登录、网页登录等等

2、各种判断:判断年龄、判断年月

3、存在多个条件是否:结合and和or

if语法结构

第一种:if 判断条件 then 语句 只有一句时候,可以写在一行上,可以没有end if

第二种:

if条件判断 then

​ 条件为真执行的多行代码

end if

第三种

if条件判断 then

​ 条件为真执行的多行代码

else

​ 条件为假执行的多行代码

end if

条件判断:利用一些比较符号> < = >= <= <>(不等于)

val(文本字符串)函数:把文本字符串格式化成数值

val("123") 就是数值123

val("123aaa") 就是数值123,忽略字母

If Val(Label2.Caption) > 3 Then Print "八大于三"

If Val(Label2.Caption) > 5 Then
    Print "八大于五"
End If

If Val(Label2.Caption) < 0 Then
    Print Label2.Caption & "是负数"
Else

    Print Label2.Caption & "是非负数"
End If

使用inputbox来代替输入

简略应用

inputbox(文章说明) ——》这个整体代表一个字符串string类型

inputbox(文章说明) 你输入什么就返回一个什么字符串

Private Sub Label1_Click()
Dim pass As String
pass = InputBox("请输入密码")
If pass = "abc" Then Form2.Show
End Sub

Textbox控件助力实现人机交互

Textbox文本框:用于输入

有什么用:

软件的使用者要一些输入到软件中可以实现一个简单的人机交互

比较label控件,文本录入在caption

Textbox文本录入在text属性

Passwordchar属性用来隐藏我们的密码,它是用一个字符来代替我们的密码。

VB中MouseIcon属性设置自定义鼠标图标,MousePointer中设置为99-Custom

简易版QQ登录

多窗口界面用form名称.show 来显示另一个窗体

使用Unload form窗体名称来从内存中释放掉所占空间

模仿登录时候出现的进度条

知识点补充(视频见下次课frame控件):设置多行文本的属性控制

1、MultiLine属性设置为true 意思为可以多行显示

2、ScrolLBars属性设置为both 意思为显示横竖滚动条

command按钮控件

修改按钮上面的文字:Caption属性

按钮是否可用(是否灰掉):Enabled属性

style属性:改为graphical,这样就可以使用picture属性,以及==按钮的背景颜色==

VB按钮如何设置颜色和按钮文字设置颜色?

首先command的style要设为1,否则无法改变,然后在backcolor设置颜色,按钮的字体颜色不能改。如果想改字体颜色,简单点可以用image做按钮。

len(文本字符串)函数:就是用来获取并返回字符串的字符长度

mid()函数:字符串截取函数

mid(字符串,开始截取的位置,截取的长度)

例:

字符串 s=我爱祖国大好河山!

Mid(s,3,2) 结果为:祖国

cls清屏,清除的是print出来的东西

通用中定义变量i Dim i as Integer

Exit sub执行后代码直接跳到end sub,忽视了exit sub之后的代码

Tab键:缩进

案例:控制文字输出

frame控件分组制作色板工具

基本作用:把一些控件集合到一组当中去

borderstyle属性设置是否显示边框

集合到一起的技巧,先把控件==剪切==,然后,把鼠标放入frame控件中,再右键==粘贴==!!!

注:如果直接拖动到frame控件中不可以变成一个集合

image图片控件

Picture属性用来加载图片

Stretch图片是否自适应

案例:实现图片的交换

方式1:引入第三方控件暂存

Visible属性:是否显示控件

方式2:使用loadpicture函数来动态加载图片

App.path这个是系统内置工程所在位置路径的系统变量

在通用中声明的变量叫做全局变量,这个变量在这个form窗体中,从内存中释放掉后才会消亡。默认变量为0

Dim n as Integer

shape控件

Shape意思为形状

1、形状有哪些?

默认为矩形

2、形状对应的数值是哪些?范围?0-5

3、它有哪些事件?没有

属性栏中,Shape属性可以改变形状

修改为实心 BackStyle属性 1-Opaque

left和top都是距离窗体的内边框的距离

案例:小球运动实验(小球来回运动)

1、小球向右运动,右侧的边碰到窗体的右侧内边框

小球的右侧=小球的左侧+小球的宽度

窗体的右侧=scalewidth内部宽度

Dim dirct as integer '声明后,默认为0,那么0代表向右,1代表向左

2、小球何时改变方向向右运动?小球的右侧>=scalewidth

3、小球何时改变方向向做运动?小球的左侧<=0

数组活学活用

什么是数组?

变量:可变的量。 integer/long/double string boolean

数组:一组相同类型的变量。

什么是索引?

索引:从0开始的。实际就是表示一组数据中的第几个。

数组的索引最小是几?最大是几?

VB数组中索引的最大的值就是声明数组时候的最大数。有python不同,同时包含第一个和最后一个。最小为0

数组如何声明?

变量的声明:Dim num as integer

数组的声明:Dim num(4) as integer 相当于同时声明了5个integer类型的变量,分别为num(0)、num(1)、num(2)、num(3)和num(4)

数组如何赋值?

数组中的赋值:num(0)=123 num(1)=456

数组如何取值?

获取数组中的值:比如要获取num数组中的第二个值就直接写成num(1)

什么是控件数组?

一组相同类型的数组。

数组越界:超出数组表示的范围

'数组的声明
Dim num(4) as Integer
'数组的赋值
num(0)=123
num(1)=234
num(2)=345
num(3)=456
num(4)=567
'数组值的获取并输出
print num(0)
'数学运算
print num(1)+num(2)
'初始化声明
Dim s=new String(){} 

不显示结果 AutoRedraw设置为True或加show

VB里面有一个控件位置锁定(控件不能移动)

解除方法:在窗体设计界面,在窗体的==空白处==右击菜单,看到Lock Controls(锁定控件,有一个蓝色锁图标)菜单项,取消选中即可

for循环的经典运用

for 初始化变量i to 变量i的终值[step 1]

​ 循环条件需要的运行代码

next 变量i

举例:(不定义变量也可以,规范加一下) next i也建议不要省略

step 1建议不要省略

step含义:步长。经过依次循环后使得初始化变量i增加一个相应的值

step可以为正,也可以为负(减法) step 2 加2

Dim i as integer  '声明变量i

for i=0 to 10 step 1

'需要执行的代码

next i

不显示结果 AutoRedraw设置为True或加show

这个循环如何运作?内部机理

初始化变量i的值去跟变量i的终值进行比较

第1次循环 i=0,终值=10,比较0<=10吗?结果为true,运行内部代码

变量i=变量i+1,结果变量i=1

第2次循环 i=1,终值=10,比较1<=10吗?结果为true,运行内部代码

变量i=变量i+1,结果变量i=2

第11次循环 i=10,终值=10,比较10<=10吗?结果为true,运行内部代码

变量i=变量i+1,结果变量i=11

第12次循环 i=11,终值=10,比较11<=10吗?结果为false,不执行此次循环内部代码,跳出循环执行next之后的代码

冒泡排序算法精讲

算法主要有:冒泡排序法、选择排序法、折半查找法、快速排序法、穷举法等

Variant数据类型

Variant是一种特殊的数据类型,除了定长String数据及用户自定义类型外,可以包含任何种类的数据。

1、声明

Dim n 如果声明的类型没有明确写明,那么默认表示为Variant类型

或Dim n as variant

2、初始化

N=array(4,7,2,5,77,43,33,88) 一次性对数据进行初始化

Ubound函数 上边界的位置

LBound函数 下边界的位置

求数组长度?

数组n的长度=Ubound(n)-Lbound(n)+1

这种算法的好处:可以动态计算数组的长度

案例:冒泡排序算法

show

Dim n as Variant
n=array(4,7,2,5,77,43,33,88)

Dim length as Integer
length=Ubound(n)-LBound(n)+1
Dim i as Integer
Dim s as String
for i=0 to length-1 step 1
    s=s & n(i) & " "
next i
print "输出原数据" & s

'冒泡排序法,从小到大排序
Dim j as Integer

'需要优化冒泡排序法,优化原则就是把已经确定的数值不进行比较
Dim m AS Integer
m=length-2

'第一个for循环表示一共要比较几趟
for i=1 to length-1 step 1
    for j=0 to m step 1
        '数值交换
        if n(j)>n(j+1) then
        dim t As Integer
        t=n(j)
        n(j)=n(j+1)
        n(j+1)=t
        end if
    next j
'每一趟比较之后会出现一个最大值放在数组的最后面
'因此,下一趟的比较不再需要与最后的数值去比较
    m=m-1
next i

'输出排序后的数组n
s=""
for i=0 to length-1 step 1
    s=s & n(i) & " "
next i

print "排序后数据" & s

数据:4,7,2,5,77,43,33,88

从小到大 人工排序

第一趟:

第1次 4与7比较 结果4,7,2,5,77,43,33,88

第2次 7与2比较 结果4,2,7,5,77,43,33,88

第3次 7与5比较 结果4,2,5,7,77,43,33,88

第4次 7与77比较 结果4,2,5,7,77,43,33,88

第5次 77与43比较 结果4,2,5,7,43,77,33,88

第6次 77与33比较 结果4,2,5,7,43,33,77,88

第7次 77与88比较 结果4,2,5,7,43,33,77,88

所以结论:第一趟比较了7次,筛选出了最大数值,放在最后面

第二趟:

第1次 4与2比较 结果2,4,5,7,43,33,77,88

第2次 4与5比较 结果2,4,5,7,43,33,77,88

第3次 5与7比较 结果2,4,5,7,43,33,77,88

第4次 7与43比较 结果2,4,5,7,43,33,77,88

第5次 43与33比较 结果2,4,5,7,33,43,77,88

第6次 43与77比较 结果2,4,5,7,33,43,77,88

所以结论:第二趟比较了6次,筛选出了第2大数值,放在倒数第二的位置

第七趟:出来从小到大的顺序

总结:每一趟挑出最大值放在最后,类似于一次冒出一个泡

总结

1、掌握冒泡排序法原理

2、优化冒泡排序法的算法,使得运行效率更高

3、动态获取数组的长度

4、数组的初始化,利用Variant数据类型以及array函数

数值分解算法技巧

一个三位整数 567 分解后分别要获取百位数5,十位数6,个位数7

取整符号:向下取整,相当于int函数

数学除法:/数学中的除以,结果会产生小数

取余符号:mod取余 例: 12 mod 10 结果为2

求百位数的数字=567100=5

求十位数的数字=(567-5×100)10=6

求个位数的数字=567-5×100-6×10=7

使用mod求个位数=567 mod 5×100 +6×10 =7

注: *用 ×代替

引入类型符号

Integer 可以用%

String 可以用$

声明的方式 Dim n% Dim s$

使用这种方式声明变量,可以连续一次性声明

例:Dim n1%, n2%, n3%

listbox控件使用-求最值问题解法

1、添加一项 additem

2、移除一项removeitem

3、获取一项list(索引) 索引从0开始

4、获取当前选中的索引 Listindex

5、获取一共有多少项使用 ListCount

MsgBox 信息提示函数,用来提醒我们当前的指定的信息

最基本的使用方法 msgbox "字符串"

案例:录入数据管理

Dim i as Integer

Dim max as Integer

Dim min as Integer

max=val(list1.list(0))

min=val(list1.list(0))

for i=1 to List1.ListCount-1  step 1

'求最大值

if val(list1.list(i))>max then max=val(list1.list(i))

'求最小值

if val(list1.list(i))<min then min=val(list1.list(i))

next i

label3.caption=max

label5.caption=min

求最值的逻辑分析

1、默认声明最大值和最小值都假设为第一项

2、循环遍历数组

3、判断遍历(循环到下一次)到的当前项是否大于默认的最大值,如果是,那就说明当前项为需要找的最大值,一直继续下一次的遍历,继续判断是否是最大值,直到遍历完成,找到需要找的最大值。

如果找最小值,过程是类似的,只不过判断的时候,判断比默认的最小值还小的值是否存在。

4、把找到的最值输出

使用穷举法求素数

穷举法(枚举法)

特点:

1、一般需要确定一个穷举范围

2、每个可能的值去判断是否符合我们需要的条件

穷举法求素数

1、在一个范围内先取一个数

2、将取到的数,对这个数内,从大于1的整数开始到这个数本身,依次穷举

3、把符合条件的拿下(大于等于2且小于这个数本身,这中间无法被整除的数)。如果能被这个范围内的数整除(余数为0),那么它就不是素数。

Dim n as Long

n= val(Text1.text)

Dim i%, j%

for i=2 to n step 1   '穷举所有范围的数

Dim flag as Boolean  '默认Boolean值flag为false

flag=True   '默认为素数

for j=2 to i-1 step 1  '对每个数进行穷举判断

if i mod j=0 then 

flag=false   '不是素数
Exit for

end if

next j

if flag then Text2.Text=Text2.Text & i & ","

Next i

选择排序法

选择排序法:在冒泡排序法的基础上的一个升级。它没有在每一趟的比较中将值进行交换,而是一趟只交换一次值。每一趟比较出来,我们筛选出最小(大)值的索引,然后每一趟中,根据这个索引去进行值的交换。

每次对数据的比较过程中,筛选出最小(大)的按个值的索引,然后再交换。

选择排序法的思维逻辑是是什么?

1、遍历所有的数值

2、将每个数值与其它数值进行比较,筛选出最小(大)的值的索引

3、根据筛选出来的索引进行值的交换

4、对所有值采用以上方法进行,直达比完所有的值。

案例:

利用控件数组textbox来达到输入5个值的目的,然后再textbox中直接进行排序。

Dim i%, j%
for i=0 to 3 step 1   '代表有几趟比较,0放在第一个位置,…,3放在第4个位置,最后一个数值自然在最后一个位置
    'Dim m%
    'm=val(text1(i).text)
    Dim mindex%
    mindex=i

    for j=i+1 to 4 step 1  '所有值与第一个值m比较  j=0就是自己与自己比
        if val(text1(mindex).text)>val(text1(j).text) then
        mindex=j
        'm=val(text1(j).text)
        end if
    next j

    Dim t%
    t=val(Text1(i).Text)
    Text1(i).Text=val(Text1(mindex).Text)
    Text1(mindex).Text=t
next i

1、掌握选择排序法的原理:关键是记录最小值的索引

2、每一轮比较的时候,只能与后面的数值去比较,因为我们已经把最小的数值放在最前面。

3、掌握调试

选择结构select case

select case变量

​ case 条件表达式1

​ 符合条件表达式1的结果

​ case 条件表达式2

​ 符合条件表达式2的结果

​ case 条件表达式n

​ 符合条件表达式n的结果

​ case else '可以没有这项

​ 符合条件表达式else的结果

end select

为什么要引入select case

1、为了程序执行效率问题

​ 当条件较少的时候,使用if语句,只有两个分支

​ 当条件较多的时候,使用select case语句,多个分支

2、为了能够语句结构更为清晰

案例:成绩统计,优秀(>=90)有几个,合格(>=60 & <90)有几个,不合格(<60)有几个?

If Val(Text1.Text) <= 100 And Val(Text1.Text) >= 0 Then
    List1.AddItem Val(Text1.Text)
End If

Label3.Caption = ""
Label5.Caption = ""
Label7.Caption = ""
Dim i%

For i = 0 To List1.ListCount - 1 Step 1
    Select Case Val(List1.List(i))
        Case 90 To 100
           Label3.Caption = Val(Label3.Caption) + 1
        Case 60 To 89
           Label5.Caption = Val(Label5.Caption) + 1
        Case 0 To 59
           Label7.Caption = Val(Label7.Caption) + 1
    End Select
Next i

select case中的条件表达式如何写?

1、使用to关键字,两边的数值范围是包含的

2、使用is关键字,必须要搭配> < >= <> <=符号来写表达式

字符串用is 例:case Is = "abc" msgbox "不要输错"

各种分支语句的课题小结

if 条件1 then

​ '执行代码

elseif 条件2 then

​ '执行代码

elseif 条件3 then

​ '执行代码

else

​ '执行代码

end if

为什么要引入elseif语句

所有的if语句都是必须要进行判断的。而elseif是指一旦满足一个条件之后,将不再判断后面的条件。使得elseif语句的执行效率要高于if语句。

if语句与elseif语句的重要区别?

  • if语句条件判断机制:有几个if就判断几次
  • elseif语句判断机制:至少判断1次

elect case语句的引入是为了当条件超多的时候使用。

select case 变量

​ case 条件表达式/值

​ 执行代码

​ case 条件表达式/值

​ 执行代码

​ case else

​ 执行代码

end select

​ 执行代码

其中条件表达式/值如何写?

1、直接写值 "a" "bb" 90

2、使用==Is关键词==,必须要搭配比较符号> < >= <> <=

3、使用==to关键词==,注意to的两边的值是包含的

4、使用符号逗号(,)可以将多个case的条件进行合并

错误写法:N>10 and n<89 在vb6.0中的case写法是==错误==的!

5、注意所有的case中表示的值都必须是同一个类型

6、select case语句类似于elseif语句

文件读写

补充循环语句

do until 条件表达式的值类型

​ 符合条件要执行的代码

loop

Do开始做事情 until(直到)满足什么条件就不再执行代码了,loop一次循环结束

Dim i%
i=1
DO until i=11
    print i
    i=i+1
loop

文件读写语法格式 通用语法格式

Open文件路径 for 打开方式 as #文件号

这里就可以开始读写文件中的内容了。

Close #文件号

在写入的时候,如果原来不存在这个文件名称的话,那么会自动创建。

打开方式

  • Append追加写入,在原来的基础上,在最后的位置加入新的东西
  • Input读取
  • Output写入,覆盖性的写入

写入print文件号,写入内容

读取line input #1,读到一个变量中

注意:文件的读写路径一般要采用app.path就是指程序的相对路径

绝对路径:C:qikaile1.txt 往往喜欢用app.path就代表项目工程文件所在的文件夹。

相对路径:

假设文件1的路径是C:qikaile1.txt

文件2的路径为C:qikaile2.txt

如果当前在C:qikaile下面,那么文件1相对于文件2的路径。../2.txt

EOF函数 理解 end of file文件的末尾

参数就是文件号

文件写入

追加写入

Open App.Path & "/1.txt" For Append As #1
    Print #1, Text1.Text
Close #1

覆盖写入

Open App.Path & "/1.txt" For Output As #1
    Print #1, Text1.Text
Close #1

读取文件

只读取一行

List1.Clear
Open App.Path & "/1.txt" For Input As #1
    Dim t$
    Line Input #1,t
    List1.AddItem t
Close #1

读取整个文件

List1.Clear
Open App.Path & "/1.txt" For Input As #1
Do Until EOF(1)
    Dim t$
    Line Input #1, t
    List1.AddItem t
Loop
Close #1

补充内容

clear方法用来清空

ListBox清空 List1.clear

累加与累乘案例分析

累:积累 加:加法 乘:乘法

例题:输入一个值$x$,$1≤x≤100$之间的整数

求$$
e^=1+frac{1 !}+frac{x^{2}}{2 !}+frac{x^{3}}{3 !}+cdots+frac{x^}{x !}

$$ 1、根据输入值$x$​来决定个数,有多少个就有多少次循环 2、使用for循环计算分子部分 3、使用for循环计算分母部分 4、将分子部分/分母部分 5、将每一个计算结果加起来 补充数据类型 浮点型数据: single单精度浮点型 double双精度浮点型,这是数值类型中表示范围最大的一个数据类型 补充CHR函数 chr函数ascii码转换成对应的字符 Chr(实际的Ascii码值) 补充关键词 Not 取反 Exit sub相当于直接退出sub,不再执行下面的代码 ### 字符文本处理课题总结 VB6.0中可以都认为是字符串文本 从根本上理解字符串包含字符 > chr将ascii码值对应的字符/asc将字符转ascii码 > > mid任意位置截取字符串/left从左边开始截取字符串/right从右边开始截取字符串 > > len获取字符串中字符的个数,字符长度 > > ucase将字母转为大写 > > lcase将字母转为小写 > > split将字符串按照指定方式分割后返回一个数组 > > join将数组转为字符串 > > instr从字符左侧查找指定的字符串是否存在/instrRev从字符右侧查找指定的字符串是否存在 > > instrB获取字符串的字节数 > > trim去除字符串两边的空格/ltrim去除字符串左边的空格/rtrim去除字符串右边的空格 > > str将数值类型转为字符串/cstr任意类型都可以转为字符串 如何才能分多行写呢? 使用下划线符号_

Dim n() as Variant
n=array(11,"22","aa",44,55,66)
print Join(n,"|")

可以自定义 以|为分割符 结果为11|22|aa|44|55|66

Dim s$
s="abcdefg123456"
print UCase(s)

文本文件修改密码知识点补充

1、思维逻辑:实际上是修改其中的某一行

2、按行读取

3、将每读取到的一行文本放置到一个临时变量t中,将每一个t连接到一个总的文本变量s中

4、如果发现读取到的这一行需要修改,那么修改后再连接到s中

5、把s重新覆盖性写入到ini(txt)文本文件中

sub过程与function自定义函数的异同

sub一般用在事件过程中,执行过程中的代码,它没有返回值。

自定义sub的格式

1、没有参数的定义

sub 过程名称()

end sub

2、带参数的定义

sub 过程名称(形式参数1 as 类型1,形式参数2 as 类型2,…)

end sub

调用方法:call 过程名称 或 call过程名称(实际参数1,实际参数2,…)

格式1:没有参数,没有返回值写法

function函数名称()

end function

格式2:带参数,无返回值写法

function函数名称(参数1 as 类型1,参数2 as 类型2,…)

end function

格式3:参数可有可无,有返回值写法

function函数名称(参数1 as 类型1,参数2 as 类型2,…) as 返回值的类型

​ 函数名称=值

end function

  1. sub与function相同点:在没有返回值之后,调用方式相同
  2. sub与function不同点:function有返回值,而sub没有

日期时间类型

日期时间类型有哪些关键字?怎么用?

Date日期类型

Time时间

Year年份

Month月份

Day一个月中的哪一天

Hour小时

Minute分钟

Second秒

Weekday返回一周中的第几天

cdate字符串类型转换为日期时间类型

Dateadd日期时间的增加/减少函数

Datediff求两个日期时间之间的差值(求差几秒/分钟/小时…)

日期的声明与赋值方式

Dim d1 as date '声明一个日期时间类型

d1=#2013-01-01 12:13:14# '第一种赋值方式

d1=cdate("2013-01-01 12:13:14") '第二种赋值方式

如何求当前日期和时间?

Date & " " & time 相当于 Now ,都表示当前日期时间,

格式为 2013-01-01 12:13:14

interval字符串表达式,是所要加上去的时间间隔的单位

参数说明:

interval参数设定值说明

yyyy年

q季度

m月

y一年的日数

d日

w一周的日数

ww周

h小时

n分钟

s秒

例:

Dim d1 As Date     '声明一个日期时间类型
d1 = #1/1/2013 12:13:14 PM#     '第一种赋值方式
Dim d2 As Date     '声明一个日期时间类型
d2 = CDate("2020-07-31 11:27:56")      '第二种赋值方式
Text5.Text = DateDiff("s", d1, d2) '二者时间差秒(s)

除了秒,其他的都有取整

dim s as double
s=datediff("s",now,cdate(label4.caption))
dim d as double
dim h as double
dim n as double
dim f as double
d=s\86400  '求多少天
h=(s-d*86400)\3600  '求多少小时
n=(s-d*86400-h*3600)\60   '求多少分钟
f=s-d*86400-h*3600-n*60   '求多少秒

统计与分离字符串文本中的数字字母等

案例:统计输入框中一共有多少个数字,多少个小写字母,多少个大写字母,其它有多少,并分别显示出来!

根据KeyAscii判断

递归算法

举例:输出1-100之间的所有自然数

1、for循环

Private Sub Command1_Click()
Dim i As Integer
For i = 1 To 100 Step 1
    Text1.Text = Text1.Text & i & ","
Next i

End Sub

2、do until…loop

Private Sub Command2_Click()
Dim i As Integer
Do Until i = 100
    i = i + 1
    Text1.Text = Text1.Text & i & ","
Loop

End Sub

3、递归方式

原理:在一个function/sub中,自己调用自己

注意点:递归算法中必须有退出自身调用自身的循环条件

Dim a As Integer    'a全局变量  Dim a%


Private Sub Command3_Click()
If a < 100 Then
    a = a + 1
    Text1.Text = Text1.Text & a & ","
    Call Command3_Click
End If

End Sub

picturebox控件

picturebox控件作用:用来存放文字、图片、控件等

picturebox控件与image控件区别?

  • image控件只能存放图片,picturebox控件可以存放文字、图片、控件等
  • 都存放图片时,image控件的图片可以自适应大小,而picturebox控件默认不行
  • image控件效率高,功能单一。而picturebox控件恰好相反(功能越强大,效率越低。)

共同点:都使用picture属性来加载图片

如何输入文字到picturebox控件上

控件名称.print 字符串 例:picture1.print text1.text

如何调节picturebox控件中文字大小颜色?

1、使用界面属性的控件属性进行调节

2、与form窗体的设置一样,都可以使用代码进行设置后改变

picture1.forecolor= vbred

RGB颜色设置 例:Picture1.ForeColor = RGB(255, 195, 51)

案例:文字每两行变一个颜色

mod取余运算符 5 mod 2 结果为1 2 mod 5 结果为2

单选按钮optionbutton以及多选框checkbox

  • 单选框:一组同一类型的选项中只能选择一种。
  • 多选框:一组选项中可以选择多项

同一类型的控件,可以使用控件数组

学会使用控件数组的事件,参数 index as integer 表示第几个控件

举例使用:

text1.fontname=option1(index).caption 字体改变

如何解决单选框option两组数据却只能显示一个的问题?

使用frame控件解决

option的value属性true代表选中,false代表没选中

checkbox的value属性 0-代表没选中 1-代表选中 2-代表选中且不能修改

combobox下拉框

下拉框:可以存什么? 存省市 存男女性别

如何输入到下拉框?

使用list属性

Ctrl+enter可以连续输入各个项

backspace返回键可以去掉上一项

默认值:在text属性中

既可以选择,也可以自己输入,最后通过combo的text属性获取当前值

例:combo1.text

如何使其只能选择下拉框内容,不能自己输入?

style属性 2

0-代表:既可以输入,也可以自己选择

1-代表:只能输入,没有下拉

2-代表:只能选择(下拉)

sort属性:将list中的内容自动通过拼音首字母去排序

使用代码动态添加:Additem方式可以动态的添加

案例:

1、性别

2、城市输入

如何使用滚动条

滚动条分类:横向滚动条(Hscroll)和纵向滚动条(Vscroll)

min属性滚动条的最小值设置

max属性滚动条的最大值设置

value值代表滚动条当前值

label3.fontsize=HScroll1.value

scroll事件:当我们鼠标点拉滚动条的时候触发

change事件:当滚动条的值发生变化时候执行

案例:

动态添加控件数组

同一个类型控件的一组控件,这组控件的名称相同,但是index索引不同

可以随着数据的变化,动态增加或减少相应的控件数量,使软件的使用扩展性得到大幅度提升。

使用关键字load来动态添加控件数组

unload移除控件数组

案例:模拟超市储物柜的数量

label控件如何改变为控件数组?

将属性栏中的index改为从0开始的索引数字

默认导入的新控件被隐藏。label.visible=true

文本转语音

语音原理与实现?

使用文字转语音,术语上TTS,实际是利用微软windows系统开发的一个插件,调用这个插件的功能。

案例:开发语音闹钟

  • 参数1:输入文本
  • 参数2:定时

语音如何创建?

'语音设置
        Dim o As Object
        Set o = CreateObject("sapi.spvoice") '返回实例对象,相当于一个人,可以讲话了
        o.speak (Text1.Text)

为什么是调用sapi.spvoice?

是一个COM对象

COM对象有哪些?使用注册表可以查看,运行输入regedit

计算机HKEY_CLASSES_ROOTSAPI.SpVoice

说明文档链接

这个系统函数用来创建COM对象实例,创建的对象我们需要使用Set关键字来设置,创建出来的实例对象默认不会被回收。

使用New关键字创建出来的对象,使用完成后会被系统自动回收

toolbar控件与imagelist控件

案例:制作自己的记事本

toolbar控件主要用于工具条的功能项

imagelist控件主要用来提供一组图片,在这里,我们为toolbar控件提供图片

需要导入组件Microsoft Windows Common Controls 6.0 (SP6)

开发自己的打字游戏

案例:

1、练习键盘

2、目标:让文字从界面上方飘下来,按下键盘就可以打中相应字母,重新再生成一个新的字母。

游戏分析:

1、文字飘下来:时钟控件

2、多个文字飘下来,简单的方法就是拖入3个label控件即可,如果多个的话,可以采用控件数组形式,load关键字动态添加

3、通过键盘的按键事件来监控键盘

4、得分:打中一个的一分

label 云生博客

shell "explorer https://www.qikaile.online"

总结:

1、掌握时钟控件的使用

2、掌握动态效果的本质是改变left、top

3、掌握键盘事件

4、判断条件的使用,大小写字母转换

form1.windowstate=1

QQ登录界面动画开发 progressbar控件使用

vb中的动画实现思路

多张图片的快速替换来实现 采用timer时钟控件去使用制作动画

动画的本质:其实就是多帧图片的播放

MsgBox "QQ号码或密码错误!", vbCritical, "提醒"

MsgBox信息框+消息内容,图标,消息框标题

form1.windowstate=1

学习VB6.0视频网站

0

评论 (0)

取消