为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > Delphi中动态生成QQ面板式菜单

Delphi中动态生成QQ面板式菜单

2018-03-26 7页 doc 26KB 17阅读

用户头像

is_079973

暂无简介

举报
Delphi中动态生成QQ面板式菜单Delphi中动态生成QQ面板式菜单 Delp hi 中动态生成 Q Q 面板式菜单 陈振庆 () 广西梧州师范高等专科学校 计算机系 ,广西贺州 542800 [ 摘 要 ] Q Q 面板式菜单属于动态菜单范畴 ,但由于动态生成控件数目不定 ,在 Delp hi 中直 接用控件工具箱在 Fo r m 中设计就无法实现 ,文章采用数据源来自数据库的方法 ,结合 delp hi 中控件 生成和动态数组等技术 ,实现动态生成 Q Q 面板式菜单 。 [ 关键词 ]动态生成 ;动态数组 ;响应事件 delp hi ; ()...
Delphi中动态生成QQ面板式菜单
Delphi中动态生成QQ面板式菜单 Delp hi 中动态生成 Q Q 面板式菜单 陈振庆 () 广西梧州师范高等专科学校 计算机系 ,广西贺州 542800 [ 摘 要 ] Q Q 面板式菜单属于动态菜单范畴 ,但由于动态生成控件数目不定 ,在 Delp hi 中直 接用控件工具箱在 Fo r m 中就无法实现 ,文章采用数据源来自数据库的方法 ,结合 delp hi 中控件 生成和动态数组等技术 ,实现动态生成 Q Q 面板式菜单 。 [ 关键词 ]动态生成 ;动态数组 ;响应事件 delp hi ; () T P314 [ 分类号 ][ 文献标识码 ] A [ 文章编号 ]1008 - 8113 200506 - 0067 - 03 2 . 2 控件类型选择 1 引言 () ( 1Tgro up bo x 分 组 控 件 , 使 滚 动 控 件 捆 绑 成 ) 组。 Delp hi 是一种优秀的可视化编程语言 ,具有丰富 () () 2Tbut to n 标准按钮控件 ,用于主菜单项。的编程环境 、友好的界面 、高速的编译器 、强大的数据 () (3Tsp ee db ut to n 快捷按钮 ,适合显示头像和文 库开发功能及独特的控件技术 。delp hi 中生成控件 ) 字 ,用于子菜单。 有两种方法 :一是在 fo r m 中直接利用控件工具箱进() () 4Tscroll bo x 使子菜单滚动显示。行设计 ;二是在程序运行中动态生成 。如果生成控件 2 . 3 选择动态数组数目随着程序运行而变化 ,显然方法难以实现 ,必须 delp hi 中的控件类都带有 creat e 函数 ,调用该函 采用动态生成方法 ,动态生成控件以其灵活多变而深 数可以生成新控件对象 ,控件对象名用数组来存放比 受欢迎 。动态生成控件的数据来源常见有来自 Wi n2 较方便 ,但动态生成控件对象时 ,控件数目具有可变 do w s 的系统注册表 ,来自一个数据库 ,来自一个子目 性 ,所以数组应定义为动态数组 。 录 ,或者来自程序运行的中间结果 ,主要由程序的功 2 . 4 事件响应技巧 能而定 。由于动态生成控件数目的不定性 ,提取数据 事件响应可以通过定义 o nclic k 事件实现 ,静态 和生成控件的临时存储是动态生成控件的关键 。本控件直接定义就可以 ,动态生成的控件采用这样的技 文采用数据源来自数据库的 方 法 , 利 用 delp hi 中 的 ( ) 巧可以实现动态控件事件响应 : 1让所有动态生成 按钮控件 、数据库开发功能和动态数组技术 ,实现动 ( ) 控件的 o nclick 指向某共用过程模块 。2在共用过 态生成 Q Q 面板式菜单 。 程模块中进行按钮检测 ,当点击主菜单项时 ,其下显 示对应子菜单项 ,重新调整各主菜单项位置 ; 当点击 2 实现构思 子菜单时 ,做出子菜单操作响应 。 2 . 5 动态生成步骤 () 2 . 1 确定菜单项数据来源 1动态生成主菜单项组件 ,并设置其属性 ; () delp hi 具有强大的数据库功能 ,利用 Ta ble 控件 2动态生成主菜单项对应的滚动分组组件 ,其 可以从数据表中获得数据 。先把动态控件数据存放 gro up bo x1 ; 上级为 () 在 Q Q N A M E. db 中 , 其中 B mp 字 段存 放头 像位 图 3动态生成子菜单项 ,根据分类设置其上级为 文件的文件名 ,位图文件存放在相应文件夹中 。 相应滚动分组组件和其它属性 ; [ 收稿日期 ] 2005 - 09 - 05 () [ 作者简介 ] 陈振庆 1973, ,男 ,广西藤县人 ,广西梧州师范高等专科学校计算机系讲师 ,研究方向为数据库 、软件 、 面向对象程序设计 。 () 4编写事件响应过程 。 fo r i : = 1 to N do be gi n ( ) scroll bo xa r ra y [ i ] : = t scroll bo x . Creat e self ; / / 生成 Tscroll bo x 控件 3 实现过程 scroll bo xa r ra y [ i ] . L ef t : = 0 ; scroll bo xa r ra y [ i ] . top : = 20 ; 3 . 1 建立菜单框架 scroll bo xa r ra y [ i ] . wi dt h : = 135 ; 建立一窗体 fo r m1 ,在窗体中拖放一个 Ta ble 组 scroll bo xa r ra y [ i ] . hei ght : = 300 ; ( ) 件 Ta bleN A M E 设 置 为 Q Q N A M E. db , 一 个 scroll bo xa r ra y [ i ] . Vi si ble : = f al se ; T Gro up bo x 组 件 gro up bo x1 , 两 个 Tbut to n 控 件 scroll bo xa r ra y [ i ] . p a re nt : = gro up bo x1 ; B ut to n1 和 B ut to n2 ,其 cap tio n 分别为“ - 仿 Q Q 菜 生成滚动条控件并设置其上级 e nd ; / / 单 - ”和“ = = 欢迎使用 = = ”,调整位置 。 scroll bo xa r ra y [ 1 ] . Vi si ble : = t r ue ; 3 . 2 动态生成控件fo r i : = 1 to N do be gi n 软件启动后应该进入用户操作界面 ,所以把动态 ( ) but to na r ray [ i ] : = t b ut to n . creat e self ; 生成控件过程放在 fo r mcreat e 事件中实 现 , 具体 代 / / 生成 Tbut to n 控件 码如下 : if i = 1 t he n but to na r ra y [ i ] . Cap tio n : =’我的u nit qqme nu ; 好友’ ; i nt erf ace if i = 2 t he n but to na r ra y [ i ] . Cap tio n : =’陌生 u se s 人’ ; Wi ndo w s , Me ssa ge s , SysU til s , Va ria nt s , if i = 3 t he n but to na r ra y [ i ] . Cap tio n : =’黑名 Cla sse s , Grap hic s , Co nt rol s , Fo r m s ,Dialo gs , Co m2 单’ ; Ct rl s , St dCt rl s , Ext Ct rl s , B ut to n s , DB , if i = 1 t he n but to na r ray [ i ] . top : = 0 el se DB Ta ble s ; ( but to na r ray [ i ] . Top : = gro up bo x1 . Hei ght - N t yp e ) - i + 13 20 ( )= cla ss T Fo r m T Fo r m1 but to na r ray [ i ] . L ef t : = 0 ; Gro upBo x1 : T Gro upBo x ; but to na r ray [ i ] . wi dt h : = 140 ; Ta ble1 : T Ta ble ; but to na r ray [ i ] . hei ght : = 20 ; B ut to n1 : Tbut to n ; but to na r ray [ i ] . vi si ble : = t r ue ; B ut to n2 : Tbut to n ; but to na r ray [ i ] . p a re nt : = gro up bo x1 ; ( ) p roce dure me nuclic k Se nder : TO bject ; but to na r ray [ i ] . o nclick : = me n uclick ; ( ) p roce dure Fo r mCreat e Se nde r : TO bject ; / / 事件响应指向共用过程模块 。e nd ; e nd ; / / 生成主菜单项控件并定位 co n st N = 3 ; / / 定义主菜单数目 打开数据表 / / t a ble1 . Op e n ; va r ( set le ngt h sp ee dbut to na r ray , t a ble1 . Reco r d2 Fo r m1 : T Fo r m1 ; ) 改变动态数组长度 / / Co unt + 1; sp eedbut to na r ray :a r ra y of Tsp ee db ut to n ; t a ble1 . Fi r st ; / / 数据表指针指向首 / / 定义子菜单项所对应的动态数组记录 b ut to na r ra y :a r ray [ 1 . . N ] of Tbut to n ; fo r i : = 1 to t a ble1 . Reco r dCo u nt do begi n scroll bo xa r ray :a r ra y [ 1 . . N ] of Tscroll bo x ; sp ee dbut to na r ra y [ i ] : = Tsp ee dbut to n . Creat e / / 定义主菜单项和其下滚动条所对应的数组( ) self ; i mp le me nt atio n { ,R 3 . df m} / / 生成 Tsp ee dbut to n 控件 ( TO b2 p rocedure T Fo r m1 . Fo r mCreat e Se nde r : sp ee dbut to na r ra y [ i ] . Vi si ble : = Tr ue ; ) ject ; sp ee dbut to na r ra y [ i ] . L a yo ut : = bl gl yp htop ; va r i ,x ,y ,z :i nt e ge r ; / / 头像位置设置 begi n x : = 0 ; y : = 0 ; z : = 0 ; sp ee dbut to na r ra y [ i ] . Flat : = Tr ue ; 68 / / 设置控件为表面平滑 ,只显示文字 点击主菜单 if se nder = but to na r ray [ i ] t he n / / ( () ) if t ri m t a ble1 . fiel dbyna me ’ Typ e’. Val ue=’ be gi n fo r j : = 1 to N do be gi n 我的好友’ t he n begi n if i = j t he n sp eedbut to na r ray [ i ] . p a re nt : = scroll bo xa r ray scroll bo xa r ra y [ j ] . Vi si ble : = t r ue [ 1 ] ; sp eedbut to na r ray [ i ] . Top : = x 3 60 ; / / el se scroll bo xa r ra y [ j ] . Vi si ble : = f al se ; e nd ; / / 显示相应滚动组件 调整位置 x : = x + 1 ; e nd ; / / 统计成员个数 fo r j : = 1 to i do begi n () ( () ) but to na r ray [ j ] . Top : = j - 13 20 ; if t ri m t a ble1 . fiel dbyna me ’ Typ e’. Val ue=’ scroll bo xa r ra y [ j ] . Top : = j 3 20 ; 陌生人’ t he n be gi n sp eedbut to na r ray [ i ] . p a re nt : = scroll bo xa r ray e nd ; [ 2 ] ; fo r j : = i + 1 to N do be gi n sp eedbut to na r ray [ i ] . Top : = y 3 60 ; but to na r ray [ j ] . top : = fo r m1 . gro up bo x1 . hei ght ( ) N - j + 13 20 ; e nd ; y : = y + 1 ;e nd ; - / / 调整主菜单项位置 ( () ) if t ri m t a ble1 . fiel dbyna me ’ Typ e’. Val ue=’ e xit ; / / 中止 ) (e nd el se be gi n 被点菜单不是主菜单时 黑名单’ t he n be gi n sp eedbut to na r ray [ i ] . p a re nt : = scroll bo xa r ray fo r j : = 1 to t a ble1 . Reco r dCo u nt do begi n [ 3 ] ; if se nde r = sp eedb ut to na r ra y [ i ] t he n / / 点 sp eedbut to na r ray [ i ] . Top : = z 3 60 ; 击子菜单 z : = z + 1 ; e nd ; be gi n / / 统计子菜单项数 ,按分类置于相应滚动条中/ / 加入子菜单响应代码sp eedbut to na r ray [ i ] . Cap tio n : = t a ble1 . fiel d2 e xit ; / / 中止 () byna me ’na me’. Val ue ; e nd ; e nd ; e nd ; e nd ; e nd ; sp eedbut to na r ray [ i ] . L ef t : = 20 ; sp eedbut to na r ray [ i ] . Wi dt h : = 80 ; 4 结语 sp eedbut to na r ray [ i ] . Hei ght : = 50 ; ( sp eedbut to na r ray [ i ] . Gl yp h . lo a df ro mfile t a2 Q Q 面板式菜单具有很强的交互性 ,界面非常友 () ) ble1 . fiel dbyna me ’bmp’. Val ue +’. b mp’; / / 显 好 ,类似这样的动态界面 ,在 delp hi 中可以利用控件 示头像类的 creat e 函数 ,结合动态数组 、设置共同事件响应 t a ble1 . Ne xt ; / / 数据表记录指针下移 过程和程序设计方法与技巧来实现 ,彻底解决了控件e nd ; e nd ; e nd. 数目不定时的动态生成问题 。 3 . 3 事件响应() 以上程序在 delp hi6 . 0 环境下调试通过当用户点击菜单按钮时 , 程序必须做出响应操 [ 参考文献 ] 作 ,由于菜单项是存放在动态数组中 ,检测点击按钮 [ 1 ] 戴宗友 , 张五荣 , 杨辉 . delp hi 程序设计 [ M ] . 北京 : 清华用统一的接口模块来实现比较方便 ,所以采用 me n u2 大学出版社 ,2004 .( click 过程来检测按钮点击并做出响应操作 上述动 [ 2 ] 戴宗友 , 张五荣 , 杨辉 . delp hi 程序设计实训 [ M ] . 北京 : 清华大学出版社 ,2004 . 态生成 控件 的 o nclic k 事 件都 已设 置 为执 行 me n u2 [ 3 ] 魏志强 ,王忠华 ,何敏 ,等 . delp hi5 . 0 程序设计 ———数据库) click 过程,具体代码如下 : 应用实务篇 [ M ] . 北京 :中国铁道出版社 ,2000 . ( [ 4 ] 张春林 . delp hi 程 序 设 计 导 学 [ M ] . 北 京 : 清 华 大 学 出 版p rocedure Tfo r m1 . me nuclick Se nder : TO b2 社 ,2002 .) ject ; [ 5 ] 中国 I T 工种委员会 . delp hi 实例与案例教程 [ M ] . 珠va r i ,j :i nt e ge r ; 海 :珠海出版社 ,2004 . begi n 【责任编辑 :邓崇亮】 fo r i : = 1 to N do begi n
/
本文档为【Delphi中动态生成QQ面板式菜单】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索