第9章为窗体添加菜单和工具栏_bz
MFC框体添加菜单栏工具栏状态栏
MFC框体添加菜单栏工具栏状态栏菜单栏CMenu封装了菜单句柄和相关菜单API1.1添加资源1.2在CMainFrame::OnCreate函数中添加菜单;CMenu::Attach——将菜单句柄附加到菜单对象中;CMenu::Detach——将菜单句柄从菜单对象中分离1.3 命令相关ON_COMMAND1.4 菜单项的状态ON_UPDATE_COMMAND_UI CCmdUI类工具栏工具栏相关类CToolBarCtrl——父类是CWnd,封装了Toolbar Control控件的相关信息,API等。
CToolBar——父类CControlBar,封装了ToolBar和CFrameWnd之间的关系。
2.1创建工具栏CToolBar::Create/Ex2.2 加载工具栏2.3工具栏的停靠CToolBar::EnableDocking设置工具栏允许停靠;CFrameWnd::EnableDocking设置窗口允许被停靠;CFrameWnd::DockControlBar设置停靠位置。
2.4命令处理2.5工具栏的显示与隐藏CFrameWnd::ShowControlBar2.6信息提示增加风格CBRS_TOOLTIPS;设置提示信息。
状态栏状态栏相关类CStatusBarCtrl——父类是CWnd,封装了StatusBars的相关信息,API 等。
CStatusBar——父类CControlBar,封装了状态栏和窗口之间的关系。
3.1创建状态栏CStatusBar::Create/Ex3.2设置状态栏指示器CStatusBar::SetIndicators3.3设置或获取状态栏信息CStatusBar::SetPaneText,CStatusBar::GetPaneText实例[cpp]#include "stdafx.h"#include "Resource.h"UINT g_nIndicators[]={0,IDS_TIME,ID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL};class CMainFrame:public CFrameWnd{public:DECLARE_MESSAGE_MAP()afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);//菜单栏,工具栏,状态栏创建与加载//菜单栏消息处理函数afx_msg void OnExit();afx_msg void OnOpen();afx_msg void OnUpdateUIOpen(CCmdUI* pCmdUI);//工具栏消息处理函数afx_msg void OnViewStandard();afx_msg void OnUpdateUIStandard(CCmdUI* pCmdUI);//状态栏消息处理函数afx_msg void OnTimer(UINT nIDEvent);afx_msg void OnMouseMove(UINT nFlags, CPoint point);private:CToolBar mWndToolBar;CStatusBar mWndStatusBar;};BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd)ON_WM_CREATE()ON_COMMAND(ID_OPEN,OnOpen)ON_COMMAND(ID_EXIT,OnExit)ON_UPDA TE_COMMAND_UI(ID_OPEN,OnUpdateUIOpen)ON_COMMAND(ID_VIEW_STANDARD,OnViewStandard)ON_UPDA TE_COMMAND_UI(ID_VIEW_STANDARD,OnUpdateUIStandard)ON_WM_TIMER()ON_WM_MOUSEMOVE()END_MESSAGE_MAP()int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){//添加菜单CMenu menu;menu.LoadMenuW(IDR_MAINFRAME);//加载菜单资源SetMenu(&menu);//将菜单设置到窗口menu.Detach();//将菜单句柄与菜单对象分离//添加工具栏mWndToolBar.CreateEx(this,TBSTATE_CHECKED,WS_CHILD|WS_VISIBLE|CB RS_ALIGN_ANY|CBRS_TOOLTIPS);mWndToolBar.LoadToolBar(IDR_MAINFRAME);//加载工具栏//停靠工具栏mWndToolBar.EnableDocking(CBRS_ALIGN_ANY);//1.设置工具栏允许停靠EnableDocking(CBRS_ALIGN_ANY);//设置框架窗口允许被停靠DockControlBar(&mWndToolBar,AFX_IDW_DOCKBAR_TOP);//停靠工具栏操作mWndToolBar.SetWindowTextW(L"标准工具栏");//设置工具栏的标题//创建状态栏mWndStatusBar.CreateEx(this);mWndStatusBar.SetIndicators(g_nIndicators,sizeof(g_nIndicators)/sizeof(UINT));//设置指示灯SetTimer(100,1000,NULL);//启动定时器return 0;}void CMainFrame::OnOpen(){MessageBox(L"OnOpen");}void CMainFrame::OnExit(){MessageBox(L"OnExit");//PostQuitMessage(0);}void CMainFrame::OnUpdateUIOpen(CCmdUI* pCmdUI) {pCmdUI->SetCheck();pCmdUI->SetRadio();pCmdUI->SetText(L"Open");}void CMainFrame::OnViewStandard(){if (mWndToolBar.IsWindowVisible()){ShowControlBar(&mWndToolBar,FALSE,FALSE);}else{ShowControlBar(&mWndToolBar,TRUE,FALSE);}}void CMainFrame::OnUpdateUIStandard(CCmdUI* pCmdUI) {pCmdUI->SetCheck(mWndToolBar.IsVisible());}void CMainFrame::OnTimer(UINT nIDEvent){CTime t=CTime::GetCurrentTime();CString strTime=t.Format("%Y-%m-%d %H:%M:%S");mWndStatusBar.SetPaneText(1,strTime);}void CMainFrame::OnMouseMove(UINT nFlags, CPoint point){CString strPt;strPt.Format(L"坐标:X=%d,Y=%d",point.x,point.y);mWndStatusBar.SetPaneText(0,strPt);}class MFCMenu:public CWinApp{public:virtual BOOL InitInstance();};BOOL MFCMenu::InitInstance(){CMainFrame *pFrame=new CMainFrame;pFrame->Create(NULL,L"MFCMenue");//pFrame->Create(NULL,L"MFCToolbar",WS_OVERLAPPEDWINDOW,CFrameW nd::rectDefault,NULL,MAKEINTRESOURCE(IDR_MAINFRAME));m_pMainWnd=pFrame;pFrame->ShowWindow(SW_SHOW);pFrame->UpdateWindow();return TRUE;}MFCMenu theApp;#include "stdafx.h"#include "Resource.h"UINT g_nIndicators[]={0,IDS_TIME,ID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL};class CMainFrame:public CFrameWnd{public:DECLARE_MESSAGE_MAP()afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);//菜单栏,工具栏,状态栏创建与加载//菜单栏消息处理函数afx_msg void OnExit();afx_msg void OnOpen();afx_msg void OnUpdateUIOpen(CCmdUI* pCmdUI);//工具栏消息处理函数afx_msg void OnViewStandard();afx_msg void OnUpdateUIStandard(CCmdUI* pCmdUI);//状态栏消息处理函数afx_msg void OnTimer(UINT nIDEvent);afx_msg void OnMouseMove(UINT nFlags, CPoint point);private:CToolBar mWndToolBar;CStatusBar mWndStatusBar;};BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd)ON_WM_CREATE()ON_COMMAND(ID_OPEN,OnOpen)ON_COMMAND(ID_EXIT,OnExit)ON_UPDA TE_COMMAND_UI(ID_OPEN,OnUpdateUIOpen)ON_COMMAND(ID_VIEW_STANDARD,OnViewStandard)ON_UPDA TE_COMMAND_UI(ID_VIEW_STANDARD,OnUpdateUIStandard)ON_WM_TIMER()ON_WM_MOUSEMOVE()END_MESSAGE_MAP()int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){//添加菜单CMenu menu;menu.LoadMenuW(IDR_MAINFRAME);//加载菜单资源SetMenu(&menu);//将菜单设置到窗口menu.Detach();//将菜单句柄与菜单对象分离//添加工具栏mWndToolBar.CreateEx(this,TBSTATE_CHECKED,WS_CHILD|WS_VISIBLE|CBRS _ALIGN_ANY|CBRS_TOOLTIPS);mWndToolBar.LoadToolBar(IDR_MAINFRAME);//加载工具栏//停靠工具栏mWndToolBar.EnableDocking(CBRS_ALIGN_ANY);//1.设置工具栏允许停靠EnableDocking(CBRS_ALIGN_ANY);//设置框架窗口允许被停靠DockControlBar(&mWndToolBar,AFX_IDW_DOCKBAR_TOP);//停靠工具栏操作mWndToolBar.SetWindowTextW(L"标准工具栏");//设置工具栏的标题 //创建状态栏mWndStatusBar.CreateEx(this);mWndStatusBar.SetIndicators(g_nIndicators,sizeof(g_nIndicators)/sizeof(UINT));//设置指示灯SetTimer(100,1000,NULL);//启动定时器return 0;}void CMainFrame::OnOpen(){MessageBox(L"OnOpen");}void CMainFrame::OnExit(){MessageBox(L"OnExit");//PostQuitMessage(0);void CMainFrame::OnUpdateUIOpen(CCmdUI* pCmdUI) {pCmdUI->SetCheck();pCmdUI->SetRadio();pCmdUI->SetText(L"Open");}void CMainFrame::OnViewStandard(){if (mWndToolBar.IsWindowVisible()){ShowControlBar(&mWndToolBar,FALSE,FALSE);}else{ShowControlBar(&mWndToolBar,TRUE,FALSE);}}void CMainFrame::OnUpdateUIStandard(CCmdUI* pCmdUI) {pCmdUI->SetCheck(mWndToolBar.IsVisible());}void CMainFrame::OnTimer(UINT nIDEvent){CTime t=CTime::GetCurrentTime();CString strTime=t.Format("%Y-%m-%d %H:%M:%S");mWndStatusBar.SetPaneText(1,strTime);}void CMainFrame::OnMouseMove(UINT nFlags, CPoint point) {CString strPt;strPt.Format(L"坐标:X=%d,Y=%d",point.x,point.y);mWndStatusBar.SetPaneText(0,strPt);class MFCMenu:public CWinApp{public:virtual BOOL InitInstance();};BOOL MFCMenu::InitInstance(){CMainFrame *pFrame=new CMainFrame;pFrame->Create(NULL,L"MFCMenue");//pFrame->Create(NULL,L"MFCToolbar",WS_OVERLAPPEDWINDOW,CFrameWnd: :rectDefault,NULL,MAKEINTRESOURCE(IDR_MAINFRAME));m_pMainWnd=pFrame;pFrame->ShowWindow(SW_SHOW);pFrame->UpdateWindow();return TRUE;}MFCMenu theApp;菜单栏的一些资源[cpp]/////////////////////////////////////////////////////////////////////////////// BitmapIDR_MAINFRAME BITMAP "res\\toolbar1.bmp"/////////////////////////////////////////////////////////////////////////////// ToolbarIDR_MAINFRAME TOOLBAR 16, 15BEGINBUTTON ID_OPENBUTTON ID_EXITSEPARATORBUTTON ID_EDIT_COPYBUTTON ID_EDIT_PASTESEPARATORBUTTON ID_APP_ABOUTEND/////////////////////////////////////////////////////////////////////////////// MenuIDR_MAINFRAME MENUBEGINPOPUP "文件(&F)"BEGINMENUITEM "打开(&O)", ID_OPENMENUITEM "退出(&X)", ID_EXITENDPOPUP "视图(&V)"BEGINPOPUP "工具栏(&T)"BEGINMENUITEM "标准(&S)", ID_VIEW_STANDARD ENDENDEND///////////////////////////////////////////////////////////////////////////// STRINGTABLEBEGINIDS_TIME " "END/////////////////////////////////////////////////////////////////////////////// BitmapIDR_MAINFRAME BITMAP "res\\toolbar1.bmp"/////////////////////////////////////////////////////////////////////////////// ToolbarIDR_MAINFRAME TOOLBAR 16, 15BEGINBUTTON ID_OPENBUTTON ID_EXITSEPARATORBUTTON ID_EDIT_COPYBUTTON ID_EDIT_PASTESEPARATORBUTTON ID_APP_ABOUTEND/////////////////////////////////////////////////////////////////////////////// MenuIDR_MAINFRAME MENUBEGINPOPUP "文件(&F)"BEGINMENUITEM "打开(&O)", ID_OPENMENUITEM "退出(&X)", ID_EXITENDPOPUP "视图(&V)"BEGINPOPUP "工具栏(&T)"BEGINMENUITEM "标准(&S)", ID_VIEW_STANDARD ENDENDEND///////////////////////////////////////////////////////////////////////////// STRINGTABLEBEGINIDS_TIME " "END运行结果:。
GUI实践-为窗口添加菜单条和工具条
实践——为窗口添加菜单条和工具条步骤1:新建工程,以自己的学号命名:如。
在建好的java project里,新建可视化类mainFrame,继承自swing包中的JFrame类,窗口自带内容面板名称为“jContentPane”,将窗口的标题改为“主窗体”,修改窗口的属性,将“visiable”属性改为“true”;步骤2:修改jContentPane,将其“layout”属性改为“null”;步骤3:下面开始制作菜单,打开可视化编辑区域右侧浮动的组件面板“Palette”,添加菜单条,在“swing menus”页中选中JMenuBar,单击拖动到“mainFrame”,将其命名为“jJMenuBar”;注意:也可以在“java beans”页面,选中“this-“主窗体”,再进行拖动。
步骤4:打开可视化编辑区域右侧浮动的组件面板“Palette”,添加菜单,在“swing menus”页中选中JMenu,单击拖动到“jJMenuBar”,将其命名为“jMenu1”;修改“jMenu1”的“text”属性为“文件”。
步骤5:打开可视化编辑区域右侧浮动的组件面板“Palette”,添加菜单项,在“swing menus”页中选中JMenuItem,单击拖动到“jMenu1”,将其命名为“jMenuItem1”;修改“jMenuItem1”的“text”属性为“新建”。
步骤6:重复步骤5的操作,新建菜单项“jMenuItem2”;修改“jMenuItem2”的“text”属性为“保存”。
步骤7:重复步骤5的操作,新建菜单项“jMenuItem3”;修改“jMenuItem3”的“text”属性为“退出”。
步骤8:打开可视化编辑区域右侧浮动的组件面板“Palette”,添加工具栏,在“swing menus”页中选中JToolBar,单击拖动到“jContentPane”,将其命名为“jJToolBarBar”;在可视化编辑区合理调整工具条的大小;步骤9:打开可视化编辑区域右侧浮动的组件面板“Palette”,添加工具栏里面的按钮,在“Swing Components”页中选中JButton,单击拖动到“jJToolBarBar”,将其命名为“jButton1”;修改“jButton1”的“icon”属性,给按钮添加一幅图片;可以从工程目录里添加,也可以从本地硬盘的某个位置添加;步骤10:重复步骤9,再给工具条添加一个按钮;步骤11:给菜单项“退出”添加事件处理代码;在Eclipse工作台的左下角“java bean”页面中选中“退出”菜单项,单击右键,在弹出的快捷菜单中选中“Event”,在弹出的二级菜单中选中“action performed”单击,此时编译环境自动生成了“退出”菜单项的动作事件处理代码框架如下:jMenuItem2.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent e) {System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()}});在方法体里添加如下:System.exit(0);步骤12:重复步骤11,也可以给工具栏中的某个按钮添加事件处理。
WinForm窗体菜单和工具栏
WinForm窗体菜单和⼯具栏1.ContextMenuStrip右键菜单控件/窗体属性中的⾏为属性中ContextMenuStrip来进⾏选择使⽤2.MenuStrip可以⾃⼰编辑的的菜单栏每⼀个选项都有⾃⼰的属性属性中外观属性Image设置每个选项前⾯的⼩图标"-"作为分割线,也可以右键选择插⼊,⾥⾯也有分割线右键插⼊标准项,可以插⼊程序⾃带的模板,减少编辑时间选中某个选项,找到属性中的ShortCutKey来实现编辑这个选项的快捷键菜单栏右边还有个⼩箭头.也可选择添加ComBox下拉菜单,和TextBox⽂本框3.StatusStrip底部状态栏StatusLabel可以添加图标,⽂字,和Label⼀样ProgressBar可以添加进度条DropDownButton下拉菜单,点击图⽚也能下拉SplitButton下拉菜单,点击图⽚不能下拉,只能点击箭头下拉4.ToolStrip⼯具栏控件为⾼度可配置的、可扩展的控件,它提供了许多属性、⽅法和事件,可⽤来⾃定义外观和⾏为,可与ToolStripContainer配合使⽤,⽤户可⾃⾏调整位置 Dock 获取或设置 ToolStrip 停靠在⽗容器的哪⼀边缘。
AllowItemReorder 获取或设置⼀个值,让该值指⽰拖放和项重新排序是否专门由 ToolStrip 类进⾏处理。
LayoutStyle 获取或设置⼀个值,让该值指⽰ ToolStrip 如何对其项进⾏布局。
Overflow 获取或设置是将 ToolStripItem 附加到 ToolStrip,附加到 ToolStripOverflowButton,还是让它在这两者之间浮动。
IsDropDown 获取⼀个值,该值指⽰单击 ToolStripItem 时,ToolStripItem 是否显⽰下拉列表中的其他项。
OverflowButton 获取 ToolStripItem,它是启⽤了溢出的 ToolStrip 的“溢出”按钮。
教学课件第9章菜单和工具栏
显示弹出式菜单
• PopupMenu方法
格式:
[对象名.]PopupMenu 主菜单项名 “对象名”是弹出式菜单的窗体名。
“对象名”省略时代表当前窗体。 其功能是在窗体的鼠标所在位置显示弹出
式菜单。
弹出式菜单示例
【例】为上例增加弹出式菜单,当用户用鼠标右键单击窗体 时,显示字体效果菜单。
使用ImageList控件管理按钮图片
• 在“关键字”中的字符串是每个图像唯一的 名称,访问某个图像既可以使用图像的索引 号,也可以使用关键字(便于记忆);
ToolBar与ImageList建立关联
Toolbar控件只有与ImageList关联后,才 能使用其中的图像。有两种方法:
• Toolbar 控件的“属性页”中的“图象列表” 组合框列出了窗体中所有的ImageList控件名 称,选中需要的那个ImageList控件
• 对于剪切和复制菜单来说,应该根据文本框中 是否有文本被选择来决定菜单是否生效,该功 能 由 子 程 序 SetEnabledValue 来 负 责 。 在 按 下 编辑菜单时决定子菜单的有效性。
' 按下编辑菜单
Private Sub mnuEdit_Click() ' 设置剪切和复制菜单的有效性 If Text1.SelLength <> 0 Then '判断是否有选择文本
' 粗体菜单被按下
Private Sub mnuFontBold_Click()
PrmivnauteFsounbtBmolndu.Cfohnetcuknedde=rliNneo_t cmlincku(F)ontBold.Checked
在用户窗体上添加菜单
在⽤户窗体上添加菜单技巧1 在⽤户窗体上添加菜单在VBA中,⽤户窗体上是没有菜单的,为了使⽤⽅便,我们可以使⽤API函数在⽤户窗体上添加菜单,⽰例代码如下:#001 Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long #002 Private Declare Function SetMenu Lib "user32" (ByVal hwnd As Long, ByVal hMenu As Long) As Long#003 Private Declare Function CreateMenu Lib "user32" () As Long#004 Private Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long#005 Private Declare Function DestroyMenu Lib "user32" (ByVal hMenu As Long) As Long#006 Private Declare Function CreatePopupMenu Lib "user32" () As Long #007 Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long#008 Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long #009 Private Const GWL_WNDPROC = (-4)#010 Private Const MF_STRING = &H0 Private Const MF_POPUP = &H10 Private Const MF_SEPARATOR = &H800
 Dim MenuWnd As Long, Dump As Long, PopupMenuID As Long, PopupMenuWnd As Long, MenuID As Long#014 Private Sub UserForm_Initialize()#015 If Val(Application.Version) < 9 Then#016 hwnd = FindWindow("ThunderXFrame", Me.Caption)#017 Else#018 hwnd = FindWindow("ThunderDFrame", Me.Caption)#019 End If#020 MenuWnd = CreateMenu()#021 PopupMenuID = CreatePopupMenu()#022 Dump = AppendMenu(MenuWnd, MF_STRING + MF_POPUP, PopupMenuID, "系统设置(&X)")#023 Dump = AppendMenu(PopupMenuID, MF_STRING, 100, "保存(&S)...") #024 Dump = AppendMenu(PopupMenuID, MF_STRING, 101, "备份(&E)")#025 Dump = AppendMenu(PopupMenuID, MF_STRING, 102, "退出(&X)")#026 PopupMenuID = CreatePopupMenu()#027 Dump = AppendMenu(MenuWnd, MF_STRING + MF_POPUP, PopupMenuID, "会计凭证(&P)")#028 Dump = AppendMenu(PopupMenuID, MF_STRING, 110, "录⼊(&L)")#029 Dump = AppendMenu(PopupMenuID, MF_STRING, 111, "审核(&C)")#030 PopupMenuID = CreatePopupMenu()#031 Dump = AppendMenu(MenuWnd, MF_STRING + MF_POPUP, PopupMenuID, "会计账簿(&Z)")#032 Dump = AppendMenu(PopupMenuID, MF_STRING, 112, "记账(&T)")#033 Dump = AppendMenu(PopupMenuID, MF_STRING, 113, "结账(&J)")#034 PopupMenuID = CreatePopupMenu()#035 Dump = AppendMenu(MenuWnd, MF_STRING + MF_POPUP, PopupMenuID, "会计报表(&B)")#036 Dump = AppendMenu(PopupMenuID, MF_STRING, 114, "资产负债表(&F)") #037 Dump =AppendMenu(PopupMenuID, MF_STRING, 115, "损益表(&Y)")#038 Dump = SetMenu(hwnd, MenuWnd)#039 PreWinProc = GetWindowLong(hwnd, GWL_WNDPROC)#040 SetWindowLong hwnd, GWL_WNDPROC, AddressOf MsgProcess#041 End Sub#042 Private Sub UserForm_Terminate()#043 DestroyMenu MenuWnd#044 DestroyMenu PopupMenuID#045 DestroyMenu PopupMenuWnd#046 SetWindowLong hwnd, GWL_WNDPROC, PreWinProc#047 End Sub代码解析:第1⾏到第13⾏代码,API函数声明。
《菜单和工具栏》课件
菜单和工具栏的设计原则:简洁、直观、 易于操作
实例2:Adobe Photoshop的工具栏,使 用图标和颜色进行区分,易于识别和使用
设计技巧:使用图标、颜色、字体等元 素进行区分和引导
实例3:Google Chrome的浏览器工 具栏,简洁直观,易于操作
实例1:Microsoft Office的Ribbon菜 单,将功能分类,易于查找和使用
,
汇报人:
CONTENTS
添加目录标题
菜单栏
工具栏
菜单和工具栏 的关联与区别
菜单和工具栏 的设计原则与 技巧
PART ONE
PART TWO
文件菜单:用 编辑菜单:用
于打开、保存、 于复制、粘贴、
打印等文件操 剪切等编辑操
作
作
视图菜单:用 于调整视图、 显示比例等操
作
插入菜单:用 于插入图片、 表格、形状等
“关闭工具栏”即可
隐藏工具栏:点击工具栏上的“隐藏”按钮,或者使用快捷键Ctrl+F1
显示工具栏:点击工具栏上的“显示”按钮,或者使用快捷键Ctrl+F1
自定义工具栏:用户可以根据自己的需求,自定义工具栏上的按钮和功能
工具栏的锁定与解锁:用户可以锁定工具栏,防止意外移动或删除;也可以解锁工具栏,以便 进行自定义和调整。
交互性:菜单和工具栏的设 计应具有交互性,让用户能 够与软件进行有效的互动。
创新性:菜单和工具栏的设 计应具有创新性,让用户在 使用过程中感到新颖和惊喜。
汇报人:
右侧等
菜单栏样式: 用户可以选择 菜单栏的样式, 如颜色、字体、
大小等
快捷键:用户 可以为菜单项 设置快捷键, 方便快速操作
隐藏菜单栏:点击菜单栏右上角的“隐藏” 按钮,或按快捷键Ctrl+F10
第9章菜单
格式:对象名称. PopupMenu
功能:显示弹出式菜单
菜单名 [,Flags, X,Y, BoldCommand]
9.2 弹出式菜单
设计弹出式菜单项时要注意以下几个问题:
1、只有作为弹出式菜单的菜单名的主菜单项的
Visible属性要设为False,菜单中菜单项的 Visible属性如何设置,应根据需要决定。
ቤተ መጻሕፍቲ ባይዱ
案例讲解
执行的菜单操作不适合当前环境时,可以使其暂时
失效或干脆将其隐藏起来,当需要时也可以向菜单 中添加或删除某菜单项。但隐藏或再现菜单项并不
能真正地改变菜单中菜单项的数量,要使菜单项能
够动态地增减,要通过控件数组来实现。实现菜单 的动态变化,方法是:1、改变Visible属性。2、使 用菜单控件数组。
案例讲解
2、主菜单项的Visible属性设为False,只是为了
避免它显示在菜单栏上,与它是否为弹出式菜单 没有必然联系。
3、在菜单编辑器中可以同时设计弹出式菜单和下
拉式菜单
返回
9.3 菜单控件数组及菜单项的增减
在实际应用中,有时需要自动增减菜单项的操
作。用户可以根据实际情况动态地调整和控制菜单 的使用,增加菜单的灵活性。比如,当某个菜单项
第9章菜单和工具栏
if inlist(obj.baseclass,"Textbox","Editbox","C ombobox")
obj.fontsize=this.value
endif
粗体命令按钮 CLICK事件 obj=_screen.activeform.activecontrol
if inlist(obj.baseclass,"Textbox","Editbox","C ombobox")
obj.FONTBOLD=!OBJ.FONTBOLD
bj=_screen.activeform.activecontrol
if inlist(obj.baseclass,"Textbox","Editbox","C ombobox")
• 菜单文件 .MNX,.MNT; • 生成和执行菜单程序 : 菜单----生成
菜单程序文件: .MPR 命令: DO 文件名.MPR 项目管理器---运行
9.1.4 配置VFP系统菜单(自学)
• SET SYSMENU 命令
–SET SYSMENU ON|OFF|AUTOMATIC|TO [ 菜 单 列 表 ]|TO [ 菜 单 标 题 列 表 ] |TO[DEFAULT]|SAVE|NOSAVE
9.2.3 添加到表单集中
• 打开表单 • 创建表单集 • 从项目管理器拖动
9.2.4 定制工具栏运行状态
• MOVABLE:是否可用鼠标拖动 • DOCK方法:泊留状态 DOCK(NLOCATION[,X,Y])P268 表 INIT:THIS.DOCK(0)
零点起飞学Visual Basic之功能列表——菜单和工具栏
剪切
9.1.3 创建多级菜单
• Windows应用程序中典型菜单一般都包含多级菜单。
顶层菜单项是在应用程序中菜单栏显示的菜单项。单 击顶层菜单项打开该项的子菜单。子菜单中的每一项 都可以代表一个程序命令或另一个子菜单,如图9.8所 示。“文件”是菜单栏标题,其下包含“新建”、
“打开”等几个子菜单。其中,“新建”子菜单下还
1.菜单模板向导
• 菜单模板向导可以添加标准应用程序菜单。默认情况
下,Visual Basic不会显示菜单模板。菜单模板属于 Visual Basic的外接程序,可以通过“外接程序”|“外 接程序管理器”命令来完成。
【示例9-1】
• 使用菜单栏模板创建一个菜单栏,包括“文件”、
“编辑”、“帮助”菜单命令。操作过程如下所示。 • (1)选择“外接程序”|“外接程序管理器”命令,弹 出“外接程序管理器”对话框,如图9.2所示。
表9.3 修改菜单
操 作 选择 单击“列表框”中菜单项 步 骤
更改 缩进
可以更改缩进级别; 增加一个级别; 减少一个级别; 可以上下移动菜单项,其相应缩进级别无变化
插入
选择待插入菜单前一个菜单项,单击“菜单编辑器”中“插入”按钮,在下一行自动增 加一个高亮菜单项。新菜单项的缩进级别与下方菜单项相同 选择“列表框”中待删除菜单,单击“菜单编辑器”列表框上部“删除”按钮
• Mnufilesave.enable=False
(3)可见Visible
• Checked属性只有True或False。上面的代码利用布尔逻
辑Not表示相反取值,表示切换复选属性。
(2)有效Enable
【示例9-7】
• 以“文件”|“保存”菜单项为例设置。当无文档打开
VB考试题库答案2
1. Visual Basic 程序设计语言属于【C】。
A.面向过程的语言B.面向问题的语言C.面向对象的语言D.面向机器的语言4.计算机能够直接执行的程序是【B 】。
A.源程序B.机器语言C.高级语言程序D.汇编语言程序5.在面向对象的程序设计中,【 A 】是程序设计的基本单位。
6.A.对象B.类C.属性D.方法7. 下面符合Visual Basic 的特点是【C 】。
A.简单的程序设计方法B.面向程序设计思想C.事件驱动的编程机制D.非结构化程序设计语言第2 章Visua1 Basic 程序设计概述一、选择题4.新建一工程,将其窗体的(名称)属性设置为MyFirst,则默认的窗体文件名为【C 】。
A.Forml.frmB.工程1.frmC.MyFirst.frmD.Forml.vbp10.在Visual Basic 集成开发环境中,如果工具箱不可见,应在【B 】菜单中操作而使它可见。
A.窗口B.视图C.编辑D.文件11.在设计阶段,当双击窗体上的某个控件时,所打开的窗口是【C 】。
A.工程资源管理器窗口B.工具箱窗口C.代码窗口D.属性窗口17.要在窗体上显示图片,需设置窗体的【C 】属性。
A.CaptionB.IconC.PictureD.ControlBox19.将窗体的【A 】属性设置为False 后,运行时窗体上的按扭、文本框等控件就不会对用户的操作做出响应。
A.EnabledB.VisibleC.ControlBoxD.WindowState21.在设计阶段,双击窗体Forml 的空白处,打开代码窗口,显示【D 】事件过程模板。
A.Form_ClickB.Form_LoadC.Form1_ClickD.Form1_Load22.在运行时,系统自动执行启动窗体的【C 】事件过程。
A.ClickB.GotFocusC.LoadD.UnLoad27.如果设计时在属性窗口将命令按钮的【A】属性设置为False,则运行时按钮从窗体上消失。
窗体工具栏及控件工具栏
窗体工具栏与控件工具栏基础工作表菜单“视图——工具栏”或在菜单栏点击右键,在下拉菜单中有两个内容比较相似工具栏,即“窗体”工具栏和“控件工具箱”工具栏,如以下图所示。
其中,“窗体”工具栏有16个命令按钮,依次为:标签、编辑框,分组框、按钮、复选框、选项按钮,列表框、组合框,组合式列表编辑框、组合式下拉编辑框,转动条、微调项,控件属性、编辑代码,切换网格、执行对话框。
“控件工具箱”是提供ActiveX控件的工具栏,有15个命令按钮,依次为:设计模式、属性、查看代码,复选框、文本框、命令按钮、选项按钮、列表框、组合框、切换按钮、数值调剂钮、转动条、标签、图像,其他控件。
其中某些控件看上去与“窗体”工具栏中的控件相同,功能也相似,还有一些控件(例如,切换按钮和图像控件)在“窗体”工具栏上不可用。
“控件工具箱”还包括通过其他程序安装的自概念ActiveX控件,例如:通过Microsoft Internet Explorer安装的Active Movie控件。
一、一些概念控件是放置于窗体上的一些图形对象,可用来显示或输入数据、执行操作或使窗体更易于阅读。
这些对象包括文本框、列表框、选项按钮、命令按钮及其他一些对象。
控件提供给用户一些可供选择的选项,或是某些按钮,单击后可运行宏程序。
Microsoft Excel 有两种类型的控件。
ActiveX 控件即控件工具箱控件适用于大多数情形,与Microsoft Visual Basic for Applications (VBA) 宏和 Web 脚本一路工作。
“窗体”工具栏上的控件与 Excel 以后的 Excel 初期版本都是兼容的,而且能在 XLM 宏工作表中利用。
ActiveX控件一样为完全可编程的对象,开发者能够利用它们在原应用程序基础上创建自概念的应用程序。
二、Excel中的两类控件◆窗体工具条中的控件这种控件在Excel工作表中是可用的,它们不是ActiveX控件,与控件工具箱中的控件不一样,而且不如ActiveX控件灵活。
在用户窗体上添加工具栏
技巧1 在用户窗体上添加工具栏
在错误!未找到引用源。
中我们在用户窗体上使用API函数添加了菜单,还可以在用
户窗体上继续添加工具栏用以显示一列下拉菜单的位图按钮,单击一个工具栏按钮等于选择
一个菜单命令,以提供对常用功能和命令的快速访问。
在用户窗体上添加工具栏可以使用Toolbar控件,在设计模式下右键单击“工具箱”,在显示的右键菜单中选择“附加控件”,在显示的对话框中选择“Microsoft Toolbar Control,veision 6.0”控件,在用户窗体上添加一个Toolbar控件。
如图1-1所示。
图1-1 选择Toolbar控件
因为需要在Toolbar控件按钮中使用图标,所以还需要在用户窗体中添加一个ImageList 控件保存所需要的图像文件,在ImageList控件的属性页中插入6张图片,如图1-2所示。
第9章-菜单、工具栏和状态栏ppt课件(全)
• (5)创建子菜单项:选中菜单执行弹出式菜单中 的“Create SubMenu”菜单。
• 菜单的属性: • (1)Caption属性和Name属性:用于设置菜单
的标题,如图9-2所示的“文件”、“新建”等。 Name属性默认值一般为n1、n2、n3等等。
• n3.Visible:=False; //“打开”菜单不显示
(3)Enabled属性:菜单是否有效。
例如:假设n1是“文件”菜单的Name属性,n3是“打开” 菜单的Name属性。
n3.Enabled:=False; // “打开”菜单无效
n1.Enabled:=False; //整个“文件”菜单无效
它的Checked属性值不断改变。 • //n3菜单不需要编写代码,每次单击n3,n3的
Checked属性值能自动改变。 • (6)RadioItem属性和GroupIndex属性:用于设
置单选菜单项,值为true时表示该菜单为单选菜单 项。如果多个菜单的RadioItem属性都是True,且 它们的GroupIndex(整型,取值范围0~255)相同, 则这些菜单项是一组单选菜单,任何时刻仅可以选 择其中一个菜单项。
richedit1.SelAttributes.Size:=20 • end;
• procedure TForm1.N19Click(Sender: TObject); • begin • if n19.Checked then
:='宋体' • end;
• 下面示例给出了Caption的一些用法,例如:
• n2.Caption :='新建'; //菜单标题是新建,n2是新建菜单 的Name属性
vb菜单与工具栏设计(9)
(3)索引:此文本框用来为用户建立的控件
数组设立下标,相当于控件数组的Index属性。
(4)快捷键:此下拉列表框用来设置与某菜
单项等价的快捷键。在程序运行时,按下快捷键 会立刻运行一个菜单项。快捷键的赋值包括功能 键与控制键的组合,它们出现在菜单中相应菜单 项的右边。
(5)帮助上下文:此文本框用于输入在帮助文
Private Sub Iput_Click() 输入菜单代码 Text1.Text="" End Sub Private Sub disp_Click() 显示菜单代码 output.Caption=Text1.Text
End Sub
Private Sub clear_Click() 清除菜单代码 Text1.Text="" output.Caption="" End Sub
③ 按【Tab】键(或用鼠标)把输入光标移到 “名称”文本框。 ④ 在“名称”文本框中输入“Input”,此时菜单 项显示区中没有变化。 ⑤ 将此菜单项的Enable(有效)和Visible(可 见)属性都设置为True(本例中所有菜单项的此二 属性皆如此)。 ⑥ 单击编辑区中的“下一个”按钮,菜单项显示 区中的条形光标下移,同时数据区的“标题”文本 框和“名称”文本框被清空,光标回到“标题”文 本框。 ⑦ 在“标题”文本框中输入“输入”,该信息同 时在菜单项显示区中显示出来。
(2)上、下箭头:用来在菜单项显示区内移
动菜单项的位置。把条形光标移动到某个菜单项 上,单击上箭头将使该菜单项上移,单击下箭头 将使该菜单项下移。
(3)下一个:新建一个菜单项(与按【Enter】
键作用相同)。
(4)插入:在当前菜单项之前插入一个新的菜
VB程序设计第九章菜单
VB系统提供的基于Windows的通用对话框: ● “打开”对话框(Open)
● “另存为”对话框(Save) ● “颜色”对话框(Color) ● “字体”对话框(Font) ● “打印机”对话框(Printer) ● “帮助”对话框(Help)
9.2 对话框
9.2.1 通用对话框
Private Sub sub_Click() Label1.Caption = "-" Label3.Caption = Val(Text1.Text) + Val(Text2.Text)
End Sub
9.1 菜单
9.1 下拉式菜单
动态菜单的设计 动态菜单是指菜单项或菜单命令在程序的运行过程中有增有减; 可设计一个菜单控件数组,即同一菜单上享有相同的名称和事件过程的
属性值
说明
字符型数据 指定菜单项或菜单命令显示的字符串
名称(Name)
字符型数据 指定菜单控件的名称
Байду номын сангаас
索引 快捷键
整型数据 字符型数据
指定一个数字来确定菜单项或菜单命令在菜单控件数 组中的序号,该序号与各菜单控件的位置无关
指定菜单命令的快捷键
复选
逻辑型数据 指定是否允许在菜单项的左边设置复选标记
有效
逻辑型数据 指定该菜单项是否可操作
对象名:可选项,默认为当前窗体; 菜单名:必选项,要显示的弹出式菜单名,是在菜单编辑器中定义的
主菜单标题,该主菜单标题至少含有一个子菜单; flags:可选项,是一个数值或符号常量,用于指定弹出式菜单的位置
和行为;
9.1 菜单
9.1.2 弹出式菜单
Flags取值表:
清华大学VB经典教案第九节——菜单工具栏与对话框
9.1 菜单的设计 菜单可以分成两种基本类型:下拉式菜单和弹出式菜单。 下拉式菜单一般位于窗口或窗体标题栏的下面,又称为窗口菜 单,如图9-1所示;弹出式菜单一般用鼠标右键弹出,又称为 快捷菜单,如图9-2所示。
主菜单项 分隔线 子菜单项
对话框菜单项 快捷键
访问键
菜单命令
子菜单中的菜单项有四种类型:菜单命令、子菜单项、对 话框菜单项和分隔线。菜单命令是直接执行相应命令的菜单项, 子菜单项包含下一级子菜单,对话框菜单项将出现一个对话框, 分隔线主要对菜单项进行分组。 一般情况下,菜单项用鼠标单击选择,也可以通过键盘选 择菜单项,用键盘选择菜单项通常有两种方法:快捷键或热键、 访问键。 弹出式菜单的组成与下拉式菜单的组成类似,弹出式菜单 的菜单项一般没有快捷键;访问键的用法是:弹出菜单后直接 按下划线字母键。弹出菜单的父菜单项(上一级菜单项)不会 被显示在弹出式菜单中。 9.1.1 菜单控件 在Visual Basic中,每一个菜单项就是一个菜单控件。 1.菜单控件的事件 菜单控件只有一个事件Click,但作为分隔线的菜单控件 不响应Click事件。
(4)x、y为显示弹出式菜单的坐标,默认为鼠标指针所在 的位置坐标; (5)BoldCommand指定在弹出菜单中以粗体字显示的菜单 项的名称,但最多只能有一个菜单项加粗显示; (6)将下拉式菜单的子菜单作为弹出式菜单时,直接用步 骤(2)实现。 一般情况下,在PopupMenu方法中,<菜单名>后的所有 参数都省略。 【例9-4】在例9-3中,将主菜单项“字体”下的子菜单作为标 签的弹出式菜单,如图9-7所示;将主菜单项“前景色”下的 子菜单作为窗体的弹出式菜单,如图9-8所示。
3.菜单项列表区 输入的菜单项以列表的形式显示在菜单项列表区,通过 内缩符号“….”表明菜单项的层次。 注意:内缩符号“….”是通过菜单项编辑区的第二个命令 按钮为菜单控件加入的,不能通过键盘在菜单控件的Caption 属性中直接输入。 9.1.3 下拉式菜单设计
向任务栏添加工具栏的常用操作方法
向任务栏添加工具栏的常用操作方法
嘿,朋友们!咱今天就来讲讲怎么给任务栏添加工具栏,这可是个很实用的小技巧哦!
你想想看,就好像给你的电脑桌面来了个小装修,让它变得更顺手、更方便。
比如说,你经常要用一些特定的程序或者功能,每次都要去到处找,多麻烦呀!但如果把它们放到任务栏的工具栏里,那就像把常用的东西都放在手边一样,一伸手就能拿到。
其实操作起来也不难。
就好比你要整理一个小抽屉,先找到那个放东西的地方嘛。
在电脑上呢,你就在任务栏上右键单击,嘿,这就找到入口啦!然后呢,就会弹出一个菜单,这里面就有添加工具栏的选项哦。
这时候你可能会问啦,那添加啥工具栏呢?这就看你自己的需求啦!如果你经常处理图片,那就把图片工具的工具栏加上;要是你是个文档达人,那文档相关的工具栏就很合适呀。
就像你喜欢吃苹果,那就把苹果放在最容易拿到的地方;喜欢吃香蕉,就把香蕉也放那。
电脑也是一样,把你常用的工具都放进去,让它们随时准备为你服务。
而且哦,添加了工具栏之后,你会发现工作效率都提高了不少呢!不用再在一堆程序里翻来翻去,直接在任务栏上点一点就好啦。
这多方便呀,是不是?就好像你有了一个专属的小助手,随时听候你的差遣。
你再想想,要是没有这个工具栏,每次都要费好大劲去找那些常用的东西,多浪费时间呀!现在有了这个小技巧,就能让你的电脑使用体验变得更愉快、更高效。
所以呀,赶紧去试试吧,给你的任务栏也来个小改造,让它变得更贴心、更实用。
别再犹豫啦,相信你试过之后就会感叹:哎呀,怎么早没发现这么好用的办法呢!
原创不易,请尊重原创,谢谢!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7
9.1.7 为菜单项分配快捷键
• ShortCutKeys属性:定义快捷键。
8
9.2 使用工具栏控件
• • • • 控件:ToolStrip 工具栏项实际上是菜单项的快捷方式。 TooLStrip支持集合Items。 演示。
9
9.2.2 对工具栏进行编程
• Click事件
10
9.2.3 为工具栏按钮创建下拉菜单
4
9.1.2 创建顶级菜单的菜单项
• 演示
5
9.1.5 对菜单进行编程
• 每个菜单项都是一个唯一的对象。 • 菜单项的事件:Click
6
9.1.6 实现上下文菜单
• 控件:ContextMenuStrip • 位于窗体给不可见控件预留的底部空间中。 • 绑定对象的ContextMenuStrip属性设为相 应的上下文控件。
• 控件:MenuStrip • 位于窗体给不可见控件预留的底部空间中,却在窗体上 有可见界面的控件。 • 菜单项:FileToolStripMenuItem • 快捷键
– – – – – 在菜单项名称前加& (或ShortCutKeys属性) Alt+快捷键 应避免一个窗体上的多个顶级菜单项分配一个快捷键。 应避免同一菜单上的多个菜单项不要使用同一热键。 为避免冲突,也可以使用任一字符作为快捷键,而不一定要 使用第一个字符(例如:F&ile)
第9章 为窗体添加菜单和工具栏
1
本章内容
• • • • • • • • 添加、移动和删除菜单项 创建复选菜单项 对菜单进行编程 实现上下文菜单 分配快捷键 创建工具栏项 定义开关按钮和分割符 创建状态栏
2
9.1 创建菜单
• 提供完善的菜单,可以让你的程序更容易学习 和使用。
3
9.1.1 创建顶级的菜单项
• DropDownButton
11
9.3 创建状态栏
• 控件:StatusStrip
12
9.4 分割条控件
• 控件: SplitContainer • 功能:表示一个由可移动条组成的控件, 该可移动条将容器的显示区域分成两个大 小可调的面板。
13• Biblioteka 现“写字板”的界面。14