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

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

ExtractIcon [D6, WinXP]


kukuikar ©   (2004-09-18 10:03:00) 

подскажите плиз
как избавиться от того что при извлечении иконки (ExtractIcon) из файла shell32.dll или из любой другой библиотеки XP, она становиться не такой как в DLL, т.е. количество цветов уменьшается и выглядит она страшно?


Cobalt   (2004-09-21 01:18:00) [1]

Может, проблема в сохранении? Посмотри, как сохраняется иконка, насколько я помню - в Дельфёвых компонентах есть какое-то ограничение на 16 цветов, но неуверен.
В лющем, исходники тебе доступны - ищи и да обрящеши!


kukuikar   (2004-09-20 11:54:00) [2]

Удалено модератором
Примечание: Не надо флудить.


kukuikar   (2004-09-20 10:11:00) [3]

что никто не хочет помочь?


kukuikar   (2004-09-20 09:12:00) [4]

1


kukuikar   (2004-09-20 09:07:00) [5]

прорисовка иконок происходит в TStringGrid.
Я наверное неточно сыормулировал вопрос:
прис охранении иконки в файл *.ico она теряет какое-то количество цветов и выглядит непотребно. А в стринг гриде она выглядит нормально, как и должна.

var
icons: TStringGrid;
DrawIcon: TMenuItem;
SaveIcon: TMenuItem;

procedureTForm1.DrawIconClick(Sender: TObject);
var
CurItem: longint;
pName: array [ 0..255 ] of char;
fName: string [ 13 ];
N: word;
IcoH: hIcon;
path: String;
FileLst: TStringList;
begin
GetDir(0, path);
CurItem:=0;
ifOpenDialog1.Execute then
begin
fName:=ExtractFileName(OpenDialog1.Filename);
StrPCopy ( pName, OpenDialog1.Filename );
N := 0;
withIcons do
repeat
IcoH := ExtractIcon ( hInstance, pName, N );
ifIcoH > 1 then
begin
Col := CurItem MODColCount;
if( CurItem DIV ColCount ) >= RowCount then
RowCount := RowCount + 1;
Row := CurItem DIV ColCount;
Cells [Col,Row] := Format('#%d',[CurItem+1]);
Objects [ Col, Row ] := TIcon.Create;
withObjects [ Col, Row ] ASTIcon do
Handle := IcoH;
CurItem := CurItem + 1;
Inc ( N );
end;
untilIcoH <= 1;
end;
end;

....

procedureTForm1.SaveIconClick(Sender: TObject);
begin
ifSaveDialog1.Execute then
withIcons do
withObjects [Col, Row] ASTIcon do
SaveToFile(SaveDialog1.Filename);
end;


Alx2   (2004-09-18 10:23:00) [6]

>kukuikar ©   (18.09.04 10:03)
У меня нормально отображается. Может, тебе стоит код показать?


Наверх

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