a)If语句 If语句标准格式: If 逻辑表达式 Then [Else If 逻辑表达式 Then] [Else] End If b)Select语句 Select语句标准格式: Select 算术表达式 Case 逻辑表达式 [Case Else] End Select 注意:此处的逻辑表达式的第一个逻辑运算符不需要左边的算式。例如: Dim a As Long
a=10 Select a+3 Case <2 Case >2 And a+3<10 Case >10 And a+3<100 CaseElse End Select
Do Loop Until 逻辑表达式 条件后于循环,当外部进入循环时,至少循环一遍,然后判断条件是否成立,如果不成立,循环将跳出。 Exit Do语句将跳出循环
标准格式: [Virtual] [Public | Private]Function 函数名([[ByVal | ByRef] 参数名 As 类型名][,[ByVal | ByRef] [Optional] 参数名 As 类型名[= 常量表达式]]...) As 类型名 End Function 函数名:必选,必须是有效字母:26个大小写英文字母、10个数字、下划线、所有中文,第一个字母必须是英文字母或中文、下划线; 参数名:同变量名; 类型名:基本数据类型、非基本数据类型(对象类)、类模板类型; [Virtual]:虚拟函数定义,仅仅只能在类的成员函数中定义; [Public | Private]:可选,公有私有说明; [ByVal | ByRef]:可选,参数按值或按地址传。缺省是按地址传ByRef; [Optional]:可选,表示此参数可以写可以不写,即可选参数。可选参数可以对其给一个缺省值,方法是在其定义后跟一个等号和常量算式。 [= 常量表达式]:可选,当前面定义的参数是可选参数时,才能使用缺省值定义。常量表达式中不能使用变量。 End Funciton:结束函数定义
标准格式: Class 自定义的类型名 [From 已有的对象类型名] End Class 自定义的类型名同变量名的字母组成,自定义类型名不能与已有类型名相同。此类型将是对象类。 [From 已有的对象类型名]:From继承语句,说明自定义类型是需要从已有的对象类型继承过来的。 类型定义必须放在模块定义的内部
标准格式: Module 模块名 End Module 模块内部将可以定义以下内容: 自定义对象类型、全局变量、全局函数、模块内局部变量、模块内局部函数。 模块内部不能定义窗口类,窗口类是独立与所有定义形式。 模块定义的内容必须在同一个文件中。 模块定义的内容缺省是全局的。
标准格式: Form 窗口类 End Form HB++中,Form语句定义的窗口类将在编译后执行前自动创建一个窗口实例,并创建一个全局的静态变量:窗口类。 在Form...End Form中定义的所有内容,都将是此窗口的成员属性或方法或事件。 窗口中插入控件的方法很简单,如下面例子:(由于还没有开发完可视化编程部分,所以暂可以使用以下方式) Form 窗口类 Public withEvent button as TButton public withEvent treeView as TTReeview public withEvent edit as TText public withEvent coolBar as TCoolBar End Form 上面例子中,窗口中将自动被插入了一个按钮、显示树、编辑框、工具条。当没有定位,如果想定位,继续写下窗口类的构造函数,在构造函数中将各控件定位。定位方法可以是赋值给Left、Top、Width、Height或指定Align方式定位。 窗口只有当程序结束时才会被自动释放,如果希望强制释放删除,将上例的窗口类置空即可: Set 窗口类 = NULL 其他对象类的强制释放删除同样如此。
标准格式: TypeDef 已有类型名类型的别名 已有类型名可以是任何HB++的类型(包括类模板)。 类型别名的使用方法与类型名相同,虽然它不是一个新的类型,但与它指向的类型完全相同。
标准格式: Struct 结构名 From 已有的类型名 End Struct 在HB++中,Struct和Class的定义几乎完全一样,使用时可以当成一种方式使用。
标准格式: Dim 变量名[(数组大小)] As [New] 类型名 [<类型参数表>][,变量名 As [New] 类型名 [<类型参数表>]...] 变量名:动态变量名称; [(数组大小)]:可选,定义数组; 类型名:HB++所有类型名; [<类型参数表>]:可选,如果类型是类模板,此处的类型参数表将是此类模板所需的类参数。参数最多可以是十个。
标准格式: Static 变量名[(数组大小)] As [New] 类型名 [<类型参数表>][,变量名 As [New]类型名 [<类型参数表>]...] 变量名:静态变量名称 其他同Dim定义语句说明。
标准格式: Public [Static] 变量名[(数组大小)] As [New] 类型名 [<类型参数表>][,变量名 As [New] 类型名 [<类型参数表>]...] 变量名:公有变量名称 使用Static说明变量是公有的静态变量,不使用的缺省是动态标量。 其他同Dim定义语句说明。
标准格式: Private [Static] 变量名[(数组大小)] As [New] 类型名 [<类型参数表>][,变量名 As [New] 类型名 [<类型参数表>]...] 变量名:私有变量名称 使用Static说明变量是私有有的静态变量,不使用的缺省是动态标量。 其他同Dim定义语句说明。 注意:在变量定义中,如果是对象类型的变量,可以使用New来直接创建类实例,但New不能在类属性定义中使用。 如果变量定义中没有使用New,可以在执行程序体中使用New语句来创建对象类。例如: Dim a as TForm Set a = New TForm
标准格式: Event 事件函数名([[ByVal | ByRef] 参数名 As 类型名][,[ByVal | ByRef] [Optional] 参数名 As 类型名[= 常量表达式]]...) Event事件定义语句定义了事件函数的函数名和参数形式。 Event语句必须在类定义中使用。 当定义类实例的此事件函数时,事件函数名定义格式如下: 类实例变量名_事件函数名 例如: Module 例子模块 Class 例子类 Pulic Event Over(ByVal X as Long,ByVal Y as Long) Public OldX as Long,OldY as Long Function Line(ByVal X as Long,ByVal Y as Long) RaiseEvent Over(X,Y) 窗口类.Line(OldX,OldY,X,Y) End Function '预先定义事件过程函数的方法: '有了预先定义的事件函数,此类的类实例在创建构造后,自动拥有此事件函数的处理过程。 Function _Over(ByVal X as Long,ByVal Y as Long) if X>0 And X <100 And Y>0 And Y<150 Then Msgbox ("进入此区域有效!") end if End Function End Class End Module Form 窗口类 From TForm Public withEvent b as TButton Punlic c as 例子类 Public withEvent d as 例子类 function b_Click() end Function Function c_Over(ByVal X as Long,ByVal Y as Long) if X>100 And X <200 And Y>150 And Y<300 Then Msgbox ("不能进入此区域!") end if End Function End Form
标准格式: RaiseEvent 事件函数名(参数表) 如Event中讲述的例子。
WithEvent语句在定义变量中说明使用,它表示定义的变量将在构造时自动获取类实例,如果是控件类实例,还将插入到窗口类中。 WithEvent说明的变量必须定义是对象类型,如果是基本数据类型,HB++将报错。 如Event中讲述的例子。
标准格式: OnError OnError表示从此行开始如果有错误,将自动转到DoError处执行。
标准格式: DoError [函数名(参数表)] DoError如果后面没有跟函数,当在OnError到DoError之间的代码中出错时,将自动执行DoError语句后面到CloseError之间的程序代码。 如果后面使用了函数,当出错,将自动调用此函数。
标准格式: CloseError 关闭错误处理。关闭后,执行出错,HB++不会激发DoError处理错误,将系统报错。
标准格式: Resume [Next | Exit] Resume:错误处理完毕后,使用此语句将返回到出错的语句上继续执行 Resume Next:错误处理完毕后,使用此语句将返回到出错的下一条语句 Resume Exit:错误处理完毕后,使用此语句将退出当前函数。 注意:HB++的错误处理机制允许嵌套使用。当出错时,HB++会自动寻找最近的错误处理的DoError。例如下例: Function abc(a as long,b as long) dim c as long OnError a=10 b=0 c=a/b OnError a=5 c=a/b DoError Msgbox(a) Resume Next CloseError a=20 c=a/b DoError MsgBox(a) Resume Next ClsoeError end function 运行结果:第一次提示“10”,第二次提示“5”,第三次提示“20”。
标准格式: Property Get 属性函数名() As 类型名[<>] End Property
标准格式: Property Let 属性函数名([ByVal | ByRef] 参数名 As 基本数据类型名[<>]) End Property
标准格式: Property Set 属性函数名([ByVal | ByRef] 参数名 As 对象类型名[<>]) End Property 注意:Property Get与Property Let配对或Property Get与Property Set配对,当配对两个同名属性函数名的类型一定要相同
只读属性:仅仅使用Property Get定义属性读函数。 只写属性:仅仅使用Property Let或Property Set定义属性写函数。 例子: Module 例子模块 Class 例子类 Private FData as Long Property Get Data() as Long Data=FData End Property Property Let Data(ByVal Value as Long) FData=Value End Property End Class Function Dispaly() dim d as New 例子类 d.Data=10 Msgbox(d.Data) end Function End Module