vb 调用模块中的vb中function函数调用

VB自定义一个计算阶乘的函数过程fac(n),调用该函数过程计算s=1!+2!+3!+4!+5!+…+n!要添加标准模块来做,包括标准模块那里的过程,
看了上面几位的代码 :应该都写错了楼主的问题是:s等于 1到N之间每个整数的阶乘相加,而不是N的阶乘我没理解错吧?稍等 完毕:在模块中输入代码:Public Function fac(n As Integer) As Long '在模块中用public(公用的)定义函数过程Dim i As Integer,j As Integer,s As Long For i = 1 To n s = 1For j = 1 To is = s * jNext jfac = fac + sNext iEnd Function在窗体中输入代码:Private Sub Form_Click()Dim s As LongDim n As Integern = InputBox("请输入一个整数")s = fac(n)Print sEnd Sub
救星,界面上还有有两个text,一个用来输入n,一个用来输入s,n是个数,s是总和,你能不能把它俩也定义下来,让我在界面输入n后可以点击计算命令按钮得到s,我完全迷茫啊……
汗,主过程都这么明白了 还不会改啊
函数过程不变 然后再窗体上的Text1输入N 的值 ,单击按钮 计算 ,结果会出现在text2中
在窗体中输入代码:
Private Sub Command1_Click()
'按钮单击事件
Dim s As Long
Dim n As Integer
n =val(text1.text)
s = fac(n)
text2.text = s
为您推荐:
其他类似问题
扫描下载二维码调用声音文件的VB函数
·您当前的位置: &
调用声音文件的VB函数
多媒体软件中,声音是重要组成部分。而VB中却没有直接调用声音文件的语句。于是笔者在VB5.0中定义了一个调用声音文件函数。调用此函数时只需带上不同的参数,就能执行不同的声音文件并发出各种声音。利用此函数在编制多媒体软件时可以带来很大方便。
&&& 定义调用声音文件函数时用到了Windows播放声音的API函数。现先将此API函数作简单介绍sndPlaySound(参数1,参数2)其中:参数1描述要播放的声音文件的位置和文件名;参数2的取值能决定播放声音的模式。参数2的主要取值介绍如下:
&&& 取&H0时:为同步播放模式;
&&& 取&H1时:为异步播放模式;
&&& 取&H2时:当声音文件未找到就停止播音返回;
&&& 取&H8时:为循环播放模式。
&&& 当调用函数成功,就播放有关声音文件,并且函数的返回值为非0;函数调用失败,函数的返回值为0。
&&& 定义调用声音文件函数的具体步骤如下:
&&& ①在C盘根目录上建立一个名为Sound的文件夹,在此文件夹中放入5个你所需要的声音文件;
&&& ②在VB5.0状态进入“工程”菜单中的“添加模块”再选用“新建”中的“模块”;
&&& ③在模块的“通用”中输入下面代码,进行调用API函数的声明;
&&&& Declare Function sndPlaySound Lib
&winmm.dll& Alias
&&& “sndPlaySoundA& (ByV al lpszSoundName
As String, ByVal uFlags As Long) As Long
&&&& Dim fil As String
&&& ④在模块中输入以下代码,定义调用声音文件函数。
&&& Public Function sound(n As Integer) As
&&& Dim x As Integer
&&& Select Case n
&&& Case 1
&&& fil = &c:\sound\beep3.wav&
&&& x = sndPlaySound(0, 0)
&&& x = sndPlaySound(fil, &H1 Or &H2)
&&& sound = x
&&& Case 2
&&& fil = &c:\sound\hit8.wav&
&&& x = sndPlaySound(0, 0)
&&& x = sndPlaySound(fil, &H1 Or &H2)
&&& sound = x
&&& Case 3
&&& fil = &c:\sound\net7.wav&
&&& x = sndPlaySound(0, 0)
&&& x = sndPlaySound(fil, &H1 Or &H2)
&&& sound = x
&&& Case 4
&&& fil = &c:\sound\out12.wav&
&&& x = sndPlaySound(0, 0)
&&& x = sndPlaySound(fil, &H1 Or &H2)
&&& sound = x
&&& Case 5
&&& fil = &c:\sound\spin5.wav&
&&& x = sndPlaySound(0, 0)
&&& x = sndPlaySound(fil, &H1 Or &H2)
&&& sound = x
&&& Case Else
&&& sound = 0
&&& End Select
&&& End Function
&&& 新定义的调用声音函数格式为:sound(n),其中n的取值为1至5的正整数。利用此函数可调用5个不同的声音文件。下面是使用sound函数的演示程序:
&&& ①如图在form窗口设置6个命令控件;
&&& ②在这些命令控件的Click事件中入分别输入以下代码。
&&& Private Sub Command1_Click()
&&& l = sound(1)
&&& End Sub
&&& Private Sub Command2_Click()
&&& l = sound(2)
&&& End Sub
&&& Private Sub Command3_Click()
&&& l = sound(3)
&&& End Sub
&&&& 年Private Sub Command4_Click()
&&& l = sound(4)
&&& End Sub
&&& Private Sub Command5_C lick()
&&&& End Sub
&&& Private Sub Command6_Click()
&&& End Sub
&&& 运行程序后,单击有关按钮就能调用所指定的声音文件,发出各种声音。
&&& (江苏苏州市景范中学 赵旭 215005)
&&& 选择字段浏览程序
&&& 虽然FoxPro系统给我们提供USE、BROW命令来打开数据库进行浏览,如果是浏览指定的数据库文件和全部字段还比较方便,当频繁打开不同目录的数据库文件或只想浏览部分字段时,使用上述过程就显得力不从心了。下面这个小程序可以把当前硬盘和软盘所有目录下的数据库文件列出,当您选择到一个数据库文件后,又将库中所有字段列出,您可以有选择地进行浏览,从而使数据库选择字段浏览相当简便。
&&& SET TALK ON
&&& SET COLO TO W/N,R/B,R && 使选择字段时, 屏幕显示所选的字段
&&& SET COLOR OF SCHEME 2 TO BG/W,N/W,N/W,B/W,B/BG,W+/R,GR+/W,N+/N,B/W,W/N,+
&&& DO WHIL .T.
&&& DEFINE POPUP database FROM 2,10 to 15,30
PROMPT FILES LIKE *.dbf colo sche 2;
&&& MESSAGE “移动↑↓光标键,选择数据库文件目录,其它键退出”
&&& ON SELECTION POPUP database DO Database
&&& DEFINE POPUP fieldlist FROM 2,26 TO 15,46
PROMPT STRUCTURE MARGIN;
&&& MESSAGE “按&ENTER&选择字段,然后按&ESC&进行浏览”
&&& ON SELECTION POPUP fieldlist DO Fieldlist
&&& @ 1,11 SAY “ 选择一个数据库:” COLO B/G
&&& ACTIVATE POPUP database
&&& @ 1,11 SAY “ ” COLO N/N
&&& IF NOT EMPTY(DBF()) && 如果选择了一个数据库
&&& @ 1,29 SAY “ 选择数据库字段:”COLO R/G
&&& mfieldlist =“ ” && 字段选择变量
&&& ACTIVATE POPUP fieldlist&&激活菜单显示数据库字段
&&& IF NOT EMPTY(mfieldlist)
&&& mfieldlist = “FIELDS ” + LEFT(mfieldlist,
LEN(mfieldlist)-1)
&&& *在字段选择变量中增加 “FILEDS”, 并除去尾部逗号.
&&& BROWSE &mfieldlist COLO R+/BG+
&&& * 浏览所选择的数据库和所选择的字段
&&& RELEASE POPUP database, fieldlist
&&& XX=& &
&&& @ 23,24 SAY &还继续浏览数据库吗(y/Y)?&
GET XX COLO B+/W
&&& IF UPPER(XX)=&Y&.OR.XX=&Y&
&&& SET TALK OFF
&&& CLOSE DATABASE
&&& RETURN
&&& * Process database file list selection
&&& PROCEDURE Database
&&&& USE PROMPT()
&& 打开所选择的数据库
&&& DEACTIVATE POPUP database
&&& RETURN
&&& PROCEDURE Fieldlist
&&& IF NOT PROMPT() $ mfieldlist
&&& mfieldlist = mfieldlist + PROMPT() + &,&
&&& * 在字段选择变量中增加字段和逗号
&&& RETURN
&&& (河北省邯郸市峰峰矿务局 左巍 056207)共有 4584 人关注过本帖
标题:vb实现回调函数
来 自:广东
等 级:贵宾
威 望:32
帖 子:2814
专家分:642
结帖率:81.08%
&&问题点数:0&&回复次数:9&&&
vb实现回调函数
程序代码:'什么是回调函数?回调函数就是由你自己写的。你需要调用另外一个函数,而这个函数的其中一个参数,就
'是你的这个回调函数名。回调函数与普通的函数没有什么区别,其之所以称之为回调函数,是因为这个函数
'作为另外一个函数的参数,比如有以下两个函数 CallFun是回调函数, MainFun是调用回调函数的函数
'Private Sub CallFun(i as Integer)
'Private Sub MainFun(CallFun, i As Integer)
'&&& CallFun i
'不幸的是VB中不能将函数作为参数,利用上面的代码是不可行的。下面我将介绍可行的办法。
'首先让我们理解一下 Implements 语句
'语法 Implements [InterfaceName | Class]
'所需的 InterfaceName 或 Class 是类型库中的接口或类的名称,该类型库中的方法将用与 Visual Basic 类中相一致的方法来实现。
'所谓接口就是代表接口封装的成员(方法以及属性)的原型集合;也就是说,它只包含成员过程的声明部分。一个类提供一个或多
'个接口的所有方法以及属性的一种实现方案。类的控制者每次调用函数时,该函数所执行的代码由类来提供。每个类至少应实现一
'个缺省接口。在 Visual Basic 中,一个已实现的接口中任何没有显式声明的成员都是缺省接口的隐式成员。
'当 Visual Basic 类实现接口时,都会提供该接口的类型库中说明的所有 Public 过程的版本。除了提供接口原型与自编过程之间的
'映射关系之外,Implements 语句还使这个类接收对指定接口 ID 的 COM QueryInterface 调用。
'看了说明是不是还是一头雾水,好的,下面让笔者用实际的例子演示一下相信各位看官就会明白的了。
'<font color=#.首先我们新建一个标准工程,然后在这个标准工作添加 类模块,然后把类模块的名字改为 InterFace ,意为 接口类, 根据接口定义
'我们在这个类模块中添加函数原形(所谓接口就是代表接口封装的成员(方法以及属性)的原型集合),即是说接口只是声明一了个原形,
'而不必有实现,可谓原形,比如一个函数原形如下:
'Private Sub CallFun(i as Integer)
'所谓实现如下:
'Private Sub CallFun(i as Integer)
'&&&msgbox i
'InterFace 类模块的代码如下:
'Public Sub CallFun(i as Integer)
'接着我们添加一个实现这个接口的类,首先添加一个类模块,把名字改为Func1
'添加以下代码:
'Implements InterFace
'这一句的意思即是说这个类是要实现InterFace接口的
'然后点击Implements InterFace上面的列表框,是不是看到了一个InterFace的项(如图1所示),我们选择这个项看看会有什么效果
'是不是自动添加了如下代码
'Private Sub InterFace_CallFun(i As Integer)
'然后我们可以在这个InterFace_CallFun函数中写我们想写的实现代码,我就写一句 msgbox i 代码吧,如下所示
'Implements InterFace
'Private Sub InterFace_CallFun(i As Integer)
'&&& MsgBox i
'然后我们在Form1的代码区中实现MainFun函数,如下
Private Sub MainFun(Fun As InterFace, i As Integer)
&&& Print &随便写的代码&
&&& Print &随便写的代码&
&&& Print &随便写的代码&
&&& Fun.CallFun i
&&&Print &随便写的代码&
'接着在Form1的Click事件中调用MainFun函数,如下代码所示
Private Sub Form_Click()
&&& MainFun New Func1, <font color=#
&&& '好的,如果我们想把i的值等于99时再Msgbox出来如何是好呢?是不是得回去修改Func1类的,这当然不,而是继续添加另外一个类
&&& '模块,把名字改为Func2, 添加以下代码
&&& 'Implements InterFace
&&& 'Private Sub InterFace_CallFun(i As Integer)
&&& '&&& If i = 99 Then
&&& '&&&&&&&&MsgBox i
&&& '&&& End If
&&& 'End Sub
&&& '好的,我们现在调用一下看看
&&& MainFun New Func2, <font color=#&&'这句没有满足条件没有显示结果
&&& MainFun New Func2, <font color=#&&'这句满足了条件从而显示了结果
'本教程是一个简单的例程,如果各位看官有不明白之处请提问,本文有谬误之处亦请指出,谢谢!
工程演示源码:
附件: 您没有浏览附件的权限,请
搜索更多相关主题的帖子:
来 自:广东
等 级:贵宾
威 望:32
帖 子:2814
专家分:642
没人顶啊。
等 级:贵宾
威 望:10
帖 子:237
专家分:999
请LZ帮忙看下:
来 自:广东
等 级:贵宾
威 望:32
帖 子:2814
专家分:642
乍弄得这么复杂.用ActiveX EXE不更好。我仔细看看。
来 自:山东蓬莱,蓬莱祥林
等 级:论坛游民
帖 子:68
专家分:37
我倒是经常使用子函数来计算,句式是:
gosub aaaa
函数过程:return
等 级:论坛游民
帖 子:61
专家分:25
我都不会用子函数,大家加油!我是初学者!
等 级:新手上路
首先不好意思,今天偶尔看到贵贴,给楼主提出不同看法。
楼主举的例子,似乎有些让人误解,把你的这个关键调用方式我再概括的展示一下:
Public Function&&CallBack(ClassName as class ,Ax as long) as long
注意:你的第一个参数是一个实现了接口的变量,也就是实现抽象类的变量,第二个参数是一个指定基本类型的变量。
&&&&&&那么你的第一个参数可以肯定说,不是一个函数指针。
&&&&&&因此你的这段代码也称不上是一个回调函数的实现。
但有一点可以确定,你的思路是正确的,可以将函数封装到一个指定类中,从而实现你所说的回调结果。
不过,如果我直接声明这个类,并且直接调用这个类的方法(就是上面所说的函数),是不是更加简洁呢?
当然楼主可以过使用接口,模拟实现多态的函数的调用,但是与回调函数的话题就不相关了,
来 自:广东
等 级:贵宾
威 望:32
帖 子:2814
专家分:642
回复 7楼 ycyhjj2865
这么久的帖子都还有人回,呵呵。。。
阁下言之有理啊,多多交流。
来 自:广东
等 级:贵宾
威 望:32
帖 子:2814
专家分:642
回复 7楼 ycyhjj2865
不过,如果直接指定为类声明的话就实现不了回调,因为回调函数是用户写的。用接口的方式就可以规范出一个规则让用户去写回调函数。
等 级:新手上路
回复 7楼 ycyhjj2865
正解!!!
版权所有,并保留所有权利。
Powered by , Processed in 0.023924 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved

我要回帖

更多关于 vb 调用模块 的文章

 

随机推荐