如何在MSHFlexGrid 某一列放Combobox
还要加入Command查找按钮
如下图

解决方案 »

  1.   

    图中明显不是一个标准控件
    把combo 和 command 放在一个picturebox里
    然后让Picture的位置跟踪鼠标位置Private Sub MSHFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
    Picture1.Move MSHFlexGrid1.CellLeft, MSHFlexGrid1.CellTop
    End Sub
      

  2.   

    可能位置会有点偏差 加上MSHFlexGrid1的left 和 top就应该差不多了
      

  3.   

    Private Sub MSHFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
    Picture1.Move MSHFlexGrid1.CellLeft + MSHFlexGrid1.Left, MSHFlexGrid1.CellTop + MSHFlexGrid1.Top
    End Sub经过测试了 位置是准确的
      

  4.   

    上楼,万分感谢
    能不能写详细一点,比如Combobox 选中的值怎么传给MSHFlexGrid点Command查找后的值怎么传给MSHFlexGrid
      

  5.   

    Private Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
    Dim combo_height As IntegerPrivate Sub Form_Load() '先为列表框添加50个项目
        Dim i As Integer
        For i = 1 To 50: Combo1.AddItem Format$(i): Next i
    End SubPrivate Sub Form_Resize() '在窗体的Resize事件中改变列表框的下拉高度    Dim form_mode As Integer
        form_mode = ScaleMode
        ScaleMode = vbPixels
        combo_height = ScaleHeight - Combo1.Top ' - 5
        MoveWindow Combo1.hwnd, Combo1.Left, Combo1.Top, Combo1.Width, combo_height, 1
        ScaleMode = form_modeEnd Sub
    '上面代码(网上搜集)是将Combo默认的8项改成随窗体大小改变而改变,其中的展项高度值combo_height 可以作为 新增 置空 查找命令按钮(是否显示根据combo的出现设置成 显示/隐藏)位置的参照值,具体准确位置调试一下就行了
      

  6.   

    传递值给一个单元:MSHFlexGrid1.(1, 1) =“123"
    传递值给一行:
    MSHFlexGrid1.AddItem vbTab & "aaaaaaaaaaaaaaaa" & vbTab & "bbbbbbbbbbbbbbb", MSHFlexGrid1.Row
    MSHFlexGrid1.RemoveItem (MSHFlexGrid1.Row + 1)
      

  7.   

    哪些地方啊 难道list1的选定行?
    哦 我写丢点东西
    Private Sub Combo1_click()
    MSHFlexGrid1.TextMatrix(1, 1) = Combo1.List(Combo1.ListIndex)
    End SubPrivate Sub Form_Load()
    Combo1.AddItem 1111
    Combo1.AddItem 2222
    Combo1 = "select item"
    End Sub
      

  8.   

    MSHFlexGrid1该单元得不到值Private Sub Combo1_Change()
    MSHFlexGrid1.TextMatrix(1, 1) = Combo1.List(Combo1.ListIndex)
    End SubPrivate Sub Form_Load()
    Combo1.AddItem 1111
    Combo1.AddItem 2222
    Combo1 = "select item"End SubPrivate Sub MSHFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)Combo1.Move MSHFlexGrid1.CellLeft + MSHFlexGrid1.Left, MSHFlexGrid1.CellTop + MSHFlexGrid1.Top
    End Sub
      

  9.   

    怎么可能啊 
    你把pic弄大点试试 是不是被combo给遮盖了 还有 你把按钮放到picture里面了么?
      

  10.   

    不能用change事件 那是键盘输入时用的
    用click事件
      

  11.   


    我这里本来就没放 3个命令按钮,只是说它们的位置是在 combo位置上作调整,如果 Combo显示则它们也显示,否则就隐藏掉; 关于 让某一个单元格获取选中的Combo项内容,网上一搜很多的,不要指望别人写得那么完整,人家给的是思想,自己多动手更有体会!
      

  12.   

    (fzx4936)是正确的,基本实现我想我要的功能
    还有个小问题,
    先让Picture1隐藏,点Combo才出现Picture1,MSHFlexGrid1得到值后马上Picture1隐藏这个功能如何实现Private Sub Combo1_click()
    Picture1.Visible = True
    MSHFlexGrid1.Text = Combo1.Text
    Picture1.Visible = False
    End SubPrivate Sub Form_Load()
           Combo1.AddItem "aaa "
            Combo1.AddItem "bbb "
            Combo1.AddItem "ccc "
    End SubPrivate Sub MSHFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)Picture1.Move MSHFlexGrid1.CellLeft + MSHFlexGrid1.Left, MSHFlexGrid1.CellTop + MSHFlexGrid1.TopEnd Sub
      

  13.   

    先让Picture1隐藏,点Combo才出现Picture1,MSHFlexGrid1得到值后马上Picture1隐藏
    =====================================
    Private Sub Combo1_click()
    MSHFlexGrid1.TextMatrix(1, 1) = Combo1.List(Combo1.ListIndex)
    Picture1.Visible = False
    End SubPrivate Sub Combo1_DropDown()
    Picture1.Visible = True
    End Sub
    Private Sub Form_Load()
    Combo1.AddItem 1111
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1 = "select item"
    Picture1.Visible = False
    End Sub
      

  14.   

    不可能 我测试过的
    如果你想点combo1出现picture1
    那么你要把combo1防到picture1外面
    1点单元combo1.visibal=true
    2点combo1 picture11.visibal=true
    3combo1选定 单元赋值 combo1.visibal=false picture1.visibal=false
    大概过程就这样啦
      

  15.   

    'Picture1.Visible = False
    Combo1.Visible = False
    End SubPrivate Sub Combo1_DropDown()
    Picture1.Visible = True
    End Sub
    Private Sub Form_Load()
    Combo1.AddItem 1111
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1 = "select item"
    Picture1.Visible = False
    Combo1.Visible = False
    End SubPrivate Sub MSHFlexGrid1_Click()
    With MSHFlexGrid1
        Combo1.Visible = True
        'Picture1.Visible = True ;自己决定combo1和picture1是否同时出现
        Combo1.Move .CellLeft + .Left, .CellTop + .Top
        Picture1.Move Combo1.Left, Combo1.Top + 300
    End With
    End Sub
      

  16.   

    上1个没粘贴全
    Private Sub Combo1_click()
    MSHFlexGrid1.TextMatrix(1, 1) = Combo1.List(Combo1.ListIndex)
    'Picture1.Visible = False
    Combo1.Visible = False
    End SubPrivate Sub Combo1_DropDown()
    Picture1.Visible = True
    End Sub
    Private Sub Form_Load()
    Combo1.AddItem 1111
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1.AddItem 2222
    Combo1 = "select item"
    Picture1.Visible = False
    Combo1.Visible = False
    End SubPrivate Sub MSHFlexGrid1_Click()
    With MSHFlexGrid1
        Combo1.Visible = True
        'Picture1.Visible = True ;自己决定combo1和picture1是否同时出现
        Combo1.Move .CellLeft + .Left, .CellTop + .Top
        Picture1.Move Combo1.Left, Combo1.Top + 300
    End With
    End Sub