您的位置:寻梦网首页编程乐园VB 编程乐园VB问题全功略

VB问题全功略(16)

上一页(16)下一页

76、同一个 Form 中若要将 OptionButton 分组,该如何做?
77、VB 32-bits 之后的版本,无论用 Len 或是 LenB 都无法正确的计算中英文混合字串的长度,有没有解决的办法?
78、Visual Basic 程式开发完成后,可否把执行时相关的文档一并销售?
79、我想知道某一部电脑出现在 "网路上的芳邻" 时的名称,也就是"电脑名称",该如何做?
80、我想知道某一部电脑目前的 Login User 是谁,该如何做?

76、同一个 Form 中若要将 OptionButton 分组,该如何做?

在同一个 Container 中,只能放置一组 OptionButton,所以若要在一个 Form 中放置一组以上之 OptionButton 时,必须以不同之 Container 区隔。

而在 VB 中可当作 Container 的物件有 Form / PictureBox / Frame ...等。

77、VB 32-bits 之后的版本,无论用 Len 或是 LenB 都无法正确的计算中英文混合字串的长度,有没有解决的办法?

这是由于 VB 32-bits 都是采 Unicode,Unicode 的储存方式无论中英文字,均是以 2bytes 来储存,有两个方式可以解决:

解法1: '假设欲计算字串 str1 的长度
Dim str1 As String
Dim i As Long
Dim c As Long
Dim n As Long

For i = 1 To Len(str1)
    c = Asc(Mid(Str, i, 1))
    If c >= 0 And c < 128 Then
        n = n + 1 '计算英文
    Else
        n = n + 2 '计算中文
    End If
Next i
解法2: Lenb(Strconv("abcd中英文混合字efg", vbFromUnicode))

78、Visual Basic 程式开发完成后,可否把执行时相关的文档一并销售?

在下列条件下可以不须支付权利金便可以重制并散布 Run-time Modules (限于可执行文档、安装文档、ISAM 和Rebuild文档):

1.将 Run-time Modules 配合作为您的软件的一部份一同散布。
2.不使用微软的名称,标章或商标来行销您的软体。
3.附加一个您软件的有效著作权通知。
4.同意对微软或其供应商因为您软体的散布和使用所导致的请求、诉讼,包括律师费、赔偿、为微软或其供应商辩护使其不受损害。

79、我想知道某一部电脑出现在 "网路上的芳邻" 时的名称,也就是"电脑名称",该如何做?

其实出现在 "网路上的芳邻" 中的名称, 就是我们在 "控制面板" --> "网路" --> "个人资料" --> "电脑名称" , 要抓这个名称, 有好几个方法, 但有的比较复杂, 例如, 直接从注册表抓, 以下的方法则比较简单. (  VB4-32 以上)

请在声明区中放入以下声明 :

Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Public Function ComputerName() As String
Dim cn As String
Dim ls As Long
Dim res As Long

cn = String(1024, 0)
ls = 1024
res = GetComputerName(cn, ls)

If res <> 0 Then
ComputerName = Mid(cn, 1, InStr(cn, Chr(0)) - 1)
Else
ComputerName = ""
End If
End Function

程序中要使用时只要直接 call 即可.

例 : Msgbox "ComputerName=" & ComputerName

80、我想知道某一部电脑目前的 Login User 是谁,该如何做?

请在声明区中放入以下声明 :

Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Public Function UserName() As String
Dim cn As String
Dim ls As Long
Dim res As Long

cn = String(1024, 0)
ls = 1024
res = GetUserName(cn, ls)

If res <> 0 Then
UserName = Mid(cn, 1, InStr(cn, Chr(0)) - 1)
Else
UserName = ""
End If
End Function

程序中要使用时只要直接 call 即可.

例 : Msgbox "UserName=" & UserName

上一页(16)下一页