动态生成项目

我们可以在设计菜单的时候,事先添加好Gallery的项目。

我们也可以在运行过程中,动态生成Gallery的项目。

示例一

系统菜单中的插入符号按钮,其实就是一个Gallery(默认展开设置成False了):

这个Gallery的项目就是根据Foxtable安装目录下的文件Symbol.txt动态生成的。

我们看一下系统菜单是如何实现这个功能的,步骤:

1、在菜单中插入一个Gallery,“默认展开”设置为False,标题设置为“符号”,项目宽度和项目高度均设置为24,并指定好小图标。
2、设置Gallery的MouseEnter事件代码为:

If e.Gallery.Items.Count = 0 Then '如果还没有生成项目
    Dim SymbolFile As String ApplicationPath & "symbol.txt"
    If FileSys.FileExists(SymbolFile) Then
       
Dim Str1 As String = FileSys.ReadAllText(SymbolFile, System.Text.Encoding.Default)
        For i As Integer = 0 To Str1.Length -1
            Dim itm As New RibbonMenu.GalleryItem("Symbol" & i)
            itm.Text = Str1(i)
            e.Gallery.Items.Add(itm)
       
Next
    End If           

End
If

需要注意的是,如果Gallery的“默认展开”属性为True,则不能在MouseEnter事件生成项目,应该在菜单的Load事件编写代码生成项目:

Dim Gallery As RibbonMenu.Gallery = RibbonTabs("Common").Groups("Edit").Items("Symbol")
Dim SymbolFile As String ApplicationPath & "symbol.txt"
If FileSys.FileExists(SymbolFile) Then
    Dim Str1 As String = FileSys.ReadAllText(SymbolFile, System.Text.Encoding.Default)
    For i As Integer = 0 To Str1.Length -1
        Dim itm As New RibbonMenu.GalleryItem("Symbol" & i)
        itm.Text = Str1(i)
        Gallery.Items.Add(itm)
    
Next
End If
         

3、设置Gallery的ItemClick事件代码为:

SendKeys.Send(e.GalleryItem.Text)

示例二

希望在菜单中动态生成下面的国家列表,单击某个国家,即可筛选出这个国家的数据:

 设计步骤:

1、首先我们应该准备好所有的国旗图标,为了避免和图片混淆,在项目文件夹中新建一个名为"Flags"的文件夹。
2、所有国旗图标的文件名都和对应的国家一致,例如: 中国.ico,美国.ico
3、在菜单中新建一个Gallery,
“项目标题居下”属性设置为False,项目宽度设置为62,高度设置为20,这里假定国旗图标的尺寸是16*16
4、在菜单的Load事件加上代码:

Dim Gallery As RibbonMenu.Gallery = RibbonTabs("功能区1")("功能组1")("Gallery1")
For
Each File As String In FileSys.GetFiles(ProjectPath & "Flags")
   
Dim itm As New RibbonMenu.GalleryItem(File)
    Dim txt As String = Filesys.GetName(File)
    itm.Image = GetImage(File)
    itm.Text = txt.SubString(0,txt.Length - 4)
   
Gallery.Items.Add(itm)
Next

5、最后将Gallery的ItemClick事件代码设置为:

Tables("表A").Filter = "国家  = '" & e.GalleryItem.Text & "'"

 

 

 


本页地址:http://www.foxtable.com/webhelp/topics/3085.htm