VB 版 (精华区)

发信人: xiangchu (天歌), 信区: VisualBasic
标  题: Visual Basic编程问答集(一)
发信站: 紫 丁 香 (Tue Aug 31 14:52:08 1999), 转信

□ 如何一行程序太长,查阅起来很麻烦,能不能换行?
   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

                                                            (待续)

--
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: 202.118.228.152]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.511毫秒