VB6.0中MDIFORM的子窗体 TOOLBAR 怎样显示在主窗体中(在线等待)

jillian 2003-08-25 11:06:41
帮助上说MDIFORM中有一个NEGOTIATETOOLBARS属性,设为TRUE应该将子窗体的TOOLBAR显示在主窗体中。

但是我设了却没有用。各位高手知道怎么回事吗?急!

...全文
509 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jillian 2003-08-26
  • 打赏
  • 举报
回复
我用其他方法解决了这个问题. 在这里我谢谢liul17(liul)的热心帮忙!

我的方法:
将所有TOOLBAR的BUTTON全部做在主窗口上,然后根据所调用的窗体的类型来决定BUTTON的VISIBALE属性,这样及使得TOOLBARK看起来是动态随着子窗体的不同而不同了.
对于BUTTON的CLICK事件,则在 TOOLBAR_ButtonClick中根据不同的FORMTYPE来调用各自FORM中定义好的方法和函数.要使子窗体中的方法及函数能够被主窗体访问,只要将子窗体中的方法及函数的PRIVATE属性改为PUBLIC,这样就可以了.
liul17 2003-08-26
  • 打赏
  • 举报
回复
没看全你上面的回复,好像你就是这样做的!
liul17 2003-08-26
  • 打赏
  • 举报
回复
你可以完全不这样做,将子窗体中的 Button_click 设为 Public ,然后在主窗体中的 button_Click中加入类似下面的代码
select case button.key
case "XX" '主窗体中固有的 button

else case
主窗体.Activateform.tlbButton_click '子窗体中的 Button_Click (注:子窗体中的Button名称必须全为“tlbButton”)
end select
jillian 2003-08-25
  • 打赏
  • 举报
回复
TO:liul17(liul)
这样的话相当于动态的添加主窗体的TOOLBAR上的BUTTON,当TOOLBAR中BUTTON的CLICK事件发生时调用的是主窗体的TOOLBAR_BUTTONCLICK事件,而不是子窗体的TOOLBAR_BUTTONCLICK事件吧?
而我要的是可自动显示子窗体的TOOLBAR并自动调用其BUTTONCLICK事件!这样能实现吗?
liul17 2003-08-25
  • 打赏
  • 举报
回复
给你以下两个过程,已经够用了,一个是将子窗体的toolbar加到主窗体中的,一个是关闭子窗体时移除的,在子窗体Activate时调subTbl,deactivate和Unload时调Call subDelTbl(tlbItem)。即可实现,还有要在MdiForm中加入子窗体中用到的所有图片。

Global Const CON_TLBMAINCOUNT = 3

Public Sub subTbl(tlbItem As Object, Optional bImage As Boolean = True)
Dim i%, str$, j%
frmMain.Tag = tlbItem.Parent.Name
With frmMain.tlbMain.Buttons
For i = tlbItem.Buttons.Count To 1 Step -1
str = tlbItem.Buttons(i).Image
If bImage = True Then
If str <> "0" Then
.Add CON_TLBMAINCOUNT - 1, tlbItem.Buttons(i).Key, IIf(.Item("tlbExit").Caption = gsNULL, gsNULL, tlbItem.Buttons(i).Caption), , str
Else
.Add CON_TLBMAINCOUNT - 1, tlbItem.Buttons(i).Key, IIf(.Item("tlbExit").Caption = gsNULL, gsNULL, tlbItem.Buttons(i).Caption)
End If
Else
.Add CON_TLBMAINCOUNT - 1, tlbItem.Buttons(i).Key, IIf(.Item("tlbExit").Caption = gsNULL, gsNULL, tlbItem.Buttons(i).Caption)
End If
.Item(CON_TLBMAINCOUNT - 1).Visible = tlbItem.Buttons(i).Visible
.Item(CON_TLBMAINCOUNT - 1).Style = tlbItem.Buttons(i).Style
.Item(CON_TLBMAINCOUNT - 1).Enabled = tlbItem.Buttons(i).Enabled
.Item(CON_TLBMAINCOUNT - 1).Description = tlbItem.Buttons(i).Description
.Item(CON_TLBMAINCOUNT - 1).ToolTipText = tlbItem.Buttons(i).ToolTipText
If tlbItem.Buttons(i).Style = tbrDropdown Then
For j = 1 To tlbItem.Buttons(i).ButtonMenus.Count
.Item(CON_TLBMAINCOUNT - 1).ButtonMenus.Add j, tlbItem.Buttons(i).ButtonMenus(j).Key, tlbItem.Buttons(i).ButtonMenus(j).Text
Next j
End If

Next i
tlbItem.Visible = False
End With
End Sub
Public Sub subDelTbl(tlbItem As Object)
Dim i%
If frmMain.Tag <> tlbItem.Parent.Name Then Exit Sub
With frmMain.tlbMain.Buttons
If .Count = CON_TLBMAINCOUNT Then Exit Sub
For i = 1 To tlbItem.Buttons.Count
.Remove CON_TLBMAINCOUNT - 1
Next i
End With
End Sub
liul17 2003-08-25
  • 打赏
  • 举报
回复
这是要自已编写代码的,等会儿我给你个例子
jillian 2003-08-25
  • 打赏
  • 举报
回复
MDIFORM中已经有TOOLBAR了,但是子窗体的TOOLBAR却还是不能到主窗体中!
liul17 2003-08-25
  • 打赏
  • 举报
回复
要画一个Toolbar在Mdiform上的

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧