unigui菜单【3】
unigui菜单TuniTreeView
根据数据库表中的内容,显示菜单的处理:
function TMainForm.CreateMenu: Integer;
var
myMenuPoint : PMyMenuRec;
i :Integer;
menu_id ,menu_name, menu_url: string;
mynodes : TUniTreeNodes;
mynode,tmp_node : TUniTreeNode;
begin //建立菜单树
MenuTree.Items.Clear;
mynodes := MenuTree.Items;
MenuTree.BeginUpdate;
with UniMainModule do
begin //取表中菜单
fdqryBase.Open('select* from sm_menu order by menu_id');
fdqryBase.First;
while not fdqryBase.Eof do
begin
menu_id := fdqryBase.FieldByName('menu_id').AsString;
menu_name := fdqryBase.FieldByName('menu_name').AsString;
if fdqryBase.FieldByName('menu_url').AsString = '' then
begin //确认是否根菜单
mynode := mynodes.Add(nil,fdqryBase.FieldByName('menu_name').AsString);
end else
begin tmp_node := mynodes.add(mynode,menu_name);
New(myMenuPoint);
myMenuPoint^.menu_id := menu_id;
myMenuPoint^.menu_name := menu_name;
myMenuPoint^.menu_url := fdqryBase.FieldByName('menu_url').AsString;
tmp_node.Data := myMenuPoint; end;
fdqryBase.Next;
end;
end;
MenuTree.EndUpdate; for i := to MenuTree.Items.Count- do
begin
mynode := MenuTree.Items[i];
if mynode.HasChildren then begin
mynode.ImageIndex := ;
mynode.SelectedIndex := ;
end else begin
mynode.ImageIndex := ;
mynode.SelectedIndex := ;
end;
end;
MenuTree.FullCollapse;
end;
其中item的node有二个属性caption和data。把指针data用起来,在点击时自动调用显示form。
type
PMyMenuRec = ^TMyMenuRec;
TMyMenuRec = Record
menu_id:string;
menu_name:string;
menu_url:string;
end;
点击菜单项的处理
procedure TMainForm.MenuTreeClick(Sender: TObject);
begin
if Assigned(MenuTree.Selected.data) then
begin
if PMyMenuRec(MenuTree.Selected.data).menu_url<>'' then
ShowFrame(PMyMenuRec(MenuTree.Selected.data).menu_name,PMyMenuRec(MenuTree.Selected.data).menu_url);
end;
end;
function TMainForm.ShowFrame(Caption, FormClassName: string): Integer;
var
i: integer;
sheet: TUniTabSheet;
begin
for i := to page.PageCount - do
begin
if page.Pages[i].Caption = Caption then
begin
page.ActivePageIndex := i;
exit;
end;
end;
sheet := TUniTabSheet.Create(Self);
sheet.Closable := True;
sheet.Caption := Caption;
sheet.PageControl := page; FCurrentFrame := TUniFrameClass(FindClass(FormClassName)).Create(Self);
FCurrentFrame.Align := alClient;
FCurrentFrame.Parent := sheet;
page.ActivePage := sheet; end;
表菜单记录。
10 登记客户信息 NULL
1001 新客户 TUniFrmeWebEmbedBase
1002 修改客户 222
20 客户查询 NULL
2001 按地区 43
2002 按行业 3452
30 客户信息统计 NULL
40 客户新机报表 NULL
表结构
CREATE TABLE [dbo].[SM_menu](
[menu_id] [nvarchar](32) NOT NULL,
[menu_name] [nvarchar](30) NULL,
[menu_url] [nvarchar](50) NULL,
CONSTRAINT [PK153] PRIMARY KEY CLUSTERED
(
[menu_id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
unigui菜单【3】的更多相关文章
- unigui web app之菜单
unigui web app之菜单 拖放TUnimMenu控件到窗体上. side:=msleft 表示将在左边显示菜单. 菜单项属性 UnimMenu1.Visible := True;显示菜单 U ...
- uniGUI之UniPopupMenu和右键菜单(27)
0]MainModule的BrowserOptions.boDisableMouseRightClick设置为Trure; 1]控件的OnCellContextClick的事件 procedure T ...
- unigui如何把webApp的子功能映射到微信公众号菜单
只需要用UniApplication.Parameters.Values[‘xxx’]读取url的参数然后调用就可以 例如:要打开公众号菜单的取样送检指南查询模块,在自定义菜单设定:http://ww ...
- unigui不是单个网页相应的链接,而是整体Web Application,如何把webApp的子功能映射到微信公众号菜单?
只需要用UniApplication.Parameters.Values[‘xxx’]读取url的参数然后调用就可以 例如:要打开公众号菜单的取样送检指南查询模块,在自定义菜单设定:http://ww ...
- unigui的菜单树补习【2】treeview
Treeview用于显示按照树形结构进行组织的数据. Treeview控件中一个树形图由节点(TreeNode)和连接线组成.TtreeNode是TTreeview的基本组成单元. ...
- uniGUI试用笔记(十一)
最近研究了一下UniGUI的TuniDBGrid,记录一下免得忘记了. TuniDBGrid的重要属性包括: 1.列—TUniDBGridColumns和TUniDBGridColumn 每个列对象( ...
- uniGUI试用笔记(五)
uniGUI的主窗体可以采用多页面方式进行管理,参考网上的资料,都是用TUniFrame + TUniPageControl 来实现,尝试了一下,效果还不错,如下图: 用TUniFrame 能够使用继 ...
- UNIGUI集成HTML导航
UNIGUI集成HTML导航 先来一个效果图: ajaxRequest(MainForm.window,'openform',[]); procedure TMainForm.UniFormAjaxE ...
- uniGUI for C++ builder之杂七杂八小知识
uniGUI for C++ builder之杂七杂八小知识 2018年09月30日 22:16:05 中国银行之路在脚下 阅读数:41 标签: uniguibuilder 更多 个人分类: C++ ...
随机推荐
- RAID5配置及服务器2003系统安装方法。2000系统的安装要使用7.9版本的引导盘
服务器2003系统安装方法.2000系统的安装要使用7.9版本的引导盘 RAID5配置: 1.为新到的惠普DL380服务器装系统,首先要配置RAID阵列. 如下图进行配置. 启动到如上图阶段,按F8. ...
- 机器视觉: LBP-TOP
之前介绍过机器视觉中常用到的一种特征:LBP http://blog.csdn.net/matrix_space/article/details/50481641 LBP可以有效地处理光照变化,在纹理 ...
- RDA EQ&频响曲线
相关数据: FAC->Audio->EQ Setting EQ Band - Gain Frequency Q Factor 1.5 FAC->Audio->PEQ // En ...
- vue单页面应用刷新网页后vuex的state数据丢失问题以及beforeunload的兼容性
最近在用vue写h5项目,当使用window.location重定向页面或者刷新当前页面时, 发现当刷新网页后,保存在vuex实例store里的数据会丢失. 后来在网上查找大神的解决方案如下: exp ...
- Mybatis 代码自动生成(generatorConfig.xml配置)
博客推荐: Mybatis最入门---代码自动生成(generatorConfig.xml配置) MyBatis Generator generatorConfig.xml配置详解 pom.xml&l ...
- Android SDK Manager 无法更新问题(转载)
先看看如何加快更新速度,再说如何更新. 首先更新host文件,如图,打开目录 C:\Windows\System32\drivers\etc,在目录下有hosts文件 打开方式选用“记事本”打开 将一 ...
- IBatis异常: Cannot find class: VARCHAR
今天再项目里添加新功能时,突然爆出 org.springframework.beans.factory.BeanCreationException: Error creating bean with ...
- 使用adb进行关机(转载)
转自:http://hi.baidu.com/fangqianshu/item/dc52b92d31b2dd1542634a3d 其实进入adb shell,然后执行reboot -p或者直接在命令行 ...
- Tyvj1305最大子序和(单调队列优化dp)
描述 输入一个长度为n的整数序列,从中找出一段不超过M的连续子序列,使得整个序列的和最大. 例如 1,-3,5,1,-2,3 当m=4时,S=5+1-2+3=7当m=2或m=3时,S=5+1=6 输入 ...
- [Swift通天遁地]七、数据与安全-(15)使用单元测试进行代码的性能分析
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...