• Тимохов Дима © (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) или недайбох крупнее.
Есть новые Нет новых   [92363   +4][b:0.001][p:0.002]