zzz8662 发表于 2004-6-30 13:50:00

Visual Basic编程问答集(一)很有帮助的

□        如何一行程序太长,查阅起来很麻烦,能不能换行?<BR>VB的程序代码是允许换行书写的,只要在每次换行的最后一个字<BR>符加上换行字符“_”就可以了。例如:<BR>Sub        PicMove()<BR>Frm.Picture2.Left        =        Frm.Picture1.Left        +        _        ’加上换行符<BR>Frm.Picture1.Width<BR>End        Sub<BR><BR>□        如何在设计的时候清空存在的图片?<BR>用鼠标点中该图片,按F4列出其属性窗口,然后再选中Picture<BR>属性,按Del键便可清空图片。<BR><BR>□        Visual        Basic        如何注释一段较长程序代码?<BR>VB注释程序代码的符号是“'”,只要在某行程序前面加上<BR>“'”,就可以注释该行程序。但如果程序代码很长的时候,一行<BR>一行地注释令人觉得难以忍受。VB本身提供了这个功能,在主菜<BR>单“视图”选项的“工具栏”下,选中Edit,VB的界面会出现<BR>一排工具按钮,其中的(图片)用于“设置注释块”和“解除注<BR>释块”。<BR><BR>□        怎么实现鼠标一移上去就出现小提示窗口的功能?<BR>VB        5.0里每个控件都有ToolTipText属性,只要加上一行程序<BR>就可以了。例如:Label1.ToolTipText        =        "这是提示!"。<BR><BR>□        如何获得当前软件的运行磁盘目录和命令行参数?<BR>VB里面有个系统对象叫App。App.Path就是当前软件的运行目<BR>录。而命令行参数存放在一个系统变量里面,叫Command。程序语<BR>句如下:<BR>Label1.Caption=App.Path<BR>Label2.Caption=Command$<BR><BR>□        我想换掉鼠标显示的形状,怎么做?<BR>VB提供的系统控件一般都有MousePointer和MouseIcon属性。<BR>我们可以寻找自己喜欢的*.ICO,*.CUR文件,实现的程序如下:<BR>Screen.MousePointer=        99        ’用户鼠标类型        <BR>Screen.MouseIcon=LoadPicture("C:\ABC\1.ICO")        ’读取鼠标文件<BR><BR>□        如何判断一个文件是否存在?<BR>可以通过打开该文件试图读取资料的方法实现,如果文件打开<BR>成功,证明该文件存在;反之,文件就不存在。<BR>Function        FileExists(fname$)        As        Boolean<BR>On        Error        Resume        Next        ’设置错误处理<BR>Dim        X        as        Integer<BR><BR>X        =        FreeFile        ’取得一个空闲文件句柄<BR>Open        fname$        For        Input        As        X        ’试图打开该文件<BR>If        Err        =        0        Then        ’如果打开成功<BR>FileExists        =        True<BR>Else        ’否则<BR>FileExists        =        False<BR>End        If<BR>Close        X<BR>End        Function<BR><BR>□        如何设置程序的错误出口?<BR>On        Error语句用于程序的错误出口处理。一般的处理方法有两种。<BR>1)        遇到错误跳转到某一行程序去执行,On        Error        GoTo        someline。<BR>例如:<BR>On        Error        GoTo        ERR_LINE<BR>...<BR>Label1.Caption=“正确执行”<BR>ERR_LINE:<BR>...<BR>Label1.Caption=“出错了!”<BR><BR>2)        遇到错误之后忽略当前错误,继续执行,On        Error        Resume        Next。<BR>例如:<BR>3)        On        Error        Resume        Next<BR>...<BR>Label1.Caption=“不管对不对都要执行”<BR>...<BR><BR>□        怎样获得键盘输入和判断敲键的Ascii值?<BR>把窗体的KeyPreview属性设置成True,然后在Form_KeyPress<BR>事件里编写程序代码如下:<BR>Private        Sub        Form_KeyPress(KeyAscii        As        Integer)<BR>Me.Caption        =        Str(KeyAscii)<BR>...<BR>End        Sub<BR><BR>□        VB有位操作吗?怎么知道一个字节的某个位的值?<BR>下面是一个字节的异或操作例子:<BR>Private        Sub        Form_Click()<BR>Dim        bitvalue        As        Byte        ’定义字节变量<BR><BR>bitvalue        =        &amp;H10        ’16进制赋值<BR>bitvalue        =        bitvalue        Xor        &amp;H10        ’异或操作XOR<BR>Debug.Print        bitvalue        ’输出结果        <BR>End        Sub<BR><BR>□        我希望窗体一运行就在屏幕的中央,怎么实现?<BR>VB的系统对象Screen记录了当前显示模式的高度和宽度,<BR>可以利用这个值来设置窗体的位置。<BR>Sub        CenterForm(frm        As        Form)        ’定义过程<BR>frm.Move        (Screen.width        -        frm.width)        \        2,        (Screen.Height        -        frm.Height)        \        2<BR>End        Sub<BR><BR>Private        Sub        Form_Load()        <BR>CenterForm        Me        ’调用过程<BR>End        Sub<BR><BR>□        很多软件都有鼠标一按下文字框TextBox,就选中所有文<BR>字的功能,是怎么实现的?<BR>Sub        TextFocus(ctl        As        Control)        ’定义过程<BR>ctl.SelStart        =        0<BR>ctl.SelLength        =        Len(ctl.Text)<BR>End        Sub<BR><BR>Private        Sub        Text1_GotFocus()<BR>TextFocus        Text1        ’过程调用<BR>End        Sub<BR><BR>□        如何屏蔽列表框Combo的键盘输入?<BR>Private        Sub        Combo1_KeyPress(KeyAscii        As        Integer)<BR>KeyAscii=0<BR>End        Sub<BR><BR>□        如何使一行字符串垂直显示?<BR>’函数:垂直显示字符串<BR>Function        RotateString(in_str        As        String)        As        String<BR>Dim        tmpstr        As        String        <BR>’把每个字符都取出来加上回车换行符号<BR>For        i        =        1        To        Len(in_str)        <BR>tmpstr        =        tmpstr        +        Mid$(in_str,        i,        1)        &amp;        vbCrLf        <BR>Next        i<BR>RotateString        =        tmpstr<BR>End        Function<BR><BR>Private        Sub        Form_Click()<BR>Label1.Caption        =        RotateString("你知道我在这里吗?")<BR>End        Sub<BR><BR>□        如何定义一个数据结构?<BR>Visual        Basic是使用Type        ...        End        Type来实现数据结构的<BR>定义的。例如:<BR>'矩形描述定义<BR>Type        RECT_STRUCT<BR>Left        As        Integer        ’坐标<BR>Top        As        Integer        <BR>Right        As        Integer        ’宽高<BR>Bottom        As        Integer<BR>Color        As        Long        ’颜色<BR>Caption        As        String        ’标题<BR>End        Type<BR><BR>Dim        MyRect        As        RECT_STRUCT        ’根据数据结构定义结构变量<BR><BR>□        如何把变量的数据写入文件,再从文件里读出来?<BR>文件的操作有打开文件(Open)、写入文件(Write)、读取文<BR>件(Input),关闭文件(Close)。<BR>’写入文件操作<BR>Function        SaveData(fname$)        As        Boolean<BR>On        Error        Resume        Next        ’设置错误处理<BR>Dim        int1        As        Integer<BR>Dim        str1        As        String<BR>Dim        X        As        Integer<BR><BR>int1=20        ’变量赋初值<BR>str1=“这是字符串”<BR>X        =        FreeFile        ’取得一个空闲文件句柄<BR>Open        fname$        For        Output        As        X        ’试图打开该文件<BR>If        Err        &lt;&gt;        0        Then        ’如果打开不成功<BR>SaveData=False<BR>Exit        Function        <BR>End        If<BR>Write        X,        int1,str1<BR>Close        X<BR>SaveData=True<BR>End        Function<BR><BR>’读取文件操作<BR>Function        ReadData(fname$)        As        Boolean<BR>On        Error        Resume        Next        ’设置错误处理<BR>Dim        int1        As        Integer<BR>Dim        str1        As        String<BR>Dim        X        as        Integer<BR><BR>X        =        FreeFile        ’取得一个空闲文件句柄<BR>Open        fname$        For        Input        As        X        ’试图打开该文件<BR>If        Err        &lt;&gt;        0        Then        ’如果打开不成功<BR>ReadData=False<BR>Exit        Function        <BR>End        If<BR>Input        X,        int1,str1<BR>Close        X<BR>ReadData=True<BR>’输入执行结果<BR>Debug.Print        int1,str1<BR>End        Function<BR><BR>□        我想在窗体中按下鼠标右键就弹出一个菜单,怎么做?<BR>首先按下Ctrl+E设计一个菜单PopMenu(具体的菜单设计操作参考<BR>帮助文件),把菜单的Visible设置成False。在Form_MouseUp中编写<BR>程序如下:<BR>If        Button        And        2        ’鼠标右键按下<BR>PopupMenu        PopMenu<BR>End        If        <BR><BR>□        Visual        Basic里面的整数和字符串如何互相转换?<BR>VB提供了系统函数Val()和Str(),可以用来实现整数和字符串之间的<BR>转换。例子如下:<BR>Sub        Str2Int()<BR>Dim        int1        As        Integer<BR>Dim        str1        As        String        <BR>int1=100<BR>str1=Str(int1)<BR>Debug.Print        str1<BR>str1=“400”<BR>int1=Val(str1)<BR>Debug.Print        int1<BR>End        Sub<BR><BR>□        我可以在一个窗体里执行别的窗体的程序代码吗?<BR>是可以的,我们可以用“窗体.代码”的模式去执行别的窗体的代<BR>码。先假设我在窗体frm2里要执行窗体frm1的Form_Click代码,程<BR>序如下:<BR>Private        Sub        Form_Click()<BR>frm1.Form_Click()        ’在frm2里执行frm1的From_Click代码<BR>End        Sub<BR><BR>□        如何在不改变数组内容的情况下重定义数组的范围?<BR>ReDim可以用来重新定义数组的范围,重定义后还要保留数组<BR>的原值,可以用Preserve说明。例如:<BR>Sub        ReDim_Data()<BR>Dim        tmpdim()        as        Integer        ’定义一个未知范围的数组<BR>ReDim        tmpdim(10)        ’设定数组的范围0..9<BR>tmpdim(0)=1<BR>tmpdim(1)=2<BR>ReDim        Preserve        tmpdim(20)        ’设定数组的范围0..19,并保留数据<BR>Debug.Print        tmpdim(0),        tmpdim(1),        <BR>End        Sub        <BR><BR>□        怎样运行在我的程序里执行别的软件?<BR>系统提供的函数Shell可以解决这个问题。Shell函数的参数为可执<BR>行文件名和运行模式。例如:<BR>Shell“C:\PWIN95\WORDPAD.EXE        README.TXT”,1<BR><BR>□        如何用打印机输出一张图片?<BR>先把图片调入窗体中,然后用PaintPicture方法(Method)把图片打印<BR>出来。<BR>Sub        PrintPhoto()<BR>Picture1.Picture        =        LoadPicture(“C:\ABC\1.BMP”)<BR>Printer.PaintPicture        Picture1.Picture,        Picture1.Left,        Picture1.Top,        _<BR>Picture1.Width,        Picture1.Height,        vbMergeCopy<BR>End        Sub<BR><BR>Visual        Basic编程问答集(二)<BR>(接上期)<BR>Write        X,        int1,str1<BR>Close        X<BR>SaveData=True<BR>End        Function<BR><BR>’读取文件操作<BR>Function        ReadData(fname$)        As        Boolean<BR>On        Error        Resume        Next        ’设置错误处理<BR>Dim        int1        As        Integer<BR>Dim        str1        As        String<BR>Dim        X        as        Integer<BR><BR>X        =        FreeFile        ’取得一个空闲文件句柄<BR>Open        fname$        For        Input        As        X        ’试图打开该文件<BR>If        Err        &lt;&gt;        0        Then        ’如果打开不成功<BR>ReadData=False<BR>Exit        Function        <BR>End        If<BR>Input        X,        int1,str1<BR>Close        X<BR>ReadData=True<BR>’输入执行结果<BR>Debug.Print        int1,str1<BR>End        Function<BR><BR>□        我想在窗体中按下鼠标右键就弹出一个菜单,怎么做?<BR>首先按下Ctrl+E设计一个菜单PopMenu(具体的菜单设计操作参考<BR>帮助文件),把菜单的Visible设置成False。在Form_MouseUp中编写<BR>程序如下:<BR>If        Button        And        2        ’鼠标右键按下<BR>PopupMenu        PopMenu<BR>End        If        <BR><BR>□        Visual        Basic里面的整数和字符串如何互相转换?<BR>VB提供了系统函数Val()和Str(),可以用来实现整数和字符串之间的<BR>转换。例子如下:<BR>Sub        Str2Int()<BR>Dim        int1        As        Integer<BR>Dim        str1        As        String        <BR>int1=100<BR>str1=Str(int1)<BR>Debug.Print        str1<BR>str1=“400”<BR>int1=Val(str1)<BR>Debug.Print        int1<BR>End        Sub<BR><BR>□        我可以在一个窗体里执行别的窗体的程序代码吗?<BR>是可以的,我们可以用“窗体.代码”的模式去执行别的窗体的代<BR>码。先假设我在窗体frm2里要执行窗体frm1的Form_Click代码,程<BR>序如下:<BR>Private        Sub        Form_Click()<BR>frm1.Form_Click()        ’在frm2里执行frm1的From_Click代码<BR>End        Sub<BR><BR>□        如何在不改变数组内容的情况下重定义数组的范围?<BR>ReDim可以用来重新定义数组的范围,重定义后还要保留数组<BR>的原值,可以用Preserve说明。例如:<BR>Sub        ReDim_Data()<BR>Dim        tmpdim()        as        Integer        ’定义一个未知范围的数组<BR>ReDim        tmpdim(10)        ’设定数组的范围0..9<BR>tmpdim(0)=1<BR>tmpdim(1)=2<BR>ReDim        Preserve        tmpdim(20)        ’设定数组的范围0..19,并保留数据<BR>Debug.Print        tmpdim(0),        tmpdim(1),        <BR>End        Sub        <BR><BR>□        怎样运行在我的程序里执行别的软件?<BR>系统提供的函数Shell可以解决这个问题。Shell函数的参数为可执<BR>行文件名和运行模式。例如:<BR>Shell“C:\PWIN95\WORDPAD.EXE        README.TXT”,1<BR><BR>□        如何用打印机输出一张图片?<BR>先把图片调入窗体中,然后用PaintPicture方法(Method)把图片打印<BR>出来。<BR>Sub        PrintPhoto()<BR>Picture1.Picture        =        LoadPicture(“C:\ABC\1.BMP”)<BR>Printer.PaintPicture        Picture1.Picture,        Picture1.Left,        Picture1.Top,        _<BR>Picture1.Width,        Picture1.Height,        vbMergeCopy<BR>End        Sub<BR><BR>□        怎样取得一个字符串在另外一个字符串中出现的次数?<BR>Public        Function        sCount(String1        As        String,        String2        As        String)        As        Integer<BR>Dim        I        As        Integer,        iCount        As        Integer<BR>I        =        1<BR>Do<BR>If        (I        &gt;        Len(String1))        Then        Exit        Do<BR>I        =        InStr(I,        String1,        String2,        vbTextCompare)<BR>If        I        Then<BR>iCount        =        iCount        +        1<BR>I        =        I        +        2<BR>DoEvents<BR>End        If<BR>Loop        While        I<BR>sCount        =        iCount<BR>End        Function        <BR><BR>□        怎样在一个字符串中删除里面的另外一个字符串?<BR>Public        Sub        sRemove(String1        As        String,        String2        As        String)<BR>Dim        I        As        Integer<BR>I        =        1<BR>Do<BR>If        (I        &gt;        Len(String1))        Then        Exit        Do<BR>I        =        InStr(I,        String1,        String2)<BR>If        I        Then<BR>String1        =        Left$(String1,        I        -        1)        +        Mid$(String1,        I        +        Len(String2)+1)<BR>I        =        I        +        2<BR>DoEvents<BR>End        If<BR>Loop        While        I<BR>End        Sub<BR><BR>□        怎样在一个字符串中替换里面的另外一个字符串?<BR>Public        Sub        sReplace(String1        As        String,        String2        As        String,        RepString        As        String)<BR>Dim        I        As        Integer<BR>I        =        1<BR>Do<BR>If        (I        &gt;        Len(String1))        Then        Exit        Do<BR>I        =        InStr(I,        String1,        String2)<BR>If        I        Then<BR>String1        =        Left$(String1,        I        -        1)        +        RepString        +        Mid$(String1,        I        +        Len(String2)+1        )<BR>I        =        I        +        2<BR>DoEvents<BR>End        If<BR>Loop        While        I<BR>End        Sub<BR><BR>□        如何计算一个字符串中的行数?<BR>Function        CountStringLine(src_string        As        String)        As        Integer<BR>On        Error        Resume        Next<BR>Dim        string_flag        As        Integer<BR>Dim        line_cnt        As        Integer<BR>Dim        test_string        As        String<BR>line_cnt        =        0        '初始--&gt;        行数为1<BR>string_flag        =        1        '标志为1<BR>test_string        =        src_string<BR>DoEvents<BR>Do<BR>line_cnt        =        line_cnt        +        1<BR>string_flag        =        InStr(test_string,        vbCrLf)        ’判断回车换行<BR>test_string        =        Right(test_string,        Len(test_string)        -        string_flag        -        1)<BR>Loop        Until        string_flag        &lt;=        0<BR>CountStringLine        =        line_cnt<BR>End        Function<BR><BR>□        如何从一个字符串中读取一行字符?<BR>Function        ReadStringLine(src_str        As        String,        lineno        As        Integer)        As        String<BR>On        Error        Resume        Next<BR>Dim        string_flag        As        Integer<BR>Dim        line_cnt        As        Integer<BR>Dim        test_string        As        String<BR>Dim        ret_string        As        String<BR>line_cnt        =        0        '初始--&gt;        行数为1<BR>string_flag        =        1        '标志为1<BR>test_string        =        Right(src_str,        2)<BR>If        test_string        &lt;&gt;        vbCrLf        Then<BR>test_string        =        src_str        +        vbCrLf<BR>Else<BR>test_string        =        src_str<BR>End        If<BR>DoEvents<BR>Do<BR>line_cnt        =        line_cnt        +        1<BR>string_flag        =        InStr(test_string,        vbCrLf)<BR>ret_string        =        Left(test_string,        string_flag)<BR>test_string        =        Right(test_string,        Len(test_string)        -        string_flag        -        1)<BR>Loop        Until        lineno        &lt;=        line_cnt<BR>'If        line_cnt        =        1        Then<BR>'        ReadStringLine        =        ret_string<BR>'Else<BR>ReadStringLine        =        Left(ret_string,        Len(ret_string)        -        1)<BR>'End        If<BR>End        Function<BR><BR>----------------------------------------------------------<BR>Visual        Basic编程问答集(三)<BR>(接上期)<BR><BR>□        怎么在VB中实现Delphi那样的MouseEnter和MouseExit的功能?<BR>VB中的鼠标事件驱动只有MouseDown,MouseMove,MouseUp三个事件,没有象<BR>Delphi那样提供MouseEnter(OnEnter)和MouseExit(onExit)的事件。而这两个事件是平时编写程序经常要用到的,我们可以通过调用SetCapture和ReleaseCapture这两个Windows        API函数的方法来实现它。具体步骤如下:<BR>1)        在VB中新建一个标准EXE工程;<BR>2)        画出一个按钮Command1;<BR>3)        在窗体Form1中定义Windows        API的声明;<BR>Private        Declare        Function        SetCapture        Lib        "user32"        (ByVal        hWnd        As        Long)        As        Long<BR>Private        Declare        Function        ReleaseCapture        Lib        "user32"        ()        As        Long<BR>4)        在Command1的MouseMove事件中编写以下代码:<BR>Private        Sub        Command1_MouseMove(Button        As        Integer,        Shift        As        Integer,        X        As        Single,        Y        As        Single)<BR>Dim        MouseEnter        As        Boolean        '鼠标进入的标志位<BR><BR>MouseEnter        =        (0        &lt;=        X)        And        (X        &lt;=        Command1.Width)        And        (0        &lt;=        Y)        And        (Y        &lt;=        Command1.Height)        '计算鼠标的移动是否在Command1里面<BR>If        MouseEnter        Then        '鼠标已经进入<BR>Me.Caption        =        "Mouse        In        Button!"<BR>SetCapture        Command1.hWnd<BR>Else        '鼠标已经离开<BR>Me.Caption        =        "Mouse        Out!"<BR>ReleaseCapture<BR>End        If<BR>End        Sub<BR><BR>

wmz 发表于 2004-6-30 14:40:00

你倒是蛮热心的,真是辛苦了,谢谢!

mikewolf2k 发表于 2004-6-30 19:14:00

挺不错的,对初学者很有帮助。楼主辛苦了!

liub1979 发表于 2004-7-7 21:45:00

good

洋葱老爹 发表于 2004-7-20 01:59:00

只对初学者很有帮助

jackgan 发表于 2004-9-1 10:21:00

谢谢

alin 发表于 2004-9-1 11:04:00

Well done mate!

RdHare 发表于 2004-9-6 04:06:00

谢谢楼主。

tjdxtm 发表于 2004-9-6 17:04:00

<b>不错,希望后面还有更多。</b>

cooolseee 发表于 2013-12-13 22:29:00

很基础的资料,也很实用
页: [1] 2
查看完整版本: Visual Basic编程问答集(一)很有帮助的