Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TImageList.GetIcon глючит... [D7, WinXP]


aktuba ©   (2006-11-02 01:53:00) 

Такая проблема: в программе происходит проверка каталога на наличие иконок и добавление этих иконок в TImageList:

 i := 1;
 if FindFirst(path + '*.ico', faAnyFile, SearchRec) = 0 then
   repeat
     Inc(i);
     lIcon := TIcon.Create;
     try
      lIcon.LoadFromFile(path + SearchRec.Name);
       AList.AddIcon(lIcon);
     finally
      lIcon.Free;
     end;
   until FindNext(SearchRec) <> 0;
 FindClose(SearchRec);


после этого происходит отрисовка иконок из TImageList в TDrawGrid:


il.Draw(dr.Canvas, Rect.Left + 3, Rect.Top + 3, IndexIcon, dr.Enabled);


далее, мне необходимо сохранить выбранную иконку в файл. делаю следующее:


...
ilVT.GetIcon(lData^.IconIndex, lIcon);
SaveVTNode(lData^, lIcon, lMemStream);
...
procedure SaveVTNode(AData: TDataNode; AIcon: TIcon; AStream: TMemoryStream);
var
 Writer: TWriter;
 size, Index: Integer;
begin
 ...
 // Сохранение своих данных в поток
 ...
 SaveIcon(AIcon, AStream);
end;
...
procedure SaveIcon(AIcon: TIcon; AStream: TMemoryStream);
var
 size: Integer;
begin
 if Assigned(AIcon) then
   begin
     size := 1;
     AStream.Write(size, SizeOf(size));
   AIcon.SaveToStream(AStream);
   end else
    begin
      size := 0;
       AStream.Write(size, SizeOf(size));
     end;
end;


ИКОНКА СОХРАНЯЕТСЯ НЕ ПРАВИЛЬНО!!! Испорчены палитра и прозрачность...
Опытным путем проверенно, что виновата функция TImageList.GetIcon. Проверял так:

lIcon.LoadFromFile(path + SearchRec.Name);
t := AList.AddIcon(lIcon);
AList.GetIcon(t, lIcon);
lIcon.SaveToFile(lFileName);


Уже так иконка сохраняется неправильно.

Как это исправить или что можно использовать вместо TImageList?


Ketmar   (2006-11-02 02:17:00) [1]

значит, не дал. отсутствие мозга -- твои проблемы. церебротерапией не занимаемся.


aktuba   (2006-11-02 02:13:00) [2]

Да ничего ты не дал!!! Что за сайт Rouse_(c), что использовать вместо TListImage?


Ketmar   (2006-11-02 02:01:00) [3]

>[2] aktuba 2-Nov-2006, 01:58
я дал достаточно информации для поиска. http://antigreen.org/bioreactor/


aktuba   (2006-11-02 01:58:00) [4]


> б.а.я.н.
> ну почему эта тема на форуме возникает с периодичностью
> два-три дня? или на сайт Rouse_(c). и не используй TImageList.
>


А ЧТО ИСПОЛЬЗОВАТЬ???? У меня компонент, который использует ImageList. Вместо ругани - лучше бы ссылки дал, где это уже обсуждалось....


Ketmar   (2006-11-02 01:55:00) [5]

б.а.я.н.
ну почему эта тема на форуме возникает с периодичностью два-три дня? или на сайт Rouse_(c). и не используй TImageList.


Наверх

Титульная страница Поиск, карта сайта Написать письмо