Текущий архив: 2004.06.13;
Скачать: CL | DM;
Внизполучение иконки не работает Найти похожие ветки
← →
Мыш © (2004-05-09 01:59) [0]Вот сделал процедурку, да что -то в ней не так. Если пробовать заполучить иконку на image, все ок. Но если сделать цикл, в котором загружать в один и тот же image на форме иконки для разных файлов - нифига не работает. И еще вопрос: мелкие иконки, которые мы получаем в процедуре ShGetFileInfo они откуда берутся? Преобразованием больших или это отдельная песня?
Вот она, сцука:
procedure GetIcon(Bitmap: Tbitmap; FileName: string; FillColor:TColor; LargeIcon:boolean);
var
fi: TSHFileInfo;
SHGFI_IconSize:word;
IconSize:integer;
TmpImg:TImage;
begin
TmpImg:=TImage.Create(nil);
if LargeIcon then
begin
IconSize:=32;
SHGFI_IconSize:=SHGFI_ICON;
end
else
begin
IconSize:=16;
SHGFI_IconSize:=SHGFI_SmallICON;
end;
TmpImg.Width:=IconSize;
TmpImg.Height:=IconSize;
ShGetFileInfo(pchar(filename), 0, fi, SizeOf(fi),
SHGFI_IconSize or SHGFI_SYSICONINDEX or SHGFI_TYPENAME);
TmpImg.Picture.Icon.Handle:=(fi.hIcon);
bitmap.Canvas.Pen.Color:=FillColor;
bitmap.Canvas.brush.Color:=FillColor;
bitmap.Canvas.Rectangle(0,0,IconSize,IconSize);
bitmap.Canvas.Draw(0,0,TmpImg.Picture.Icon);
TmpImg.Free;
end;
Вот такой вызов работает:
GetIcon(imgicon.Picture.Bitmap,путь,clwhite,true);
а вот так нет:
i:=0;
while i<linkstorage.LinkList.Count do
begin
plink:=linkstorage.LinkList[i];
GetIcon(image5.Picture.Bitmap,plink^.FilePath (путь),clwhite,true);
sleep(50) ;
application.ProcessMessages;
inc(i);
end;
← →
TUser © (2004-05-09 05:55) [1]
> TmpImg:=TImage.Create(nil);
Не по сабжу, конечно, но на мой взгляд создавать временные TImage каждые 50 мс - это уж слишком. TImage - он для показывания картинок, а не для хранения в памяти. А так есть TBitMap, TIcon и пр.
← →
Cobalt © (2004-05-09 11:12) [2]Мыш ©
а как должно работать (по твоему)?
← →
Мыш © (2004-05-09 14:33) [3]TUser, согласен, надо будет переделать. Но это же не влияет на работоспособность.
>а как должно работать (по твоему)?
На image5 должны по очереди смениться все иконки для файлов, пути которых хранятся в списке linkstorage.LinkList
← →
DeadMeat © (2004-05-09 17:32) [4]> Мыш
А ты попробуй в начале очищать BITMAP, чем-нибудь вроде FillRect или PatBlt
← →
мыш © (2004-05-09 19:06) [5]пробовал, не помогает.
← →
Мыш © (2004-05-10 05:37) [6]может кто у себя процедурку попробует?
← →
Bez (2004-05-11 14:13) [7]А сразу в Bitmap нельзя иконки загружать? Не пробывал так?
Страницы: 1 вся ветка
Текущий архив: 2004.06.13;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.04 c