Главная страница
    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.46 MB
Время: 0.036 c
11-1074872156
=Sniper=
2004-01-23 18:35
2004.06.13
Как мне установить каретку в RichEdir на позицию например 11?


4-1083823284
alsov1
2004-05-06 10:01
2004.06.13
Как считать уникальный номер с CD и есть ли такой вообще?


1-1086013960
kombat
2004-05-31 18:32
2004.06.13
Что лучше использовать в конструкторе - Variant или array of var?


1-1085711439
R
2004-05-28 06:30
2004.06.13
Qutlook Express и Delphi


1-1085778134
Ruslan
2004-05-29 01:02
2004.06.13
Как поместить картинку на ToolButton?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский