var
IconIndex: word;
Buffer: array[0..2048] of char;
IconHandle: HIcon;
Bitmap : TBitmap;
OpenDialog: TOpenDialog;
begin
OpenDialog := TOpenDialog.Create(nil);
try
if OpenDialog.Execute then
begin
StrCopy(@Buffer, PChar(OpenDialog.FileName));
IconIndex := 0;
IconHandle := ExtractAssociatedIcon(HInstance, Buffer, IconIndex);
if IconHandle <> 0 then
Icon.Handle := IconHandle;
Bitmap := TBitmap.Create;
try
Bitmap.Width := Icon.Width;
Bitmap.Height := Icon.Height;
Bitmap.Canvas.Draw(0, 0, Icon);
SpeedButton1.Glyph.Assign(Bitmap);
finally
Bitmap.Free;
end;
end;
finally
OpenDialog.Free;
end;
end;