常用标签属性

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 = <= (不等于)

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

val(“123”) 就是数值123

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

If Val(Label2.Caption) > 3 Then Print “八大于三”If Val(Label2.Caption) > 5 ThenPrint “八大于五”
End IfIf Val(Label2.Caption) =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 '声明变量ifor 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,比较11n(j+1) thendim t As Integert=n(j)n(j)=n(j+1)n(j+1)=tend ifnext j
‘每一趟比较之后会出现一个最大值放在数组的最后面
‘因此,下一趟的比较不再需要与最后的数值去比较m=m-1
next i’输出排序后的数组n
s=””
for i=0 to length-1 step 1s=s & n(i) & ” ”
next iprint “排序后数据” & 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

求百位数的数字=567\100=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 IntegerDim max as IntegerDim min as Integermax=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))val(text1(j).text) thenmindex=j’m=val(text1(j).text)end ifnext jDim 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) = 0 ThenList1.AddItem Val(Text1.Text)
End IfLabel3.Caption = “”
Label5.Caption = “”
Label7.Caption = “”
Dim i%For i = 0 To List1.ListCount – 1 Step 1Select Case Val(List1.List(i))Case 90 To 100Label3.Caption = Val(Label3.Caption) + 1Case 60 To 89Label5.Caption = Val(Label5.Caption) + 1Case 0 To 59Label7.Caption = Val(Label7.Caption) + 1End Select
Next i
select case中的条件表达式如何写?

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

2、使用is关键字,必须要搭配> = = 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=11print ii=i+1 loop 文件读写语法格式 通用语法格式 Open文件路径 for 打开方式 as #文件号 这里就可以开始读写文件中的内容了。 Close #文件号 在写入的时候,如果原来不存在这个文件名称的话,那么会自动创建。 打开方式 Append追加写入,在原来的基础上,在最后的位置加入新的东西 Input读取 Output写入,覆盖性的写入 写入print文件号,写入内容 读取line input #1,读到一个变量中 注意:文件的读写路径一般要采用app.path就是指程序的相对路径 绝对路径:C:\qikaile\1.txt 往往喜欢用app.path就代表项目工程文件所在的文件夹。 相对路径: 假设文件1的路径是C:\qikaile\1.txt 文件2的路径为C:\qikaile\2.txt 如果当前在C:\qikaile\下面,那么文件1相对于文件2的路径。…/2.txt EOF函数 理解 end of file文件的末尾 参数就是文件号 文件写入 追加写入 Open App.Path & "/1.txt" For Append As #1Print #1, Text1.Text Close #1 覆盖写入 Open App.Path & "/1.txt" For Output As #1Print #1, Text1.Text Close #1 读取文件 只读取一行 List1.Clear Open App.Path & "/1.txt" For Input As #1Dim t$Line Input #1,tList1.AddItem t Close #1 读取整个文件 List1.Clear Open App.Path & "/1.txt" For Input As #1 Do Until EOF(1)Dim t$Line Input #1, tList1.AddItem t Loop Close #1 补充内容 clear方法用来清空 ListBox清空 List1.clear 累加与累乘案例分析 累:积累 加:加法 乘:乘法 例题:输入一个值xxx,1≤x≤1001≤x≤1001≤x≤100之间的整数 求ex=1+x1!+x22!+x33!+⋯+xxx!e^{x}=1+\frac{x}{1 !}+\frac{x^{2}}{2 !}+\frac{x^{3}}{3 !}+\cdots+\frac{x^{x}}{x !} ex=1+1!x​+2!x2​+3!x3​+⋯+x!xx​ 1、根据输入值xxx​来决定个数,有多少个就有多少次循环 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 sub与function相同点:在没有返回值之后,调用方式相同 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 1Text1.Text = Text1.Text & i & "," Next iEnd Sub 2、do until…loop Private Sub Command2_Click() Dim i As Integer Do Until i = 100i = i + 1Text1.Text = Text1.Text & i & "," LoopEnd Sub 3、递归方式 原理:在一个function/sub中,自己调用自己 注意点:递归算法中必须有退出自身调用自身的循环条件 Dim a As Integer 'a全局变量 Dim a%Private Sub Command3_Click() If a < 100 Thena = a + 1Text1.Text = Text1.Text & a & ","Call Command3_Click End IfEnd 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 ObjectSet o = CreateObject("sapi.spvoice") '返回实例对象,相当于一个人,可以讲话了o.speak (Text1.Text) 为什么是调用sapi.spvoice? 是一个COM对象 COM对象有哪些?使用注册表可以查看,运行输入regedit 计算机\HKEY_CLASSES_ROOT\SAPI.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信息框+消息内容,图标,消息框标题

📱 手机扫码阅读
二维码
扫码直接打开文章