procedure GetFavIcons(AComboBoxEx: TComboBoxEx; AImageList: TImageList; const ATemp: String);
var
i, j,
ii: Integer;
url: String;
hasFav: Boolean;
bmp: TBitmap;
ico: TIcon;
begin
//Bild erzeugen
bmp := TBitmap.Create;
ico := TIcon.Create;
//ImageList löschen und Standardicon wieder an erste Stelle
AImageList.GetBitmap(0, bmp);
AImageList.Clear;
AImageList.Add(bmp, nil);
//Alle Eintrge durchlaufen
for i := 0 to AComboBoxEx.ItemsEx.Count - 1 do
begin
url := AComboBoxEx.ItemsEx[i].Caption;
hasFav := False;
ii := 0;
// [Start] versuchen das FavIcon im gleichen Verzeichnis zu laden
for j := Length(
url) downto 2 do
if (
url[j] = '/') and (
url[j-1] <> '/') then
begin
Delete(
url, j, Length(
url) - j + 1);
Break;
end;
if Pos('http://',
url) = 0 then
url := 'http://' +
url;
if
url[Length(
url)] <> '/' then
url :=
url + '/';
UrlDownloadToFile(nil, PChar(
url + 'favicon.ico'), PChar(ATemp + 'fav.ico'), 0, nil);
hasFav := FileExists(ATemp + 'fav.ico');
// [Ende] versuchen das FavIcon im gleichen Verzeichnis zu laden
// [Start] gefundenes Icon in ImagList laden und löschen
if hasFav then
begin
try //erst versuchen das Icon als Typ "Icon" zu laden
ico.LoadFromFile(ATemp + 'fav.ico');
ii := AImageList.AddIcon(ico);
except
try //danach mit "Bitmap" versuchen
bmp.LoadFromFile(ATemp + 'fav.ico');
ii := AImageList.Add(bmp, nil);
except
hasFav := False;
end;
end;
DeleteFile(ATemp + 'fav.ico');
end;
// [Ende] gefundenes Icon in ImagList laden und löschen
//Icon dem Eintrag zuweisen
AComboBoxEx.ItemsEx[i].ImageIndex := ii;
end;
bmp.Free;
ico.Free;
end;