Главная страница
    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.04 c
4-1083829193
Tomkat
2004-05-06 11:39
2004.06.13
Delphi и приложения для торговли


3-1084960663
M126
2004-05-19 13:57
2004.06.13
Выбор из текстового файла


14-1085364020
Думкин
2004-05-24 06:00
2004.06.13
С днем рождения! 24 мая


1-1085932660
FRick
2004-05-30 19:57
2004.06.13
Как проверить установлена ли программа или нет?


4-1084031844
QseR
2004-05-08 19:57
2004.06.13
CPU Load





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