vb6(visual basic)常用代码及说明收集 【快速复制本文链接】

    2022/3/10 11:17 | 2023/8/21/22:09
2,141 ° 来自:PC

vb6根据系统语言,控件显示不同文字的代码

Option Explicit
Private Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long
Private Sub Form_Load()
    Dim lcid As Long
    lcid = GetSystemDefaultLCID()
    Select Case lcid
        Case &H804 ' 简体中文
            Command1.Caption = "中国"
        Case &H404 ' 繁体中文(台湾)
            Command1.Caption = "中國"
        Case Else ' 其他语言
            Command1.Caption = "china"
    End Select
End Sub



VB6.0最简单代码实现中文简繁体转换

Private Declare Function LCMapString Lib "kernel32" Alias "LCMapStringA" (ByVal Locale As Long, ByVal dwMapFlags As Long, ByVal lpSrcStr As String, ByVal cchSrc As Long, ByVal lpDestStr As String, ByVal cchDest As Long) As Long
Private Sub Command2_Click() '简体与繁体转换
  Text2 = change(Text1, 1)
End Sub
Private Sub Form_Load()
  Text1.Text = "科杰在线pc354.com"
  'Text1.ForeColor = RGB(100, 0, 211)
End Sub
Public Function change(ByVal cString As String, ByVal nMode As Integer) As String
    Dim nLen As Long
    nLen = LenB(cString)
    change = Space(nLen)
    Select Case nMode
        Case Is = 0 '繁体转简体
            LCMapString &H804, &H2000000, cString, nLen, change, nLen
        Case Is = 1 '简体转繁体
            LCMapString &H804, &H4000000, cString, nLen, change, nLen
    End Select
End Function


替换字符串

Text1.Text = Replace(Trim(Text1.Text), "e", "")
d = Replace(Trim(d), "\\", "\")
d = Replace(Trim(d), "\WeChat Files\WeChat Files\", "\WeChat Files\")


替换字符串中带不带Trim的区别:带Trim表示会自动清除文本开头和结尾的空格后再替换字符

text1.text="  中华人民共和国  "
Text2.Text = Replace(Text1.Text, "中华", "中国")
Text3.Text = Replace(Trim(Text1.Text), "中华", "中国")


VB6鼠标可以随意拖动的窗体

Dim movesScreen As Boolean
Dim mousX As Integer
Dim mousY As Integer
Dim currX As Integer
Dim currY As Integer

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 1 Then
        movesScreen = True
        mousX = X
        mousY = Y
    End If
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If movesScreen Then
        currX = Form1.Left - mousX + X
        currY = Form1.Top - mousY + Y
        Form1.Move currX, currY
    End If
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    movesScreen = False
End Sub


VB6最大化、最小化命令

Me.WindowState = 0  '0为普通,1为最小,2为最大

当窗口大小化时发生事件
Private Sub Form_Resize() '

如果父窗体被最小化发生事件
If Form1.WindowState = vbMinimized Then


如何在VB中实现按ctrl+A后,全选文本框中的文字

Private Sub Text1_KeyPress(KeyAscii As Integer)
  If KeyAscii = 1 Then
   Text1.SelStart = 0
   Text1.SelLength = Len(Text1.Text)
  End If
End Sub
或者用这个

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
  If Shift = 2 And (KeyCode = Asc("a") Or KeyCode = Asc("A")) Then
    Text1.SelStart = 0
    Text1.SelLength = Len(Text1.Text)
  End If
End Sub



★文本框自动剔除常用符号及空格,只保留汉字及数字的VB代码

'数字0-9 的Ascii码是 48-57
'字母A-Z 的Ascii码是 65-90 小写字母是 97-122 (下面代码是使用Ucase函数转为大写,所以我97-122从缺)
'汉字 16进制区间 B0A1-F7FE B=66 F=70(下面代码是使用16进制码的第一位,其它英文字,数字与符号的16进制第一码不会在B-F之间)
'添加 Command1
Dim i%, h$, aa$, bb$
Private Sub Command1_Click()
aa = "科!@#杰!@#¥在@!@#@线"
bb = ""
For i = 1 To Len(aa)
h = Hex(Asc(Mid(aa, i, 1)))
If (Asc(Left(h, 1)) >= 66 And Asc(Left(h, 1)) <= 70) Or (Asc(Mid(UCase(aa), i, 1)) >= 65 And Asc(Mid(UCase(aa), i, 1)) <= 90) Or (Asc(Mid(UCase(aa), i, 1)) >= 48 And Asc(Mid(UCase(aa), i, 1)) <= 57) Then
bb = bb & Mid(aa, i, 1)
End If
Next i
MsgBox bb
End Sub

VB6的文本框只能输入数字和VB只能输入一小小数点的方法

Private Sub Text1_KeyPress ( KeyAscii As Integer )  
      If KeyAscii > =   Asc ( "0" )   And KeyAscii < =   Asc ( "9" )   Or KeyAscii   =   8 Or KeyAscii   =   Asc ( "." )   Then
            If KeyAscii   =   Asc ( "." )   And InStr ( 1, Text1.Text, ".", vbTextCompare )   > 0 Then
                  KeyAscii   =   0
            End If
            If Text1.SelStart > =   Len ( Text1.Text )   - 2 And _
                  InStr ( 1, Text1.Text, ".", vbTextCompare )   > 0 And _
                  Len ( Text1.Text )   - InstrRev ( Text1.Text, ".", Len ( Text1.Text ) , vbTextCompare )   > =   2 And _
                  KeyAscii <> 8 Then
                   
                  KeyAscii   =   0
            End If
      Else
            KeyAscii   =   0
      End If
End Sub

更强大更实用的限制文本框只能输入特定字符的方法


调用方法

http://pan.baidu.com/share/link?shareid=214382&uk=1711549925


★VB文本框保留小数点后3位

x = Text2.Text
Text1.Text = Format(x, "0.000")

★vb窗口置顶代码

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Const SWP_NOMOVE = &H2 '不更动目前视窗位置
Const SWP_NOSIZE = &H1 '不更动目前视窗大小
Const HWND_TOPMOST = -1 '设定为最上层
Const HWND_NOTOPMOST = -2 '取消最上层设定
Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE

Private Sub Form_Load()
If App.PrevInstance = True Then End '防止程序重复运行
SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS '窗口置顶
End Sub

★visual Basic 6 如何给窗体窗口加上透明度

'窗口透明度声明开始
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Private Const WS_EX_LAYERED = &H80000
Private Const GWL_EXSTYLE = (-20)
Private Const LWA_ALPHA = &H2
'窗口透明度声明结束
'窗体透明度开始
Private Sub Form_Activate()
On Error Resume Next
    For i = 0 To 200 Step 5     '0-200是窗体的透明度.从0开始到150.渐渐出现窗体.步长为5
        SetLayeredWindowAttributes Me.hwnd, 0, i, LWA_ALPHA
        DoEvents
    Next i
End Sub   '窗体透明度结束


Private Sub Form_Load()
'窗体透明度开始
 Dim rtn As Long
    rtn = GetWindowLong(Me.hwnd, GWL_EXSTYLE)
    rtn = rtn Or WS_EX_LAYERED
    SetWindowLong Me.hwnd, GWL_EXSTYLE, rtn
    SetLayeredWindowAttributes Me.hwnd, 0, 0, LWA_ALPHA
'窗体透明度结束
End Sub

★用vb获取一个文件夹中的文件数量
Private WithEvents s As FileListBox
Private Sub Command1_Click()
Text1.Text = "c:\"
    Set s = Controls.Add("VB.FileListBox", "File1")
    With s
        .Visible = False
        .Path = s
        .ReadOnly = True
        .Hidden = True
        .System = True
    End With
    Text1.Text = s.ListCount
    End Sub


★用vb访问网址的方法

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Public Sub pc354()
webpc354 = Text1.Text
Call ShellExecute(Me.hwnd, "open", webpc354, "", "", SW_SHOW)
End Sub
Private Sub Command1_Click()
pc354
End Sub

VB点击文本框自动全选文本

Text1.SelStart = 0
Text1.SelLength = Len(Text1)

怎样计算文件夹下txt文件的个数?

'添加Text1 Command1
'本代码不侦测下一层的文件夹,就只搜你在text1里输入的路径.
Private Sub Form_Load()
 Text1.Text = "c:\"
End Sub
Private Sub Command1_Click()
 On Error Resume Next
 Dim sSave As String, Ret As Long, r As Long, rtn As Long, kk As Long
 Dim fol, fso, fil, fils, s, f, fldr
 Set fso = CreateObject("Scripting.FileSystemObject")
 Set fldr = fso.GetFolder(Text1.Text)
 Set fils = fldr.Files
 kk = 0
 Me.Cls
 For Each fil In fils
 s = s & fil.Name
 aa = midstr & "\" & fil.Name
 If UCase(Right(aa, 3)) = "TXT" Then
 songname = aa
 i = InStrRev(songname, "\")
 If i > 0 Then
 bb = Mid(songname, i + 1) ' 获取文件名
 Print bb
 kk = kk + 1
 End If
 End If
 Next
 MsgBox "共有" & Str(kk) & " 个.txt的文件"
End Sub

批量给控件组定义颜色

Private Sub Form_Load()
For ii = 1 To 88
Text1(ii).BackColor = vbWhite
Next
End Sub

将文本文件加载到文本框控件数组中

'建一个按钮,一个文本框,然后复制这个文本框成数组,文本内容有几行,就要复制几个文本框
Private Sub Command1_Click()
Open "c:\1.txt" For Input As #1
Dim i As Integer, s As String
While Not EOF(1)
  Line Input #1, s
  i = i + 1
  Text1(i).Text = s
Wend
Close #1
End Sub

在窗体任意位置点鼠标左键可以拖动窗体

Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long
Const WM_NCLBUTTONDOWN = &HA1
Const HTCAPTION = 2
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim ReturnVal As Long
    X = ReleaseCapture()
    ReturnVal = SendMessage(Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0)
End Sub

程序窗体没有标题栏,却能在任务栏显示程序名称的方法

  把VB窗体fomr1的boderstyle属性设置为0-none,同时把form1的showintaskbar属性设置为TRUE

让按钮不再显示出难看的虚线

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Const WM_KILLFOCUS = &H8 '使按钮失去焦点
Private Sub Form_Activate() 
  Command1_Click
End Sub
Private Sub Command1_Click()
  MsgBox "科杰在线pc354.com"
  SendMessage Command1.hwnd, WM_KILLFOCUS, 0, 0 '使按钮失去焦点
End Sub

VB在退出后可以自动保存窗体大小和位置,下次打开时保持

Private Sub Form_Load()
    Me.Width = GetSetting(App.Title, Me.Name, "Width", 7200)
    Me.Height = GetSetting(App.Title, Me.Name, "Height", 6300)
    Me.Top = GetSetting(App.Title, Me.Name, "Top", 100)
    Me.Left = GetSetting(App.Title, Me.Name, "Left", 100)
   
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Call SaveSetting(App.Title, Me.Name, "Width", Me.Width)
    Call SaveSetting(App.Title, Me.Name, "Height", Me.Height)
    Call SaveSetting(App.Title, Me.Name, "Top", Me.Top)
    Call SaveSetting(App.Title, Me.Name, "Left", Me.Left)
End Sub


vb 鼠标进入窗体和离开窗体的事件怎么写?

Private Declare Function SetCapture Lib "user32" (ByVal hwnd As Long) As Long

Private Declare Function ReleaseCapture Lib "user32" () As Long

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
 If 0 <= X And X <= Form1.Width And 0 <= Y And Y <= Form1.Height Then
  SetCapture Form1.hwnd '已进入
  Label1.Caption = "鼠标进入" '这里就是鼠标进入后触发
  Else
  ReleaseCapture '这里就是离开
  Label1.Caption = "鼠标离开"'这里是鼠标离开后触发
  End If
End Sub


vb 打开文件(图片、office文档等)


Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Sub Command1_Click()
SW_SHOWNORMAL = 1
Call ShellExecute(Me.hwnd, "open", "d:\a.png", vbNullString, vbNullString, SW_SHOWNORMAL)
End Sub

注:   Shell "explorer.exe /select, " & “d:\”, vbNormalFocus  '只能打开文件夹、bat、exe等文件


vb 判断文件有没有被打开并执行相应动作

Private Sub Command1_Click()
    On Error Resume Next
    Err.Clear
    If Dir("d:\a.xlsx") <> "" Then
        Name "d:\a.xlsx" As "d:\a2.xlsx"
    End If
    If Err.Number <> 0 Then
        Text1.Text = "文件a.xlsx已打开"
    Else
        Text1.Text = "文件a.xlsx已关闭"
        Name "d:\a2.xlsx" As "d:\a.xlsx"
    End If
End Sub


VB判断鼠标是否在窗体外最简单的代码

Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Sub Form_Load()
    Timer1.Interval = 100
End Sub
Private Sub Timer1_Timer()
    If GetActiveWindow() = Me.Hwnd Then
        Me.Caption = "在"
    Else
        Me.Caption = "不在"
    End If
End Sub




本文为蝌索窝网(科杰在线)pc354.com原创文章,欢迎转载,但请标明出处,谢谢

标题:vb6(visual basic)常用代码及说明收集 链接:http://pc354.com/blog/Article.asp?443.html


上一篇: 使用油猴脚本破解某度网盘下载限速
下一篇: 合肥“1+X+1”课后服务新模式来了
您可能还喜欢这些:

亲,沙发正空着,还不快来抢?

欢迎在下面留言

记住我的个人信息
Back to Top