乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 184|回复: 9

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

[复制链接]

39

主题

89

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
245
发表于 2004-6-30 13:50:00 | 显示全部楼层 |阅读模式
□        如何一行程序太长,查阅起来很麻烦,能不能

VB的程序代码是允许
书写的,只要在每次
的最后一个字
符加上
字符“_”就可以了。例如:
Sub        PicMove()
Frm.Picture2.Left        =        Frm.Picture1.Left        +        _        ’加上

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

使用道具 举报

wmz

50

主题

247

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
447
发表于 2004-6-30 14:40:00 | 显示全部楼层
你倒是蛮热心的,真是辛苦了,谢谢!
回复

使用道具 举报

85

主题

1175

帖子

11

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1518
发表于 2004-6-30 19:14:00 | 显示全部楼层
挺不错的,对初学者很有帮助。楼主辛苦了!
回复

使用道具 举报

20

主题

80

帖子

7

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
160
发表于 2004-7-7 21:45:00 | 显示全部楼层
good
回复

使用道具 举报

2

主题

28

帖子

6

银币

初来乍到

Rank: 1

铜币
36
发表于 2004-7-20 01:59:00 | 显示全部楼层
只对初学者很有帮助
回复

使用道具 举报

2

主题

12

帖子

1

银币

初来乍到

Rank: 1

铜币
20
发表于 2004-9-1 10:21:00 | 显示全部楼层
谢谢
回复

使用道具 举报

16

主题

909

帖子

8

银币

中流砥柱

Rank: 25

铜币
973
发表于 2004-9-1 11:04:00 | 显示全部楼层
Well done mate!
回复

使用道具 举报

0

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
2
发表于 2004-9-6 04:06:00 | 显示全部楼层
谢谢楼主。
回复

使用道具 举报

12

主题

38

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
86
发表于 2004-9-6 17:04:00 | 显示全部楼层
不错,希望后面还有更多。
回复

使用道具 举报

14

主题

64

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2013-12-13 22:29:00 | 显示全部楼层
很基础的资料,也很实用
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-6-29 13:08 , Processed in 1.590435 second(s), 73 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表