高手不敢当,给你个简单例子
窗体文件
-----------------------------------------
object Form1: TForm1
; Left = 198
; Top = 107
; Width = 496
; Height = 321
; Caption = 'Form1'
; Color = clBtnFace
; Font.Charset = DEFAULT_CHARSET
; Font.Color = clWindowText
; Font.Height = -11
; Font.Name = 'MS Sans Serif'
; Font.Style = []
; OldCreateOrder = False
; PixelsPerInch = 96
; TextHeight = 13
; object ListView: TListView
; ; Left = 8
; ; Top = 8
; ; Width = 473
; ; Height = 249
; ; Columns = <>
; ; LargeImages = ImageListLarge
; ; SmallImages = ImageListSmall
; ; TabOrder = 0
; end
; object Button1: TButton
; ; Left = 408
; ; Top = 264
; ; Width = 75
; ; Height = 25
; ; Caption = 'Open'
; ; TabOrder = 1
; ; OnClick = Button1Click
; end
; object Button2: TButton
; ; Left = 8
; ; Top = 264
; ; Width = 75
; ; Height = 25
; ; Caption = 'Large Icon'
; ; TabOrder = 2
; ; OnClick = Button2Click
; end
; object Button3: TButton
; ; Left = 88
; ; Top = 264
; ; Width = 75
; ; Height = 25
; ; Caption = 'Small Icon'
; ; TabOrder = 3
; ; OnClick = Button3Click
; end
; object ImageListLarge: TImageList
; ; Height = 32
; ; Width = 32
; ; Left = 96
; ; Top = 80
; end
; object OpenDialog: TOpenDialog
; ; Filter = '可执行文件(*.exe)|*.exe|动态链接库(*.dll)|*.dll|所有文件(*.*)|*.*'
; ; Left = 160
; ; Top = 80
; end
; object ImageListSmall: TImageList
; ; Left = 96
; ; Top = 120
; end
end
程序
-----------------------------------
unit Unit1;
interface
uses
; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
; Dialogs, StdCtrls, ImgList, ComCtrls, ShellAPI;
type
; TForm1 = class(TForm)
; ; ListView: TListView;
; ; ImageListLarge: TImageList;
; ; OpenDialog: TOpenDialog;
; ; Button1: TButton;
; ; Button2: TButton;
; ; Button3: TButton;
; ; ImageListSmall: TImageList;
; ; procedure Button2Click(Sender: TObject);
; ; procedure Button3Click(Sender: TObject);
; ; procedure Button1Click(Sender: TObject);
; private
; ; { Private declarations }
; public
; ; { Public declarations }
; end;
var
; Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
begin
; ListView.ViewStyle := vsIcon;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
; ListView.ViewStyle := vsSmallIcon;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
; ix, count: Integer;
; shIcon, lhIcon: HIcon;
; procedure ListViewAddIcon( IconHandle: HIcon );
; var
; ; aIcon: TIcon;
; begin
; ; // 将图标加入ListView
; ; if IconHandle <> 0 then
; ; ; try
; ; ; ; aIcon := TIcon.Create;
; ; ; ; aIcon.Handle := IconHandle;
; ; ; ; Form1.Caption := IntToStr( IconHandle );
; ; ; ; with ListView.Items.Add do
; ; ; ; begin
; ; ; ; ; ImageIndex := ImageListLarge.Count;
; ; ; ; ; Caption := '图标' + IntToStr( ImageListLarge.Count );
; ; ; ; ; ImageListLarge.InsertIcon( ImageIndex, aIcon );
; ; ; ; ; ImageListSmall.InsertIcon( ImageIndex, aIcon );
; ; ; ; end;
; ; ; finally
; ; ; ; FreeAndNIL( aIcon );
; ; ; end;
; end;
begin
; if OpenDialog.Execute then
; begin
; ; // 获取窗体图标个数
; ; shIcon := 0; lhIcon := 0;
; ; count := ExtractIconEx( PChar( OpenDialog.FileName ), -1, lhIcon, shIcon, 0 );
; ; for ix:=0 to count-1 do
; ; begin
; ; ; ExtractIconEx( PChar( OpenDialog.FileName ), ix, lhIcon, shIcon, 1 );
; ; ; ListViewAddIcon( lhIcon );
; ; ; ListViewAddIcon( shIcon );
; ; end;
; end;
end;
end.