Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.48 MB
Время: 0.022 c
1-1085997533
hie
2004-05-31 13:58
2004.06.13
Как из программы запустить Word и перебросить данные ?


3-1084983087
ceval
2004-05-19 20:11
2004.06.13
после перемещения столбцов не работает поиск по двум полям


1-1085934812
Ruslan
2004-05-30 20:33
2004.06.13
Насчет работы с датами. Надо вычислять количество пройденных


14-1085572047
kondryuk
2004-05-26 15:47
2004.06.13
нужен компилятор


1-1085736411
Turbid
2004-05-28 13:26
2004.06.13
CreateForm с параметром Hide