MDI窗体下有很多子窗体,现在需要工具栏,能对每个子窗体中进行控制,比如对每个子窗体中得数据进行添加,修改,浏览,查找等等。有个想法:当点击工具栏中某个按钮则调用当前子窗体中的某个命令按钮事件,这样得思路对吗?请问如何实现呢?你们做工具条通常如何实现,谢谢!

解决方案 »

  1.   

    对的.
    做工具条就是加载一个TOOLBAR了,
    然后给他一个IMAGELIST了,
    对工具栏实行CLICK()事件,让其选择单击哪个按钮做什么事情了.
    所做的事情对应于哪一个窗体.
      

  2.   

    给你一个例子吧!
    Private Sub tbToolBar_ButtonClick(ByVal Button As MSComctlLib.Button)
        Select Case Button.Key
           Case "New":
                mnuFileNew_Click
            Case "Check":
                mnuStartCheck_Click
       end select
    Private Sub mnuFileNew_Click()
        frmName.NewData
        frmName.SetFocus
    End Sub
      

  3.   

    Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
    Select Case Button.Key
         Case "key1"
              frm_umanagement.Show
              sql = "select*from Cuser"
    Set rs = ExecuteSQL(sql)
    Set frm_umanagement.DataList1.DataSource = rs
    frm_umanagement.DataList1.DataField = "id"
    Set frm_umanagement.DataList1.RowSource = rs
    frm_umanagement.DataList1.ListField = "id"
    frm_umanagement.DataList1.Refresh
                   frm_umanagement.Top = 160
                   frm_umanagement.Left = 160
                   'frm_umanagement.cmd_delete.Enabled = False
                  
              'frm_Browse.Hide
              'frm_install.Hide
              'Call design
         
         Case "key2"
              frm_Browse.Show
              frm_Browse.Top = 530
              frm_Browse.Left = 2196
              'frm_umanagement.Hide
              'frm_install.Hide
             'Call design
         Case "key3"
              If 1 Then
              PopupMenu Menu_shezhi(0)
              End If
              
              
              'frm_install.Show
              'frm_Browse.Hide
              'frm_umanagement.Hide
              'Call design
        Case "key5"
        If 1 Then
        PopupMenu Menu_kaoqin(0)
        End If
        
         Case "key4"
         If 1 Then
         PopupMenu operate(0)
         End If
         'frm_main.Show
         'frm_main.Top = 160
         'frm_main.Left = 1986
         'frm_main.Frame2.Left = 0
         'frm_main.Frame4.Left = 10920
         'frm_main.Frame6.Left = 21840
         'frm_main.Frame16.Left = 32760
         'frm_main.Width = 10770
        
         Case "key6"
         
         If 1 Then
          PopupMenu Menu_gongzi(0)
         End If
         
         Case "key7"
         If 1 Then
         PopupMenu Menu_print(0)
         End If
         
        Case "key8"
        If 1 Then
        PopupMenu Menu_data(0)
        End If
        
        Case "key9"
       If MsgBox("你确定要退出本系统么~?~", vbYesNo + vbExclamation, "注意") = vbYes Then
        frm_main.MSHFlexGrid1.Clear
       Call qingkong
        End
       Else
       Exit Sub
       End If
        
    End Select
       
    End Sub
    以上是代码
    首先你要设置该控件点右键属性--》按钮---》关键字(如上面的 key1---key9)
    Toolbar1_ButtonClick 这个时间你只需双击该控件就OK了
    就这样
    OK???
      

  4.   

    你们的意思我理解为:当点击某个按钮就去调用某个事件,但我要实现的是:我有相当多的MDI子窗体,当点击MDI工具栏上的某个按钮,先判断子窗体为哪个窗体,再调用其相应的事件,如新增,如果当前窗体改变,则调用不同的事件,一个按钮需要对很多窗体服务。
    Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
    Select Case Button.Key
       Case "key1"
           Call Me.ActiveForm.Command1_Click
       case "key2"
           call me.activeform.command2.
       End Select
       
    End Sub
    有人给我这段代码,当我点击工具栏上某按钮,可以调用当前子窗体中的指点按钮事件,但我没有实现,错误在“Call Me.ActiveForm.Command1_Click”出现,说对象不支持的属性或方法。请问如何实现?
      

  5.   

    总之,关键就是要实现调用当前子窗体中的某个按钮事件,如每次点工具栏上的新增,就调用当前窗体中的cmdaddnew,每当点保存就调用当前窗体中的cmdsave. 帮帮忙?
      

  6.   

    给你一段(以前做的):
    设置工具状态(通用函数):
    Public Sub SetButtonS(ByVal BtnStr As String)
        Dim i As Integer
        For i = 1 To Len(BtnStr)
               If Mid(BtnStr, i, 1) = "1" Then
                      MDIFrmMain.TBSystem.Buttons(i).Enabled = True
               Else
                      MDIFrmMain.TBSystem.Buttons(i).Enabled = False
               End If
        Next
    End Sub
    当工具上的按钮点时:
    Private Sub TBSystem_ButtonClick(ByVal Button As MSComctlLib.Button)
        On Error GoTo ExitErr
               Select Case Button.Index
                      Case 1
                           Screen.ActiveForm.TInsert
                      Case 2
                           Screen.ActiveForm.TSave
                      Case 3
                           Screen.ActiveForm.TDelete
                      Case 4
                           Screen.ActiveForm.TUpdate
                      Case 6
                           Screen.ActiveForm.TFirst
                      Case 7
                           Screen.ActiveForm.TPrevious
                      Case 8
                           Screen.ActiveForm.TNext
                      Case 9
                           Screen.ActiveForm.TLast
                      Case 11
                           Screen.ActiveForm.TClear
                      Case 12
                           Screen.ActiveForm.TPreview
                      Case 13
                           Screen.ActiveForm.TPrint
                      Case 14
                           Screen.ActiveForm.TQuit
                      Case 16
                           Screen.ActiveForm.THelp
               End Select
               Exit Sub
    ExitErr:
             Unload Me
    End Sub
    然后分别在各个窗体中设置如上的过程,方法如下:
    Public sub TAdd()
       with adodc1.recordset
            .add
            .fields("FirstName").value=text1
            .fields("LastName").value=text2
            .update
       end with
    end sub
    就可以了。你试试,不行再给我发短信息。
      

  7.   

    忘记了你的说明是这样的:
    只需要在
    Public Sub TAdd
        cmdadd_Click
    end sub
      

  8.   

    to kJ_wang(平凡):谢谢,用此方法搞定。Screen.ActiveForm.TAdd这句帮了大忙。一定给分!
      

  9.   

    关于工具条的最后一个问题,搞定结贴!
    TO:snail2011(尘潇) 如何给它一个image list,为何我的工具条属性中图像列表总是”无“,我该如何处理,谢谢!另外,工具条中那么多属性设置,都是什么意思,有谁能给点资料我看看或给我讲讲,重谢!
      

  10.   

    先添加一个IMAGELIST控件,然后绑定这个控件就行了
      

  11.   

    你添加了一个IMAGELIST控件后,
    右健点击IMAGELIST出现工具条,然后取取其属性,
    在"通用"列表处一般选取16*16这是指"图标的高度和宽度",在其"图像"列表,
    点击"插入图片"选取你所插入的图片,索引会自动加1的,在"关健字"后的文本框中输入你对此图像的命名.可以在程序中调用.工具栏和IMAGELIST中的图像排列顺序最好一样.(不一样有时会出现一点小问题的喔:)):如我插入一个图片命名为"NEW"
    TOOLBAR中的点开属性同IMAGELIST一样,对于"通用"页的话,大都是调工具栏的外观的, 
    有一项"热用图像列表"你可以选取你要对此工具栏的IMAGELEST,但我本人认为不要选取比较好, 
    然后你在"按钮"列表中点击"插入"按钮,索引会自动加1,我在"标题栏输入"这个按钮的名称.在"关健字"地方输入的就是你给予图像的名称.如"NEW",则可以加载这个图像了.工具栏提示文本也输入的就是你要做的事比如"新建***".我不知道我请清楚了没有,
    给你一此网页去看看
    http://www.pconline.com.cn/pcedu/empolder/gj/vb/10201/28428.html
    http://hanburger.myetang.com/VbSkill/vb16.htm