vba的窗体中如何添加菜单?

vba的窗体中如何添加菜单?,第1张

VB实现窗口的d出式菜单

在Windows95、Windows98或NT的风格中,有按动鼠标器右键d出下拉菜单的 *** 作,在VB执行环境下,有一些控件本身具有d下拉菜单的功能,如TexTbox控件等,但大多数编辑类控件以及窗体本身却没有此功能,要在窗口中任意位置实现PopUpMenu(d出式菜单),可借助VB的菜单工具来实现。

首先,打开VB的“工具”菜单条,利用“菜单编辑器”为窗体生成一个菜单:

标题(Caption) 菜单条名(Name)

编辑 menuEdit

……复制 mnuCopy

……剪切 munCut

其次,将生成的menuEdit菜单设置为不可视。

Private Sub Form_Load()

Me.menuEdit.Visibe=False

′menuEdit菜单设置为不可视

End Sub

然后,利用MouseDown事件实现任意位置d出PopUpMenu,如下例:

本例中以RichTexBox控件为例,在其上面实现复制、剪切功能。

1.复制功能的实现。

Private Sub MnuCopy_Click()

Clipboar.Clear′将剪贴板清空

′将RichTexBox控件上选择上的内容复制到剪贴板

Clipboard.SetTextRichTexBox1.SelText

End Sub

2.剪切功能的实现。

Private Sub MnuCut_Click()

Clipboard.Clear ′将剪贴板清空

′将RichTextBox控件上选择了的内容复制到剪贴板

Clipboard.SetTextRichBox1.SelText

′将RichTexBox控件上选择了的内容删除

SendKeys〃{DELETE}〃,True

End Sub

3.在RichTexBox控件的MouseDown事件中实现任意位置d出PopUPMenu。

OPrivate Sub RichTexBox1_MouseDown(Button As Integer,Shift As Integer,x As Single,Y As Single)

Dim MnuFile AS Menu ′声明一个菜单类型的变量

Set munFile=Me.MenuEdit ′将MenuEdit赋给菜单变量

if Button=2 Then ′判断是否按动鼠标器右键

′判断RichTexBox控件上选择了的内容是否存在,决定复制、剪切菜单条是否可 *** 作。

If Len(RichTexBox.Text)=0 Or Len(RichTexBox.SelText)=0 Then

mnuCopy.Enabled=Flase ′复制菜单条不可 *** 作。

nmuCut.Enabled=False ′剪切菜单条不可 *** 作。

nmuCopy.Enabled=True ′复制菜单条可 *** 作。

nmuCut.Enabled=True ′剪切菜单条可 *** 作。

End IF

PopupMenu mnuFile ′d出PopUpMenu。

End If

End Sub

这样,在VB执行环境中, *** 作窗体上的RichTexBox控件,按动鼠标器右键就可d出下拉菜单,实现复制、剪切功能。

import javax.swing.* import java.awt.* import java.awt.event.*

public class JMenuBarTest2 extends JFrame implements ActionListener {

    public JMenuBarTest2(){

        super("JMenuBar 练习")

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

        this.setSize(900,900)

        this.getContentPane().setBackground(Color.BLACK)

        

        JMenuBar menubar=new JMenuBar()

        JMenuItem anItem

                

        JMenu menu1=new JMenu("文件")

        anItem=new JMenuItem("打开")  menu1.add(anItem)  anItem.addActionListener(this)

        anItem=new JMenuItem("退出")  menu1.add(anItem)  anItem.addActionListener(this)

        JMenu menu2=new JMenu("视图")

        anItem=new JMenuItem("单屏")  menu2.add(anItem)  anItem.addActionListener(this)

        anItem=new JMenuItem("全屏")  menu2.add(anItem)  anItem.addActionListener(this)

        menubar.add(menu1) 

        menubar.add(menu2) 

        

        this.setJMenuBar(menubar)

        this.setVisible(true)

    }

    

    public void actionPerformed(java.awt.event.ActionEvent e){

        if(e.getSource() instanceof JMenuItem){

            if("退出".equals(((JMenuItem)e.getSource()).getText())){

                this.dispose()

            }

        }

    }

    

    public static void main(String[] args) {

        new JMenuBarTest2()

    }

}

//结构挺清晰的了。小练习,不必另写一个类了。复杂一些的项目,再好好安排类的结构。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11725029.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存