大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> 程序开发 -> 在Delphi中使用动态图标

在Delphi中使用动态图标

时间: 2021-07-31 作者:daque

在运用步调的编写中,拉拢框(combobox)、列表框(listbox)、等罕见的元件,常常不只要用来表露笔墨,并且还要表露其与笔墨关系的图标。在普遍的windows运用步调中,那些图目标表露都要随列出的表露文本的变革而变革,比方在拉拢框中列出暂时目次下的一切文献时,在拉拢框左边就表露与文献名关系联的图标,这即是所谓的动静图标。在Delphi中使用动态图标的办法如次:  一、图目标获得  要运用动静图标,开始要处置的是怎样赢得表露文本和与其关系联的图标句柄。该图标经过文献关系由体例备案表确定,而且在windows编制程序中同一文献(或子目次,或文献夹)在桌面上也大概有两种表露截止,这即是dos文献名与表露名(display name)。即使咱们的运用步调不须要有像windows资源欣赏器那么的功效,则不妨运用findfirst()和findnext()二个因变量以及findclose()进程来赢得dos文献名,要不咱们就该当运用windowsapi来赢得表露名。在赢得文献名的同声可经过运用shellapi.pas中的shgetfileinfo()因变量来赢得其图标句柄hicon,证明如次:  function shgetfileinfo(pszpath: pansichar; dwfileattributes: dword;var psfi: tshfileinfo; cbfileinfo,uflags: uint): dwordl;  pszpath 参数:指定的文献名。当uflags的取值中不包括 shgfi_pidl时,可径直指定;要不pszpath要经过计划赢得,不许径直指定;   dwfileattributes参数:文献属性,仅当uflags的取值中包括shgfi_usefileattributes时灵验,普遍不必此参数;  psfi 参数:归来赢得的文献消息,是一个记载典型,有以次字段:  hicon: hicon; //文献的图标句柄  iicon: integer; //图目标体例索引号  dwattributes: dword; //文献的属性值  szdisplayname: array [0..max_path-1] of ansichar; //文献的表露名  sztypename: array [0..79] of ansichar; //文献的典型名  cbfileinfo 参数:psfi的比特值;  uflags 参数:指明须要归来的文献消息操作符,常用的有以次常数:  shgfi_icon; //赢得图标  shgfi_displayname; //赢得表露名  shgfi_typename; //赢得典型名  shgfi_attributes;//赢得属性  shgfi_largeicon; //赢得大图标  shgfi_smallicon; //赢得小图标  shgfi_pidl;// pszpath是一个操作符  因变量shgetfileinfo()的归来值也随uflags的取值变革而有所各别。经过挪用shgetfileinfo()不妨由psfi参数获得文献的图标句柄,但要提防在uflags参数中不运用shgfi_pidl时,shgetfileinfo()不许赢得"我的电脑"等虚似文献夹的消息。  二、图目标加载  运用delphi供给的timagelist组件,经过挪用commctrl .pas中的因变量imagelist_addicon()来加载获得的图标,并要保护其索引号与表露文究竟对应。证明如次:  function imagelist_addicon(imagelist: himagelist; //加载图目标imagelist句柄  icon: hicon //加载的图标句柄 ): integer; //归来图标在imagelist中的索引号  在须要指明图标索引号时可运用imagelist_addicon()的归来值。  三、图标和文本的画图式输入  对于拉拢框、列表框等不许径直表露图目标组件,因为诉求表露图目标同声又要同声表露文本,可经过树立其相映的style属性到达手段,示比方下:  拉拢框:combobox1.style:=csownerdrawvariable按照本质运用体味最佳不要在objectinspector窗体市直接树立,而应将代码增添在步调的符合场所,要不大概展示画图地区莫大不准则变革  列表框:listbox1.style:=lbownerdrawvariable   状况栏:statusbar1.panels[i].style:= psownerdraw 不许运用大略状况栏,i是状况栏中要绘绘图目标某一窗格索引号,图形输入可运用timagelist的imagelist1.draw()本领,而文本输入则可运用tcanvas的textout()本领,它由组件的canvas属性接受获得,明显没有canvas属性的组件不许运用此本领表露图标。  对于可径直表露图目标组件,径直指定其images、stateimages等须要的图标属性为相映的timagelist组件名,并经过指定图目标索引号则可表露图标。须要提防的是:在运用大图标时,必需先挪用timagelist的createsize()本领指定可加载图目标尺寸,而且在历次挪用timagelist的clear本领后都要从新挪用createsize()。  运用timagelist的imagelist1.clear本领废除已加载的图标,常在须要革新时运用。

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.