將TImage組件、TOpenDialog組件和TButton組件添加到窗體中。TImage組件充當文件中顯示圖標的容器,TOpenDialog組件和TButton組件用於激活提示用戶選擇GIF動畫的對話框。添加組件後的表單如圖1所示。
首先在表單的uses部分添加ShellAPI,然後添加按鈕響應代碼,如下所示:
過程TfrmMain.btnOpenClick(發送方:to object);
定義變量
I:整數;
大,小:HICON
尼可斯:整數;
開始
如果OpenDialog1。然後執行
開始
自我。Image1。畫布.刷新;
nIcons:= ExtractIconEx(PChar(open dialog 1。文件名),-1,大,小,1);
對於i:=0到nIcons-1 do
開始
ExtractIconEx(PChar(self。OpenDialog1。文件名),I,Large,Small,1);
DrawIcon(self。Image1。Canvas.Handle,(i div 4)*40,(i mod 4)*40,大號);
結束;
結束;
結束;
當用戶在程序運行過程中選擇壹個可執行文件時,程序首先通過自身清除TImage組件上的顯示內容。image1.canvas.refresh語句,然後通過將ExtractIconEx函數的第二個參數指定為-1來獲取可執行文件中的圖標數。獲得編號後,通過extraconex (PCcar (self)將可執行文件中的大小圖標分別存儲在大小變量中。OpenDialog 1。filename)、I、large、small、1)語句循環使用。最後,通過DrawIcon函數在TImage組件上繪制壹個圖標。
程序代碼如下:
單位unit 1;
連接
使用
窗口、消息、系統、變量、類、圖形、控件、表單,
對話框、標準控件、ShellAPI、網格、擴展控件。
類型
TfrmMain = class(TForm)
btnOpen:TButton;
open dialog 1:TOpenDialog;
image 1:TImage;
過程btnOpenClick(發送方:to object);
私人的
{私人聲明}
公眾的
{公開聲明}
結束;
定義變量
frmMain:TfrmMain;
履行
{$R *。dfm}
過程TfrmMain.btnOpenClick(發送方:to object);
定義變量
I:整數;
大,小:HICON
尼可斯:整數;
開始
如果OpenDialog1。然後執行
開始
自我。Image1。畫布.刷新;
nIcons:= ExtractIconEx(PChar(open dialog 1。文件名),-1,大,小,1);
對於i:=0到nIcons-1 do
開始
ExtractIconEx(PChar(self。OpenDialog1。文件名),I,Large,Small,1);
DrawIcon(self。Image1。Canvas.Handle,(i div 4)*40,(i mod 4)*40,大號);
結束;
結束;
結束;
結束。
保存文件,然後按F9運行程序。程序運行的初始屏幕如圖2所示。
單擊“打開”按鈕,彈出壹個對話框,提示用戶選擇壹個可執行文件。確認後,存儲在所選可執行文件中的圖標將顯示在表單的TImge組件上,如圖3所示。