动态生成项目
我们可以在设计菜单的时候,事先添加好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 & "'"