21世纪高等学校计算机基础教育系列教材 第14章—多窗体程序设计 出
第14章 多窗体程序设计 •人民邮电出版社 21世纪高等学校计算机基础教育系列教材
建立多窗体应用程序 ◆多窗体程序设计相关的语句: ◆Load语句 ◆ Unload语句 ◆ShoW语句 ◆Hide语句
建立多窗体应用程序 多窗体程序设计相关的语句: Load 语句 Unload 语句 Show语句 Hide语句
多窗体的执行与应用 键盘敲击显示字符(需委去掉所有按钮,否则窗体得不到焦点 二窗体 详细举例完成 第三窗体 可调用 第四窗体 返鼠并关闭 西图验证 mousedown事件(画图) 返回并退出
多窗体的执行与应用 详细举例完成 可调用
程序代码(form1) Private Sub Command1 Click Form2 Show Me Hide End Sub Private Sub Command2 Click Form3. Show Me Hide End Sub Private Sub Command3 Click ●Form4.Show End Sub Private Sub Form Key Down(Key Code As Integer, Shift As Integer) Static i As Integer If i Mod 10=0 Then Print Chrs(Key Code); --- HexS(Key Code); Print: Print Elself Keycode= 13 Then Print: Print: Print Else Print Chrs(Key Code) HexS(Key Code) End If ◆ End sub
程序代码 (form1) Private Sub Command1_Click() Form2.Show Me.Hide End Sub Private Sub Command2_Click() Form3.Show Me.Hide End Sub Private Sub Command3_Click() Form4.Show Me.Hide End Sub Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Static i As Integer i = i + 1 If i Mod 10 = 0 Then Print Chr$(KeyCode); "---"; Hex$(KeyCode); " "; Print: Print ElseIf KeyCode = 13 Then i = 0 Print: Print: Print Else Print Chr$(KeyCode); "---"; Hex$(KeyCode); " "; End If End Sub
程序代码(form2) Dim paintnow As Boolean Private Sub Command1 Click Form1. Show Unload Me ● End sub Private Sub Form DblClick CIs End Sub Private Sub Form Load DrawWidth 4 Fore Color= RGB(255, 0, 0 End Sub Private Sub Form Mouse Down(Button As Integer, Shift As Integer, X AS Single, Y AS Single) paintnow= True End sul Private Sub Form Mouse Move(Button As Integer, Shift As Integer, X As Single, Y AS Single If paintnow Then PSet(X, Y) ◆Endf ◆ End sub Private Sub Form Mouse Up(Button As Integer, Shift As Integer, X As Single, Y As Single paintnow False End Sub
程序代码(form2) Dim paintnow As Boolean Private Sub Command1_Click() Form1.Show Unload Me End Sub Private Sub Form_DblClick() Cls End Sub Private Sub Form_Load() DrawWidth = 4 ForeColor = RGB(255, 0, 0) End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) paintnow = True End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If paintnow Then PSet (X, Y) End If End Sub Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) paintnow = False End Sub
程序代码(form3) ◆ Dim trace As Boolean Private Sub Command1 Click ◆Form1.Show ◆ Unload me ◆ End sub Private Sub Form Mouse Down(Button As Integer, Shift As Integer, X As Single, Y AS Single) r= Rnd*800 Ifr< 200 Then r= 200 trace= True Circle (X, Y),r ◆ End sub Private Sub Form MouseUp(Button As Integer, Shift As Integer, XAS Single, Y As Single) trace= False End Sub
Dim trace As Boolean Private Sub Command1_Click() Form1.Show Unload Me End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) r = Rnd * 800 If r < 200 Then r = 200 trace = True Circle (X, Y), r End Sub Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) trace = False End Sub 程序代码(form3)
程序代码(form4) Private Sub Command 1 Click Form1. Show ◆ Unload Me ◆ End sub o Private Sub Form Click Mouselcon= LoadPicture("f: djkslpptlon ico") ◆ End sub Private Sub Picture1 Click picture 1. Picture LoadPicture(f: djkslppt\hn. jpg") End sub
Private Sub Command1_Click() Form1.Show Unload Me End Sub Private Sub Form_Click() MouseIcon = LoadPicture("f:\djks\ppt\on.ico") End Sub Private Sub Picture1_Click() picture1.Picture = LoadPicture("f:\djks\ppt\hn.jpg") End Sub 程序代码(form4)
多窗体程序的保存与执行 ◆设置工程的启动窗体,如果没有启动窗体或过程的话,工程将无法运行, 执行方法如下 工程→工程1属性,打开如下窗口,在其中选择启动对象 通用生成|繃译|部件|调试 启动对象) 注意:可以从最新 工程名称 Sub Main 和现存中选择,以最快 帮助文件名 工程盎述 速度地找到你的工程文 厂执行无用户界面)线程模块 件 升级 Active控件① 厂要求许可证关键字①)C每个对象对应一个线程的 丁开工程 厂保留在内存中0)线程冲也①彐线程 现存最新 确定取消」帮助 查找范围gv98 ←国围 保存多窗体:在新建工程中直接保‖产时 存即可(要同时保存工程和窗体)百网 装入工程,打开工程即可,无须每 个窗体打开一次。 文件名Q 打开 工程的扩展名vbp 文件类型①:工程文件(”p”m) 窗体的扩展名frm 帮助Q
多窗体程序的保存与执行 设置工程的启动窗体,如果没有启动窗体或过程的话,工程将无法运行, 执行方法如下: 工程→工程1属性,打开如下窗口,在其中选择启动对象。 保存多窗体:在新建工程中直接保 存即可(要同时保存工程和窗体) 装入工程,打开工程即可,无须每 个窗体打开一次。 工程的扩展名vbp 窗体的扩展名frm 注意:可以从最新 和现存中选择,以最快 速度地找到你的工程文 件
Visua| basic工程结构 ◆包括标准模块、窗体模块和 sub main过程 如 全局变量声明 下列选项中,不属于vb主要模块的是 A标准模块C工程模块 模块层声明 B窗体模块D类模块 答案是 Sub main过程 ●完整的应用程序的组成:结构图 标准模块bas 通用过程 工程vbp 窗体模块frm 窗体层声明 通用过程 类模块cls 工程组 件过程 工程vbp BG 工程vbp
Visual basic 工程结构 包括标准模块、窗体模块和sub main 过程 如: 下列选项中,不属于vb主要模块的是: A 标准模块 C 工程模块 B 窗体模块 D 类模块 答案是: 完整的应用程序的组成:结构图 工程组 VBG 工程vbp 工程vbp 工程vbp… 标准模块bas 窗体模块frm 类模块cls 全局变量声明 模块层声明 Sub main过程 通用过程 窗体层声明 通用过程 事件过程
闲置循环与 doevents语句 ◆闲置:无事件在触发时忙碌:正在执行某事件触发程序 ◆闲置循环: idle loop:在空闲时用一个循环来执行其他操作,就是在闲 置情况执行的循环。闲置循环时,cpu全部占用,要夺回cpu控制杈,用 doevents来实现。 Devens即可作为语句,也可作为函数。例如: 工程工程1 区 附置循环与 doevents x Sub maino 毖工程1(13-2vbp ③窗体 Form1. Show . Form1(13-2.frm) 白-—模块 Do While DoEvents 单击次按钮 A4% Modulel (main bas) If Form1. Command2 Left 置循环 Private Sub Command 1 Click < Form1 Width Then Form 1. Command2 Left 退出 Font size 12 Prit执行按钮1的单击事件过程"|Fom1 Command2let+1 Be 闲置循环与 doevents For i= 1 To 10000 ep X=X*2 Else Next i Form1. Command2 Left 单击次按钮 End sub Form1. Left End If 闲置 Loop Private Sub Command3 Click) End Sub End End sub
闲置循环与doevents语句 闲置:无事件在触发时 忙碌:正在执行某事件触发程序 闲置循环:idle loop:在空闲时用一个循环来执行其他操作,就是在闲 置情况执行的循环。闲置循环时,cpu全部占用,要夺回cpu控制权,用 doevents来实现。 Doevens 即可作为语句,也可作为函数。例如: Private Sub Command1_Click() FontSize = 12 Print "执行按钮1的单击事件过程" For i = 1 To 10000 x = x * 2 Next i End Sub Private Sub Command3_Click() End End Sub Sub main() Form1.Show Do While DoEvents() If Form1.Command2.Left <= Form1.Width Then Form1.Command2.Left = Form1.Command2.Left + 1 Beep Else Form1.Command2.Left = Form1.Left End If Loop End Sub