精华内容
下载资源
问答
  • VB中的ComboBox组合框(ComboBox)作为VB编程中选择性控件的重要组成部分,其在VB实际项目中有着非常广的应用。但是,好多朋友却对它的使用不太熟练,所以今天专门整理编写一下。组合框属性属性说明Name组合框控件的...

    大家好,今日立秋,秋天的第一个节气已经来了。

    学习存在于现在,却深深的影响着我们的未来。不学无术,所以说如果要让自己更上一层楼,就必须不断努力才行。

    VB中的ComboBox

    组合框(ComboBox)作为VB编程中选择性控件的重要组成部分,其在VB实际项目中有着非常广的应用。

    但是,好多朋友却对它的使用不太熟练,所以今天专门整理编写一下。

    8d472b256b7a3e591ea5f87caacfca03.png

    组合框属性

    属性

    说明

    Name

    组合框控件的名称

    Appearance

    是否用立体效果绘制,取值为:
     0 平面
     1 3D(立体)

    BackColor

    设置背景颜色,可从弹出的调色板选择。

    CauseValidation

    该控件获得焦点时,失去焦点的控件的Validate事件是否发生。取值为:
     True 发生
     False 不发生

    DataField

    获得或设置一个值,将控件绑定到当前记录的一个字段

    DataFormat

    返回数据格式对象,用于该部件的可绑定性(打开属性页)

    DataMember

    获得或设置一个值,为数据连接描述数据成员

    DataSource

    设置一个数值,指出数据控件通过它将当前控件绑定到数据库

    DragIcon

    该对象在拖动过程中鼠标的图标

    DragMode

    该对象的拖动模式,取值为:
     0 Manual(手动)
     1 Automatic(自动)

    Enabled

    用于设定是或对事件产生响应,取值为:True 可用 False 不可用,在执行程序时,该对象用灰色显示,并且不响应任何事件

    Font

    字型,可从弹出的对话框选择字体,大小和风格

    ForeColor

    前景颜色,可从弹出的调色板选择。

    Height

    组合框控件的高度

    HelpContextID

    指定一个对象的缺省帮助文件上下文标识符

    IMEMode

    获得或设置输入方法编辑器的当前操作模式。取值为:
     0 No Operation
     1 ON
     2 OFF
     3 DISABLE
     4 DBCS HIRAGANA
     5 DBCS KATAKANA
     6 SBCS KATAKANA
     7 DBCS ALPHABET
     8 SBCS ALPHABET
     9 DBCS HANGUL
     10 SBCS HANGUL

    Index

    在对象数组中的编号

    IntegralHeight

    是否自动调整自身大小(获得或设置一个值,指出控件是否显示部分项目)。取值为:
     True
     False

    ItemData

    数据列表(获得或设置组合框控件中每一个项的指定额管理号)

    Left

    距离容器左边框的距离

    List

    项目列表(获得或设置控件的列表部分中包含的项)

    Lokked

    决定控件是否可以编辑,取值为:
     True 锁住组合框的Text属性内容,只能显示,不能通过键盘作任何更改,成为只读文本。
     False 能通过键盘修改组合框的Text属性内容

    MouseIcon

    MousePointer=99时,设定一个自定义的鼠标图标

    MousePointer

    设置鼠标样式

    OLEDragMode

    获得或设置该对象是否能作为OLE拖/放源,以及该进程是自动启动,还是在程序控制下启动。取值为:
     0 Manual(手动)
     1 Automatic(自动)

    OLEDropMode

    获得或设置该对象是否能作为一个OLE放下目标。取值为:
     0 None(无)
     1 Manual(手动)

    RightToLeft

    文本书写是否自左向右。取值为:
     True
     False 自右向左

    Sorted

    是否以字母顺序排列项目。取值为:
     True或False

    Style

    获得或设置一个值,决定控件类型及列表框部分的行为(对象的外观形式)。取值为:
     0 下拉式组合框(系统默认值)
     1 简单式组合框
     2 下拉列表式组合框

    TabIndex

    获得或设置此对象在父窗体的编号(父窗体中对象响应Tab键的顺序)

    TabStop

    设置是否可以用"Tab"键选取此对象。取值为:
     True 可以
     False 不可以

    Tag

    存储程序所需的附加数据

    Text

    选中的项目内容

    ToolTipText

    设置该对象的提示行

    Top

    距容器顶部边界的距离

    Visible

    设置此对象的可见性, 取值为:
     True 该对象可见
     False 该对象不可见

    WhatsThisHelpID

    获得或设置与对象相关联的上下文号

    Width

    设置该对象的宽度

    组合框的三种样式图

    d8cca2f48e243ff4355e84a9a178793b.png

    上图分别对应Style属性为0、1、2时的样式。

    组合框由一个列表框与一个文本框组合形成。

    组合框有三类,由Style属性决定。

    Style属性:

    0:下拉式组合框的列表框可以打开或关闭,文本框的中内容可以进行编辑。它默认是text中的内容,可响应Click、Change和Dropdown事件

    1:简单组合框的列表框一直保持显示,文本框内容可以编辑。可响应Click、 DblClick和Change事件。

    2:下拉式列表框的列表框部分可以打开或关闭;文本框的内容不能编辑,只是反映列表框中的选中项的内容。响应Click和Dropdown事件

    7fdda3757b6a167e52e0729bc2eee292.png

    需要注意的是:组合框无MultiSelect属性,不支持多选,也无SelCount、Selected属性。

    除此之外,组合框支持列表框与文本框的大多数常用属性。

    如:

    (对应于文本框) SelLength、SelStart、 SelText 、 Text ;

    (对应于列表框) ListIndex 、NewIndex 、Sorted 、IntegralHeight 、ItemData 、TopIndex、List 、ListCount此属性值与Style属性的设置有关。

    因为组合框可以看作是文本框与列表框的组合,因此它具有二者的事件与方法。

    AddItem

    Clear

    RemoveItem

    Move方法与列表框相同

    Change事件与文本框相同;

    Click、DblClick、Scroll事件与列表框相同。

    组合框不支持复选框,因此无ItemCheck事件。

    7acb34b26f3e1b85bd63f2770805dfef.png

    实例

    使用组合框控件,编写代码来实现下图效果。

    41cfc6c8dfc0973a8c284eb506688936.png

    Private Sub Cb1_Click()

      Label3.FontSize = Cb1.Text   '根据组合框中选定的值设置标签的字号

    End Sub

    Private Sub Cb2_Click()

      Label3.FontName = Cb2.Text   '根据组合框中选定的值设置标签的字体

    End Sub

    End

    大家在平时的VB学习中有问题

    可以添加下图小编微信号在线答疑

    776b03c1653290465d27a35e3e17c1ed.png

    展开全文
  • VB程序设计》网络辅助教学平台并投入使用;在设计理念上提出了案例程序──任务驱动教学法,并在教学过程中得到了检验,取得了良好的教学效果。论文首先介绍了设计和开发网络辅助教学平台的理论基础以及相关技术,并在...
  • 经常有网友询问如何免费使用Anole控件,其实方法很简单,只要您使用代码动态建立控件就可以不弹出注册对话框了。动态创建控件主方法与VB的标准方法一致,这在MSDN中也有相应的说明。需要指出的是,这不是一个...

      经常有网友询问如何免费使用Anole控件,其实方法很简单,只要您使用代码动态建立控件就可以不弹出注册对话框了。动态创建控件主方法与VB的标准方法一致,这在MSDN中也有相应的说明。需要指出的是,这不是一个BUG,而是作者故意留下的一个后门,以方便学生或自由软件开发者。

      下面我通过一个例子 给大家演示一下:

      这个例子演示了如何动态建立 ComboBox 控件,并设置 Sort 和 Style 属性。工程需要一个窗体,三个Lable控件。

      Option Explicit

      Private WithEvents acComboBox1 As acComboBox

      Private Sub acComboBox1_SelectedIndexChanged(ListIdx As Long)
        '' 注意,这里使用了 SelectedIndexChanged 事件
        Label1.Caption = "Text: " & acComboBox1.List(ListIdx)
        Label2.Caption = "Listindex: " & acComboBox1.ListIndex
        Label3.Caption = "ItemData: " & acComboBox1.ItemData(ListIdx)

      End Sub

      Private Sub Form_Load()
        '' 动态建立控件
        Set acComboBox1 = Me.Controls.Add("AnoleComboBox.acComboBox", "acComboBox1")
        
        With Me!acComboBox1
          .Visible = True
          .Width = 3000
          .Height = 400
        End With

        Dim i As Long

        For i = 0 To 50
          acComboBox1.AddItem "项目" & CStr(i)
          acComboBox1.ItemData(acComboBox1.NewIndex) = i
        Next


        '' 注意,下面的属性是在运行时改变的,现在您应该可以看到它的优势了
        acComboBox1.Sorted = True
        acComboBox1.Style = vbComboDropdownList

      End Sub

    展开全文
  • 下面我们来讲讲,具体如何实现!.. 实现以上框架用到了一位大牛的无注册DLL和网上流传的子类化SSTAB子类化模块! 首先我们来讲讲,无需注册的DLL文件,一直以为VB都被认为是无法做出无需注册的DLL文件,但是通过修...

    使用最简单的控件,做出树型菜单与多标签互动。所有加载,关闭,的子窗子。均只使用了SetCapture,SendMessage 等一些常用操作窗体的API

    下面我们来讲讲,具体如何实现!..

    实现以上框架用到了一位大牛的无注册DLL 和网上流传的子类化SSTAB子类化模块!

    首先我们来讲讲,无需注册的DLL 文件,一直以为VB 都被 认为是无法做出无需注册的DLL文件,但是通过修改OBJ VB 生成EXE 时产生的链接文件修改来实现效果,这位大牛,做一款工具,可以在生成时直接导出

    函数,这样我们就要吧像声明系统API 一样,来直接调用!
    工具展示

    1.无窗体DLL

    建立一个模块。写入如下内容 我们用一段连接server SQL 的模块。来演示


    Private Sub Main():  End Sub
    Private Function DllMain(ByVal hModule As Long, _
                           ByVal ul_reason_for_call As Long, _
                           ByVal lpReserved As Long) As Long
       DllMain = 1
    End Function

    在新一个模块。输入如下内容(SQL连接模块)

    '连接SQL的模块
    Public conn As ADODB.Connection
    Public rs As ADODB.Recordset
    Public iStm As ADODB.Stream
    Public addFlag As Boolean
    Public cmd As ADODB.Command
    Public param As ADODB.Parameter
    Public Function OpenCn(ByVal Cip As String, ByVal kl As String, ByVal users As String, ByVal pw As String) As Boolean '连接模块 填写数据库等信息

    Dim mag As String
    On Error GoTo strerrmag
    Set conn = New ADODB.Connection
    conn.ConnectionTimeout = 2
    conn.Provider = "sqloledb"
    conn.Properties("data source").Value = StrConv(Cip, vbUnicode)     '服务器的名字
    conn.Properties("initial catalog").Value = StrConv(kl, vbUnicode)           '库名
    'conn.Properties("integrated security").Value = "SSPI"      '登陆类型
    conn.Properties("user id").Value = StrConv(users, vbUnicode)   'SQL库名
    conn.Properties("password").Value = StrConv(pw, vbUnicode)  '密码
    'sql = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;password=;Initial Catalog=pubs;Data Source=127.0.0.1"    '如果不用这个模块也行可以,这一句便是常用的引擎。
    'conn.ConnectionString = sql
    conn.Open
    OpenCn = True
    If conn.State = 1 Then addFlag = True
    Exit Function
    strerrmag:
         addFlag = False
                 If Err.Number <> 0 Then
         MsgBox Err.Number & " " & Err.Description, 48, "错误"
     End If
         Exit Function      '连接错误消息
    End Function

    Public Function rsado()
    Set rsado = rs
    End Function

    '关闭数据库,释放连接
    Public Sub cloCn()
    On Error Resume Next
    If conn.State <> adStateClosed Then conn.Close
    Set conn = Nothing
    End Sub

    Public Function openRs(ByVal strsql As String) As Boolean      '连接数据库记录集
    Dim mag As String
    Dim rpy As Boolean
    On Error GoTo strerrmag
         Set rs = New ADODB.Recordset
         If addFlag = False Then rpy = True
           With rs
         .ActiveConnection = conn
         .CursorLocation = adUseClient
         .CursorType = adOpenKeyset
         .LockType = adLockOptimistic
         .Open StrConv(strsql, vbUnicode)
         End With
         addFlag = True
         openRs = True
         'End        '将记录集给rs
         Exit Function
    strerrmag:
         openRs = False
              If Err.Number <> 0 And InStr(1, Err.Description, "ERRO556") = 0 Then
             MsgBox Err.Number & " " & Err.Description, 48, "提示"
     End If
         'Exit Function '连接错误消息
    End Function
    Public Function opencmd(ByVal text As String, ByVal texttype As Integer, ByVal blbm As String, ByVal blbz As String) As Boolean
    Dim mag As String
    Dim rpy As Boolean
    Dim tf
    Dim us As Integer
    On Error GoTo strerrmag
    Set cmd = New ADODB.Command
    Set rs = New ADODB.Recordset
    conn.CursorLocation = adUseClient
     If addFlag = False Then rpy = True

     With cmd
         .ActiveConnection = conn
       Select Case StrConv(texttype, vbUnicode)
         Case 1:
         .CommandType = adCmdText
         Case 2:
         .CommandType = adCmdTable
         Case 3:
         .CommandType = adCmdStoredProc
       End Select
       .CommandText = StrConv(text, vbUnicode)
       .NamedParameters = True
       If Len(StrConv(blbm, vbUnicode)) > 0 Then
       tf = Split(StrConv(blbm, vbUnicode), "~")
     .Parameters.Append .CreateParameter("@bmz", adVarChar, adParamInput, 200, tf(0))
     .Parameters.Append .CreateParameter("@xgz", adVarChar, adParamInput, 20000000, tf(1))
      .Parameters.Append .CreateParameter("@jlr", adVarChar, adParamInput, 200, tf(2))
       .Parameters.Append .CreateParameter("@jlsjt", adVarChar, adParamInput, 200, tf(3))
        .Parameters.Append .CreateParameter("@ID", adVarChar, adParamInput, 200, tf(4))

       End If
         Set rs = .Execute()
         End With
         addFlag = True
         opencmd = True
    strerrmag:
         opencmd = False
         If Err.Number <> 0 Then
         MsgBox Err.Number & " " & Err.Description, vbQuestion, "发生了一个错误!", 48, "提示"
     End If
     Set tf = Nothing
    End Function

    Public Sub cloRs()
    On Error Resume Next
    If rs.State <> adStateClosed Then rs.Clone
    Set rs = Nothing '释放记录集
    End Sub

    ‘’--以上有六个过程。opencn 连接数据。OPENRS 执行SQL 语句。OPENCMD 执行存储过程,带参数。CLOSCN CLOSrS 关闭连接和释放资源,还有RSADO  要注意上面接收时使用的StrConv(strsql, vbUnicode) 。不然会乱码

     

    在安装大牛马的工具后。生成DLL 时,就会出现如图“

    我们选中所需要导出的函数后,点击确认

    此时,DLL 文件就制作好,我们如何来使用它呢。看下文

    Private Declare Function OpenCn Lib "Std_DLL.dll" (ByVal Cip As String, ByVal kl As String, ByVal users As String, ByVal pw As String) As Boolean '连接数据库
    Private Declare Function opencmd Lib "Std_DLL.dll" (ByVal text As String, ByVal texttype As Integer, ByVal blbm As String, ByVal blbz As String) As Boolean '传参查询,执行存储过程
    Private Declare Sub cloRs Lib "Std_DLL.dll" ()
    Private Declare Sub cloCn Lib "Std_DLL.dll" ()
    Private Declare Function rsado Lib "Std_DLL.dll" ()yVal text As String, ByVal texttype As Integer, ByVal blbm As String, ByVal blbz As String) As Boolean '传参查询,执行存储过程

    像声明系统的API 一样,写上名称和参数类型即可。(最注要的是,此时你会发现,此DLL 是无需用REGSVR32 来注册的,放在程序目录中,或是丢在SYSTEM32 中就可以直接使用了)

    运行效果如下图

    1,当然能生成DLL 无窗体,也可以DLL带窗体,只是需要在处理下!

    打开工程,新建模块。

    输入以下内容

    Option Explicit

    Private Declare Function CloseHandle Lib "Kernel32" (ByVal hObject As Long) As Long
    Private Declare Function OpenProcess Lib "Kernel32" (ByVal dwDesiredAccess As Long, _
    ByVal bInheritHandle As Long, _
    ByVal dwProcessId As Long) As Long
    Private Declare Function ReadProcessMemory Lib "Kernel32" (ByVal hProcess As Long, _
    ByVal lpBaseAddress As Long, _
    ByRef lpBuffer As Any, ByVal nSize As Long, _
    ByRef lpNumberOfBytesWritten As Long) As Long
    Private Declare Function GetCurrentProcessId Lib "Kernel32" () As Long
    Private Declare Function SetErrorMode Lib "Kernel32" (ByVal wMode As Long) As Long
    Private Declare Function VBDllGetClassObject Lib "MSVBVM60.dll" (g1 As Long, _
    g2 As Long, ByVal g3_vbHeader As Long, _
    REFCLSID As Long, pREFIID As Any, ppv As Long) As Long


    Private Const SEM_NOGPFAULTERRORBOX As Long = 2&
    Private Const PROCESS_VM_READ As Long = 16&

    Private m_lMainThread As Long
    Private m_lMainHandle As Long
    Private m_lFakeHeader As Long

    ' - - - - - - - - - - - - - - -
    Private Sub Main(): End Sub ' 不要修改或删除这行 !!!
    ' - - - - - - - - - - - - - - -

    Private Function MainInit(ByVal hMod As Long, ByVal hAppInst As Long) As Long
    Dim aGUID(15) As Byte
    Dim lDummy As Long
    Dim lRetVal As Long

    m_lMainHandle = hMod
    m_lFakeHeader = GetFakeHeader
    Call SetErrorMode(SEM_NOGPFAULTERRORBOX)
    If (m_lFakeHeader) Then
    aGUID(0) = 1
    aGUID(8) = 192
    aGUID(15) = 70
    Call VBDllGetClassObject(hMod, lDummy, m_lFakeHeader, lDummy, aGUID(0), lDummy)
    lRetVal = 0&
    Else
    lRetVal = -1&
    End If
    MainInit = lRetVal
    End Function

    Private Function GetFakeHeader() As Long
    Dim bData(1023) As Byte
    Dim sFakeFlag As String
    Dim lDataPnt As Long
    Dim lhProc As Long
    Dim lRetVal As Long

    sFakeFlag = ChrW$(16982) & ChrW$(8501)
    lDataPnt = m_lMainHandle
    lhProc = OpenProcess(PROCESS_VM_READ, 0&, GetCurrentProcessId)
    If (lhProc) Then
    Do
    If (ReadProcessMemory(lhProc, lDataPnt, bData(0), 1024&, 0&) = 0&) Then lRetVal = 0&: Exit Do
    lRetVal = InStrB(1&, bData, sFakeFlag)
    If (lRetVal) Then lRetVal = lDataPnt + lRetVal - 1&: Exit Do
    lDataPnt = 1020& + lDataPnt
    Loop
    Call CloseHandle(lhProc)
    End If
    GetFakeHeader = lRetVal
    End Function

    按照生成以上DLL 的方式,生成DLL文件即可

    在自己的工作中,加上以上DLL 文件API 声明

    Option Explicit

    Private Declare Function MainInit Lib "DLL_Init" (ByVal hMod As Long, ByVal hAppInst As Long) As Long
    Private mlHModule As Long

    Private Sub Main(): End Sub

    Private Function DllMain(ByVal hModule As Long, _
    ByVal ul_reason_for_call As Long, _
    ByVal lpReserved As Long) As Long
    mlHModule = hModule
    DllMain = 1
    End Function

    Private Sub AABCTY15(ByVal hInst As Long, ByVal tf As String, ByVal yst As Integer, zdyzd As String)
    Call MainInit(mlHModule, hInst) '必须!!!
    cz = StrConv(tf, vbUnicode) '获取数据连接
    ys = StrConv(yst, vbUnicode)
    selects = StrConv(zdyzd, vbUnicode)
    Form2.Show
    End Sub

    如下图

    在主工程就,你就可以使用

    Private Declare Sub AABCYTP15 Lib "AABO.dll" (ByVal hInst As Long, ByVal user As String, ByVal langit As String)  'DLL连接模块

     Call AABCYTP15(App.hInstance, jsq, yyzs) ‘调用DLL窗体文件

    回到正题。我们实现了DLL窗体和无DLL窗体后在来谈谈SSTAB 的子类化

    源码我就不贴了。最后面有该文中所提到的事例下载。

    其实SSTAB 并不适合来做导H条,因为,即例是子类化后,在SSTAB 生成多个标签后也不能,指定标签删除。只能选择隐藏。可能我技术不行

    例:如现在生成的SSTAB五个标签。1,2,3,4,5 你只能按顺序删除标签。也就是先删除5 然后删除4 不能先删除0或是1.

    最后因为前面做了很多东西,不想在去改,就用到了隐的方法。网上流传对SSTAB 子类化的模块。也没有针对这个做处理

    不过我分享的已以修复了这些问题。加上了一些自绘。和图标功能

    所以大家如果想做好像的导H条,可以使用PICTURE 来。效果一样,而且更好控制

    -------------------------

    话太多了。最后分享下,以上代码的源文件吧

    http://pan.baidu.com/s/1geK2Arx

    密码:bb4m

    转载于:https://www.cnblogs.com/XTHH/p/6145003.html

    展开全文
  • vb控件开发 开发ocx

    热门讨论 2011-02-28 16:12:16
    如何使用VB控件Commom Dialog 59 , 59.txt 如何用VB6写COM组件(二) 60 , 60.txt 如何用VB6写COM组件(一) 61 , 61.txt 如何在VB中使用Delphi的控件 62 , 62.txt 如何在运行时动态增加控件 63 , 63.txt 显示和隐藏...
  • VB编程方法点滴

    2002-06-25 09:58:00
    一、如何利用数据库数据向组合框中添加例表项向组合框中添加例表项,一般我们采用两种办法。一是在设计阶段通过List 属性来添加。二是通过在程序中直接使用AddItem “字符串”方法添加。象下例向组合框cmbTitle中...
      
    

    VB编程方法点滴

    本人从事VB的教学与编程工作,在教学和工作中使用到了VB的编程的一些简单技巧想和初学者共勉。

    一、如何利用数据库数据向组合框中添加例表项

    向组合框中添加例表项,一般我们采用两种办法。一是在设计阶段通过List 属性来添加。二是通过在程序中直接使用AddItem “字符串”方法添加。象下例向组合框cmbTitle中添加数据就是此法。

    With cmbTitle

            .Clear

            .AddItem "校长"

            .AddItem "副校长"

            .AddItem "主任"

            .AddItem "秘书"

            .AddItem "总管"

            .AddItem "干事"

            .AddItem "其他"

            .ListIndex = 0

    End With

    下面要谈的是我们有一个数据库,想把此数据库的某个字段添加到一个组合框中如何做法。我们可以建立一个过程如LoadDataToCombo,有三个参数一个是cmb,另一个是sTable,第三个是sField。其中cmb是要向其添加的组合框,sTable是要向组合框添加数据的数据库,sField是要向组合框添加的字段。实现方法见下程序。

    Private Sub LoadDataToCombo(ByRef cmb As ComboBox, ByVal sTable As String, ByVal sField As String)

        cmb.Clear

        Dim rs As New ADODB.Recordset

        rs.Open "SELECT " & sField & " FROM " & sTable, cn.ConnectionString, adOpenKeyset, adLockReadOnly

        While Not rs.EOF

            cmb.AddItem rs.Fields(sField).Value

            rs.MoveNext

        Wend

        rs.Close

        Set rs = Nothing

        If cmb.ListCount > 0 Then cmb.ListIndex = 0

    End Sub

    例把Manager 数据库中的ManagerName字段添加到cmbMan中可以用如下命令调用。

    LoadDataToCombo cmbMan, "Manager", "ManagerName"

    二、在VB中实现数据库表格打印的方法

    方法一:在工程菜单上,单击添加 Data Enviroment向工程中添加一个设计器。单击设计器选项卡。并单击数据环境把设计器添加到菜单上。右键单击“Connection1”图标,然后单击添加命令显示Command1对话框。同时改变其属性,添加连接,将数据库表格连接到Command1上。

    工程菜单上,单击添加 Data ReportVisual Basic 将把它添加到您的工程中。单击设计器选项卡,并单击Data Report把设计器添加到菜单上。在属性窗口上,单击数据源,然后单击相应的命令。然后单击DataMember并单击Customers 从数据环境设计器中,把OrderDate字段(在Orders命令下)拖到细节Orders_Detail部分。同时在细节部分添加一些横线和竖线即可。具体细节可以参照MSDN中“创建一个简单数据报表”一节。

    方法二:实际上我们可以有更直接的方法,就是利用Printer对象的Print 方法,同时利用区位码中的制表符号和TAB函数更灵活的实现数据库表格的打印。下面是一个简单例子,可参考之。

    Private Sub cmdprint_Click()

    Dim n As Integer

    Dim rs As New ADODB.Recordset

    rs.Open "SELECT * FROM jggz", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:/jggz/jggz.mdb;Persist Security Info=False", adOpenStatic, adLockPessimistic

    n = 0

    rs.MoveFirst

    Form1.Print "┌────┬────┐"

    While Not rs.EOF

        Printer.Print "" & rs.Fields("姓名").Value; Tab(11); ""; rs.Fields("课时工资"); Tab(21); ""

       

        rs.MoveNext

        n = n + 1

        If n / 5 = Int(n / 5) Or rs.EOF Then

            Printer.Print "└────┴────┘"

            Printer.Print "┌────┬────┐"

        Else

            Printer.Print "├────┼────┤"

        End If

    Wend

    Printer.Print "└────┴────┘"

    rs.Close

    End Sub

    附件1:制表符号区位对照

    区位

    0904

    0906

    0916

    0920

    0924

    0928

    0932

    0940

    0948

    符号

    区位

    0956

    0964

    0905

    0907

    0919

    0923

    0927

    0931

    0939

    符号

    区位

    0947

    0955

    0963

    0979

    0936

    0944

    0951

    0959

     <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

    符号

     

    三、利用WinSock实现简单网络编程

    利用WinSock可以实现TCPUDP协议通信。我们知道,网络通信要找三个地址即网络地址、主机地址、服务地址(端口号)。通过机器的IP地址和子网掩码计算可以得到网络和主机地址。而每个机器的服务地址(端口号)有65536个。下面就谈一下怎样利用WinSock实现网络通信。

    服务器端程序编写:建立一个窗体,添加一个Text控件用于存放发送信息的内容、一个命令按钮(cmdSend)用于发送信息、两个WinSock控件(sckListen,sckServer),一个用于监听、一个用于接受。把sckServerLocalport 属性设为8001(一定不要和sckListen的端口号一样即可)。

    程序代码如下:

    Private Sub cmdSend_Click()

        sckServer.SendData Text1.Text

    End Sub

     

    Private Sub Form_Load()

        sckListen.LocalPort = 8000

        sckListen.Listen

    End Sub

     

    Private Sub sckListen_ConnectionRequest(ByVal requestID As Long)

        sckServer.Accept requestID

        cmdSend.Enabled = True

    End Sub

     

    Private Sub sckServer_DataArrival(ByVal bytesTotal As Long)

        Dim s As String

        sckServer.GetData s, vbString, bytesTotal

        MsgBox s

    End Sub

    工作站端程序编写:建立一个窗体,添加一个Text控件用于存放发送信息的内容、一个命令按钮(cmdSend)用于发送信息、一个WinSock控件(sckClient)用于接受信息。把sckClientLocalport 属性设为8002

    程序代码如下:

    Private Sub cmdSend_Click()

        sckClient.SendData Text1.Text

    End Sub

     

    Private Sub Form_Load()

        Dim sIP As String

        sIP = InputBox("Please Input IP address", sckClient.LocalIP)

        sckClient.Connect sIP, 8000

    End Sub

     

    Private Sub sckClient_DataArrival(ByVal bytesTotal As Long)

        Dim s As String

        sckClient.GetData s, vbString, bytesTotal

        MsgBox s

    End Sub

    使用方法:在服务器端启动服务程序,运行工作站程序,输入服务器主机的IP地址,在Text 框中输入要发送的内容,单击发送命令按钮,此时服务器就会接受到信息。这时在服务器的文本框输入发送的内容,单击发送命令按钮,此时工作站就会接受到信息。

    当然,这只是个简单的测试程序,在实际应用中可以利用变量、数据库等做很多事情。同时这个程序只能一对一的传送,想实现一个服务器多个工作站方式,可以在服务器端多建立几个Winsock接收控件,一个控件对应一个工作站,但要注意,Winsock控件的Localport 属性要不一样。即一个端口对应一个服务。

    高晓飞

     

    展开全文
  • VB课程设计俄罗斯方块

    热门讨论 2011-02-25 10:46:55
    从游戏的基本玩法出发,主要就是俄罗斯方块的形状和旋转,我们在设计中在一个图片中构造了一个4*4的网状小块,由这些小块组合成新的形状,每四个小块连接在一起就可以构造出一种造型,因此我们总共设计了7中造型,...
  • VB编程资源大全

    2007-10-17 20:47:23
    htmlviewersample.ZIP 向你演示如何使用WebBrowser控件,以及如何隐藏浏览器窗口中的环境菜单(22KB) 37,aniform.zip 调用 API 实现 Ani 窗体(4KB) 38,anibutton.zip 如何在按纽上播放avi动画 VC...
  • VB 神童教程” <br>第二章:控件学习 <br>第一节——Label 控件 <br>第二节——TextBox控件 <br>第三节——综合示例一 <br>第四节——CommandButton 控件 <br>第五节——单选与复选控件 <br>第...
  • mid 窗口实现的编辑器,并能防止打开多个实例(32KB) 37,f020.ZIP 在VB中调用HELP文件并实现Winhelp的关键字、主题等功能(16KB) 38,f019.ZIP 如何VB中分割一个文件并组装恢复它(18KB) 39,f018.ZIP...
  • 6.4.2 组合框消息举例 6.5 按钮控件消息 6.5.1 常用按钮控件消息 6.5.2 程序举例 第7章 设备环境(DC) 7.1 剪裁与坐标转换 7.1.1 剪裁 7.1.2 坐标转换 7.2 使用设备环境 7.2.1 设备环境的属性和分类 ...
  • p007_prnprv3.zip 如何使用VB实现打印预览(32KB) 604,p006_prnView.zip 打印模拟(13KB) 605,p005_vbTip10.zip 避免 Print 时印出 空白的前置字元(2KB) 606,p004_spool.zip 发送脱机打印任务(5...
  • p007_prnprv3.zip 如何使用VB实现打印预览(32KB) 604,p006_prnView.zip 打印模拟(13KB) 605,p005_vbTip10.zip 避免 Print 时印出 空白的前置字元(2KB) 606,p004_spool.zip 发送脱机打印任务(5...
  • p007_prnprv3.zip 如何使用VB实现打印预览(32KB) 604,p006_prnView.zip 打印模拟(13KB) 605,p005_vbTip10.zip 避免 Print 时印出 空白的前置字元(2KB) 606,p004_spool.zip 发送脱机打印任务(5...
  • p007_prnprv3.zip 如何使用VB实现打印预览(32KB) 604,p006_prnView.zip 打印模拟(13KB) 605,p005_vbTip10.zip 避免 Print 时印出 空白的前置字元(2KB) 606,p004_spool.zip 发送脱机打印任务(5...
  • │ │ ├─实例43 如何制作图形组合框 │ │ ├─实例44 如何设置窗体的透明度 │ │ ├─实例45 如何设置窗体启动位置 │ │ ├─实例46 如何设置窗体最前端显示 │ │ ├─实例47 如何实现精灵提示 │ │ ├─实例...
  • C#源码大集合 01(共3卷)

    千次下载 热门讨论 2008-07-18 10:43:46
    │ ├─实例39 如何创建移动的窗体 │ │ ├─实例40 如何创建无标题栏窗体 │ │ ├─实例41 如何拖动无标题栏窗体 │ │ ├─实例42 如何制作自绘式菜单 │ │ ├─实例43 如何制作图形组合框 │ ...
  • C#源码大集合 03(共3卷)

    千次下载 热门讨论 2008-07-18 10:54:39
    │ ├─实例39 如何创建移动的窗体 │ │ ├─实例40 如何创建无标题栏窗体 │ │ ├─实例41 如何拖动无标题栏窗体 │ │ ├─实例42 如何制作自绘式菜单 │ │ ├─实例43 如何制作图形组合框 │ ...
  • 1.5 使用UML完成类图建模 12 1.6 封装和数据隐藏 12 1.6.1 接口 12 1.6.2 实现 13 1.6.3 接口/实现范型的一个实际例子 13 1.6.4 接口/实现范型的模型 14 1.7 继承 15 1.7.1 超类和子类 16 1.7.2 抽象 16 ...
  • 开发主要面向企业内部使用的工具,一套针对某种设备的控制系统 基本不对外开放,而且是从头开发,没有历史包袱,相对比较自由 但是JavaScript跟C#这类语言差别挺大的 而且C++和Java这些面向对象的代码基本...
  • 8.4.3 结果:如何将内存使用量缩减150倍 8.5 小结 8.6 资源 第四部分 Ajax实例研究 第9章 动态双组合功能 9.1 双组合脚本 9.1.1 客户端解决方案的局限性 9.1.2 服务器端解决方案的限制 9.1.3 基于Ajax的解决方案 9.2...
  • Visual C++ 编程资源大全(源码 控件)

    千次下载 热门讨论 2007-10-19 19:28:33
    快下载一个吧(24KB)<END><br>22,ColorSel.zip 一个用于颜色选择的组合框的例子(41KB)<END><br>23,DriveBox.zip 一个用于选择驱动器的组合框,告诉你如何实现自画控件以及如何通过Windows Shell得到驱动器的...
  • 实例207 利用组合框辅助录入数据 实例208 利用DataGrid控件辅助录入数据 实例209 利用数据窗口辅助录入数据 实例210 在DataGrid表格中实现下拉列表框 7.4 编号、单据号生成 实例211 自动生成产品编号 实例212...
  • 实例207 利用组合框辅助录入数据 实例208 利用DataGrid控件辅助录入数据 实例209 利用数据窗口辅助录入数据 实例210 在DataGrid表格中实现下拉列表框 7.4 编号、单据号生成 实例211 自动生成产品编号 实例212...
  • 经过几个小时的狂热编码,我成功了,甚至解决了如何用颜色来呈现新的消息,使得它们容易被用户注意到。“多有趣啊!”我想,随后就又回去编写那些正经代码了。我还不知道,在同一时间,Eric Costello、Erik Hatcher...
  • asp.net知识库

    2015-06-18 08:45:45
    实现C#和VB.net之间的相互转换 深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白 asp.net 运行机制初探(httpModule加载) 利用反射来查看对象中的私有变量 关于反射中创建类型实例的两种方法 ASP...
  • 实例068 NOT与谓词进行组合条件的查询 133 实例069 查询时不显示重复记录 135 实例070 列出数据中的重复记录和记录条数 136 3.9 排序、分组统计 138 实例071 对数据进行降序查询 138 实例072 对数据进行多条件...
  • 实例068 NOT与谓词进行组合条件的查询 133 实例069 查询时不显示重复记录 135 实例070 列出数据中的重复记录和记录条数 136 3.9 排序、分组统计 138 实例071 对数据进行降序查询 138 实例072 对数据进行多条件...

空空如也

空空如也

1 2 3
收藏数 49
精华内容 19
关键字:

vb如何使用组合框