Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.06.13;
Скачать: [xml.tar.bz2];

Вниз

получение иконки не работает   Найти похожие ветки 

 
Мыш ©   (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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.06.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.035 c
3-1085284190
Алексей
2004-05-23 07:49
2004.06.13
проблемма с Dead Lock


14-1085488754
Hatter
2004-05-25 16:39
2004.06.13
Gigabyte GA-8S648


1-1086067714
Master Paleva
2004-06-01 09:28
2004.06.13
Имитация нажатия клавиш на клавиатуре


3-1084913582
Ertong
2004-05-19 00:53
2004.06.13
SQL диалекты


14-1085503543
Piter
2004-05-25 20:45
2004.06.13
Пиринговые сети





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский