用"SSTab"控件与"TreeView"相结合即可。

解决方案 »

  1.   

    用tabstrip,和treeview配合使用啊!
      

  2.   

    不大清楚意思,什么标签,用tabstrip加treeview,在每个tab上放一个treeview吧。
      

  3.   

    什么是标签,就是TreeView 控件中显示文字的部分,再专业一点讲就是节点上显示Text 的地方
      

  4.   

    天同,你好!谢谢你已多次的帮助了我!你说的很好,我也是想 CSDN 应该能让我们发图片上去是比较好的,这样更便于大家的交流,但现在这个文本框是不可能放图片的呀,是不是还有什么办法呢?谢谢!
      

  5.   

    +----联想开天
       +-----0001   CPU      NOTE1
       +-----0002   Mouse    NOTE2
       +-----0003   主板     NOTE3清楚了么??就象project2000里面工程管理主界面的表格有点类似,MS project
    是用表格做的。大家可以看看。我出150分(呵,没分了本来应该多一点的)
      

  6.   

    补充,最好能灵活引用任意一个LABEL中的内容
      

  7.   

    你可以把“0001   CPU      NOTE1”当作一个标签来使用
    没有必要分成多个标签。
    只要字符串可以对齐就可以了
      

  8.   

    补充:老夫现在是用笨办法的。
       LABEL0=label_a0 & label_b0 & label_c0 & ....
       LABEL1=label_a1 & label_b1 & label_c1 & ....然后控制让label_a0与label_a1长度都相等球球label有汉字和英文好象也比较麻烦。:)谁能写成project 2000那样的控件就好了。
      

  9.   

    label有汉字和英文好象也比较麻烦
    ====================================================================
    用LenB(StrConv(字符串,vbFromUniCode))可得到实际长度
      

  10.   

    去下载一个vsflexgrid 有类似的功能
    www.componentone.com
      

  11.   

    Public Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long
    使用lstrlen可以得到实际长度
      

  12.   

    其实你里面可以使用TAB来分割,SPLIT函数来做,应该挺方便的。
      

  13.   

    我本来是想实现,一个TreeView的项中使用多个Check,谁知道怎么做?
      

  14.   

    以前在vbaccelerator.com上下了一个叫s-grid的东西!你要的话我把源代码发一个给你吧!
      

  15.   

    自己可以去做一个,我见过,觉得挺好的,好像是一个gps
    汽车监控的公司对车进行监控时用到的
      

  16.   

    有不少网格控件都支持这种显示方式,VSFlexgrid和Janus GridEX 2000都可以,TDBGrid我没有用过,应该也可以。
      

  17.   

    妳說的這個可以用Listview控件實現﹐LIstview+API也可以實現樹型結构
    事例程序
    http://www.mvps.org/btmtz/listview/lvitemtree.zip
      

  18.   

    不用TREEWIEW,用MSFLEXGRID控件.
    先在数据环境中定义一个一对多的关系,然后联接到MSFLEXGRID控件上.请参见http://www.csdn.net/expert/topic/556/556434.xml?temp=.6455347
    http://www.csdn.net/expert/topic/560/560842.xml?temp=.5458643★★★★★
    打工好辛苦
    ★★★★★
    钞票好难赚
    ★★★★★
    编程好伤神
    ★★★★★
    光阴好易混
    ★★★★★
      

  19.   

    建立一个集合,集合的每个对象就是你自己定义的数据类型,treeview的tag为集合的对象的key或index号。每添加一个node就在集合里面添加一个对象,并把对象的index号附给node.tag
      

  20.   

    如何让 ListBox 同一列显示二栏以上的栏位?要让 ListBox 显示二栏以上,有很多方法: 有人用二个字串中间加上空白来 AddItem,但是这样有一个很大的缺点,就是第二栏常常无法对齐!有人说可以加上 Format 来强迫留白,以便对齐,但是这些方法都比较麻烦,没有效率!有一个很简单,又保证不用伤脑筋就可以对的方法,就是使用 vbTab!作法如下:lstMyListBox.AddItem "0001" & vbTab & "王一" & vbTab & "广州市"
    lstMyListBox.AddItem "0002" & vbTab & "丁二" & vbTab & "上海市"
    lstMyListBox.AddItem "0003" & vbTab & "张三" & vbTab & "北京市"
    lstMyListBox.AddItem "0004" & vbTab & "李四" & vbTab & "重庆市"
      

  21.   

    如何控制二栏以上 ListBox 之各栏位宽度?使用 vbTab 来设定 ListBox 的多栏显示,效果不错,但是若以 vbTab 来做,每栏长度是固定的,只有 8,我的资料有些字串很长,有些很短,如果可以逐栏设定宽度,那就太完美了!但是单用 VB 的基本函数,是做不到的!不过我们可以 Call API: 假设要放到 ListBox 的资料有四个栏位,如下:
    1、员工编号 (长度为6)
    2、员工姓名 (长度为6)
    3、员工住址 (长度为38)
    4、员工性别 [长为4]Const LB_SETTABSTOPS = &H192
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongSub SetListTabStops(iListHandle As Long)
    ' 设定四个栏位, 长度各为 6,6,38,4
    ' iListHandle = the window handle of the list box
    Dim iNumColumns As Long
    Dim iListTabs(3) As Long
    Dim Ret As Long
    iNumColumns = 4
    iListTabs(0) = 24 ' 24/4 = 6 (第1-第6字节)
    iListTabs(1) = 48 ' 48/4 = 12 (第7-第12字节)
    iListTabs(2) = 200 ' 200/4 = 50 (第13-第50字节)
    iListTabs(3) = 216 ' 216/4 = 54 (第51-第54字节)
    Ret = SendMessage(iListHandle, LB_SETTABSTOPS, _
    iNumColumns, iListTabs(0))
    End SubPrivate Sub Form_Load()
    Call SetListTabStops(List1.hwnd)
    List1.AddItem "0001" & vbTab & "王一" & vbTab & "广州市市体育东路二段120巷176号" & vbTab & "男"
    List1.AddItem "0002" & vbTab & "丁二" & vbTab & "北京市中关村路100号" & vbTab & "男"
    List1.AddItem "0003" & vbTab & "张三" & vbTab & "上海市中山路150巷26号" & vbTab & "女"
    List1.AddItem "0004" & vbTab & "李四" & vbTab & "重庆市福州路99号" & vbTab & "男"
    End Sub
      

  22.   

    模拟 IE 的 地址栏:智慧型下拉式 Combo不知您是否有注意到?您在 IE 的地址栏直接输入地址的时候,如果您输入的地址前面几位和下拉式 Combo 中现存的地址相同时,IE 便会自动带出该地址资料放在 Combo 的 Text 框中,而且这串字有一个特性,在滑鼠游标之前的字是未选定反白的,而在滑鼠游标之后的字则是已经选定反白的,它的目的有二个:
    1. 如果您要输入的整串字和它带出的字完全一样,就可以不用再输入,可以节省时间。
    2. 如果您要输入的整串字和它带出的字不一样,您还是可以继续输入,继续输入的字串会自动取代后面那串已经选定反白的字串。 以下的范例,只处理英文字,若要处理其他情形如数字,请自行略加更改,请先在 Form1 中放一个 Combo,然后将以下程式直接 Copy 进去即可:Dim strCombo As String
    Const WM_SETREDRAW = &HB
    Const KEY_A = 65
    Const KEY_Z = 90Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPrivate Sub combo1_KeyUp(KeyCode As Integer, Shift As Integer)
    Dim x%
    Dim strTemp$
    Dim nRet&If KeyCode >= KEY_A And KeyCode <= KEY_Z Then
    'only look at letters A-Z
    strTemp = Combo1.Text
    If Len(strTemp) = 1 Then strCombo = strTemp
    nRet& = SendMessage(Combo1.hwnd, WM_SETREDRAW, False, 0&)
    For x = 0 To (Combo1.ListCount - 1)
    If UCase((strTemp & Mid$(Combo1.List(x), Len(strTemp) + 1))) = UCase(Combo1.List(x)) Then
    Combo1.ListIndex = x
    Combo1.Text = Combo1.List(x)
    Combo1.SelStart = Len(strTemp)
    Combo1.SelLength = Len(Combo1.Text) - (Len(strTemp))
    strCombo = strCombo & Mid$(strTemp, Len(strCombo) + 1)
    Exit For
    Else
    If InStr(UCase(strTemp), UCase(strCombo)) Then
    strCombo = strCombo & Mid$(strTemp, Len(strCombo) + 1)
    Combo1.Text = strCombo
    Combo1.SelStart = Len(Combo1.Text)
    Else
    strCombo = strTemp
    End If
    End If
    Next
    nRet& = SendMessage(Combo1.hwnd, WM_SETREDRAW, True, 0&)
    End If
    End SubPrivate Sub Form_Load()
    Combo1.AddItem "AAAAAAAA"
    Combo1.AddItem "ABBBBBBB"
    Combo1.AddItem "ABCCCCCC"
    Combo1.AddItem "ABCDDDDD"
    Combo1.AddItem "ABCDEEEE"
    Combo1.AddItem "ABCDEFFF"
    Combo1.AddItem "ABCDEFGG"
    Combo1.AddItem "ABCDEFGH"
    End Sub