亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

在Delphi中使用動態圖標

2019-11-18 18:23:29
字體:
來源:轉載
供稿:網友
  在應用程序的編寫中,組合框(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方法清除已加載的圖標,常在需要刷新時使用。


上一篇:Delphi背后---初學者參考之二(1)

下一篇:用Delphi建立通訊與數據交換服務器—Transceiver技術剖析(下)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线播放亚洲激情| 亚洲最大福利视频网站| 98精品国产高清在线xxxx天堂| 18久久久久久| 久久久久久久久久久免费精品| 欧美床上激情在线观看| 国产亚洲欧洲高清| 黑人极品videos精品欧美裸| 国产精品久久久久久久av电影| 日韩av免费网站| 国产日韩在线免费| 2019中文字幕在线观看| 欧美视频精品一区| 91免费看片网站| 亚洲欧美在线一区二区| 午夜欧美大片免费观看| 久久精品中文字幕一区| 亚洲人成伊人成综合网久久久| 欧美性猛交xxx| 欧美日韩亚洲一区二区| 91国产精品91| 日韩免费黄色av| 国产精品久久久久久久久久东京| 亚洲国产成人精品一区二区| 国产精品视频网址| 国产精品视频99| 国产性色av一区二区| 亚洲有声小说3d| 色综合伊人色综合网站| 亚洲另类欧美自拍| 日韩禁在线播放| 成人有码在线视频| 精品成人在线视频| 日韩精品视频免费| 自拍偷拍亚洲欧美| 亚洲欧美综合另类中字| 欧美另类极品videosbestfree| 久久人人97超碰精品888| 92福利视频午夜1000合集在线观看| 日韩在线视频网站| 欧美最猛黑人xxxx黑人猛叫黄| 亚洲色图35p| 亚洲天堂视频在线观看| 欧美精品成人在线| 色伦专区97中文字幕| 欧美激情2020午夜免费观看| 国产一区二区三区日韩欧美| 日产日韩在线亚洲欧美| 欧美丰满少妇xxxx| 国产精品成人一区二区三区吃奶| 国产在线拍偷自揄拍精品| 欧美性猛交xxxx| 精品久久香蕉国产线看观看gif| 久久久免费在线观看| 日日骚久久av| 国产精品青青在线观看爽香蕉| 91精品视频免费观看| 欧美一区二区大胆人体摄影专业网站| 国产精品美女免费看| 国产主播喷水一区二区| 亚洲免费福利视频| 欧美性猛交xxxxx水多| 亚洲福利视频二区| 91精品国产色综合久久不卡98| 亚洲色图美腿丝袜| 91网在线免费观看| 国产一区二区三区在线免费观看| 亚洲国内高清视频| 国内精品久久久久影院 日本资源| 成人情趣片在线观看免费| 欧美性猛交xxxx| 亚洲在线视频观看| 亚洲精品在线看| 亚洲自拍小视频免费观看| 国产91精品网站| 福利视频一区二区| 日韩av手机在线看| 日韩中文字幕亚洲| 欧美激情女人20p| 久久噜噜噜精品国产亚洲综合| 亚洲天堂成人在线| 夜色77av精品影院| 国产丝袜一区二区三区| 日韩成人av在线播放| 岛国视频午夜一区免费在线观看| 97精品国产97久久久久久免费| 亚洲精品98久久久久久中文字幕| 国产999精品久久久影片官网| 国产精品午夜一区二区欲梦| 午夜精品久久久久久99热| 日韩国产激情在线| 成年无码av片在线| 欧美亚洲免费电影| 日韩精品高清在线观看| 亚洲视频一区二区三区| 国模精品视频一区二区| 国产精品免费视频久久久| 久热精品视频在线免费观看| 最近2019年好看中文字幕视频| 亚洲成人黄色在线观看| 欧美高清在线视频观看不卡| 亚洲成人教育av| 亚洲free嫩bbb| 成人妇女免费播放久久久| 日韩在线精品一区| 色爱av美腿丝袜综合粉嫩av| 亚洲国产精品va在线| 日韩一中文字幕| 欧美激情第1页| 亚洲精品久久久久中文字幕二区| 午夜精品一区二区三区在线| 26uuu日韩精品一区二区| 日日噜噜噜夜夜爽亚洲精品| 日本亚洲精品在线观看| 欧美性极品少妇精品网站| 欧美黄色片在线观看| 国产精品亚洲综合天堂夜夜| 日本韩国欧美精品大片卡二| 欧美高清一级大片| 91国产高清在线| 在线观看欧美视频| 欧美老女人xx| 久久久免费在线观看| 国产精品免费久久久| 97视频在线观看免费高清完整版在线观看| 精品亚洲一区二区三区在线观看| 国产精品人成电影在线观看| 欧美在线视频播放| 福利视频一区二区| 亚洲视频在线看| 国产美女精品免费电影| 成人福利免费观看| 亚洲精品美女久久久久| 国产免费一区二区三区在线能观看| 国产欧美日韩精品专区| 久久69精品久久久久久久电影好| 午夜精品国产精品大乳美女| 亚洲欧美一区二区精品久久久| 日韩精品有码在线观看| 91精品国产99久久久久久| 精品亚洲国产成av人片传媒| 日韩电影大片中文字幕| 欧美精品在线看| 欧美视频精品一区| 国产精品主播视频| 亚洲少妇激情视频| 日韩欧美国产一区二区| 国产性猛交xxxx免费看久久| 日韩精品亚洲精品| 日韩欧美在线字幕| 中文字幕免费国产精品| 成人国产亚洲精品a区天堂华泰| 久久精品久久久久久国产 免费| 久久精品国产欧美亚洲人人爽| 国产精品自产拍在线观看| 久久久国产一区二区三区| 久久久亚洲影院你懂的| 欧美黑人xxxx| 国产视频亚洲精品| 欧美性在线观看| 亚洲欧洲第一视频| 国产一区深夜福利| 欧美综合在线第二页| 理论片在线不卡免费观看|