-
Тимохов Дима © (01.01.18 18:00) [0]Коллеги, здравствуйте!
1. С нового года работаю на Windows10 с экраном FullHD.
2. Обнаружил, что у моего приложения пропала иконка в А) панели задач и Б) в Total Commander.
Но иконка осталась в А) диспетчере задач и Б) проводнике Windows.
3. Попробовал собрать ресурс такого вида:MAINICON ICON "Icon32.ico"
2 ICON "Icon64.ico"
3 ICON "Icon48.ico"
4 ICON "Icon128.ico"
5 ICON "Icon24.ico"
6 ICON "Icon16.ico"
Здесь:
а. Каждый файл содержит только одну иконку одного размера.
б. Каждая иконка - это BPM файл с цветом 24BPP, который был сохранен в ICO программой IrfanView.
в. Пробовал собирать в разном порядке.
Собирал ресурс и так:brcc32 -l0409 mainicon.rc
и так:brcc32 -l0419 mainicon.rc
($0419 - это язык, который я посмотрел Resource Hacker'ом в моем старом EXE'шнике).
Программой Resource Hacker проверил, что в моем новом EXE'шнике новые иконки попадают и попадают с задаваемом языком.
Т.е. ошибка компиляции исключена.
Ничего не выходит! Все равно иконка не видна ни в панели задач ни в Total Commander'е.
4. Вопрос - что я делаю не так и как справиться с проблемой?
Спасибо!
ЗЫ Delphi2007. -
Eraser © (01.01.18 20:39) [1]
> Тимохов Дима © (01.01.18 18:00)
иконкой приложения берется первый ico файл в секции Icon.
открой готовый экзешник Ресторатором (или аналогом) и посмотри по факту, что там с иконками.
> 3. Попробовал собрать ресурс такого вида:
> MAINICON ICON "Icon32.ico"
> 2 ICON "Icon64.ico"
> 3 ICON "Icon48.ico"
> 4 ICON "Icon128.ico"
> 5 ICON "Icon24.ico"
> 6 ICON "Icon16.ico"
лучше взять какой-нибудь спец. софт для иконок и собрать в единый ico файл все распространенные размеры в формате 8 бит и в формате 32 бита. -
Тимохов Дима © (02.01.18 01:05) [2]Коллеги, прошу прощения за панику!
1. Пропадание иконки в панели задачи было потому, что с годами потерялась строкаApplication.MainFormOnTaskbar := True;
, которая должна в обычных оконных приложениях идти послеApplication.Initialize();
Раньше (без Application.MainFormOnTaskbar := True) все как-то работало.
Это целое приключение было понять причинно-следственную связь, почему раньше работало. Я так и не понял. Поставил:Application.MainFormOnTaskbar := True;
и все заработало как надо. На этом решил и закончить.
2. Но вот, почему нет иконки в Total Commander'е. Не ясно. Видимо глюк в самом TC. Забил.
ЗЫ Собираю RES я правильно. Получилось засунуть иконки разных размеров: windows сам определяет, какую иконку брать в конкретном месте. -
Dimka Maslov © (05.01.18 21:51) [3]
-
Тимохов Дима © (09.01.18 17:17) [4]
> Dimka Maslov © (05.01.18 21:51) [3]
> Советую
> http://www.gdgsoft.com/gconvert/
Спасибо, погляжу.
Но! Тут картина очень интересная получается. И дело не в иконках как таковых. Думаю, мой вопрос и возможный ответ на него будут полезны многим.
Итак:
а. Исходно в моей программе не просто так был Application.MainFormOnTaskbar := False. Это было осознанное действие - чтобы в шапке главного окна был один текст, а когда наводишь мышку на иконку запущенного приложения в таскбаре - другой (более короткий, аббревиатура).
б. Когда я писал свой вопрос я только что поставил Win10. Т.е. у меня были все красоты настроены по дефолту. В частности, были: Vista Aero effects, live taskbar thumbnails, Dynamic Windows, Windows Flip, and Windows Flip 3D.
в. И да! Согласно http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/Forms_TApplication_MainFormOnTaskBar.html, чтобы это все работало д.б. Application.MainFormOnTaskbar := True.
г. Не долго думая, я поставил Application.MainFormOnTaskbar := True. Естественно пропал функционал из п. а - всплывающий текст над иконкой в таск баре стал равен заголовку главного окна.
д. Сейчас при тестировании выяснился такой регресс. Поставил Application.MainFormOnTaskbar := False. И, о чудо - иконка не пропадает, как в исходном вопросе. Почему? Потому, что я отключил все эти Aero effects.
Правильно я понимаю, что если я хочу заголовок главного окна один, а всплывающую подсказку на иконкой приложения в таскбаре другую, то этого нельзя сделать, если Windows настроен с использованием Aero effects?
Если я не прав и можно иметь разный текст даже при Aero effects, то как это сделать?
Спасибо! -
Styx © (10.01.18 00:34) [5]С иконкой, похоже, проблема у Вас в том, что иконки приложения и главной формы могут быть разными. И после Ваших изменений поменялась только одна... Нужно поменять вторую, и всё будет нормально, имхо.
-
Тимохов Дима © (10.01.18 00:40) [6]
> Styx © (10.01.18 00:34) [5]
> С иконкой, похоже, проблема у Вас в том, что иконки приложения
> и главной формы могут быть разными.
А как менять иконку главной формы?
Тоже через файл ресурсов? -
Styx © (10.01.18 00:55) [7]А фиг его знает. Можно попробовать собрать единый ico с разными разрешениями и назначить его форме через gui - должно сработать, наверное. Я никогда не заморачивался :) Собрать можно как-то так: https://stackoverflow.com/questions/4354617/how-to-make-get-a-multi-size-ico-file
-
Вайрекс (10.01.18 02:51) [8]Если у вас VCL-проект, то я не понимаю - зачем вам вообще вручную ковыряться в файлах ресурсов и что-то там "собирать"?
Иконка проекта: Меню > Project > Options > Application Icon
Иконка формы: Инспектор объектов > Нужная форма > Icon
З.Ы. Где-то читал что некоторые версии Делфи неадекватно ведут себя когда в иконке есть слои максимального размера (256x256) или недайбох крупнее.