SQLRU.net
Разработка приложений баз данных

Начало » Программирование » Delphi » Стили и иконки в меню Delphi (при использовании стилей перестают работать диманически добавленные иконки в меню)
Стили и иконки в меню Delphi [сообщение #566] Tue, 13 September 2022 14:20 Переход к следующему сообщению
RusMikle в настоящее время не в онлайне  RusMikle
Сообщений: 18
Зарегистрирован: June 2022
Junior Member
Всем доброго времени суток,

есть меню которое наполняется ссылками на файлы.
Для красоты пунктам меню присваиваются иконки из дефолтных иконок винды на это расщирение файла.
Всё работало до тех пор пока не включили стили в программе.
Глубоко ещё не копал но возможно кто то уже столкнулся с подобным.
Код присвоения иконки пункту меню такой:
// получение самой иконки по расширению
  function _GetGenericFileIcon( AExtension: string ): TIcon;
  var
    AInfo: TSHFileInfo;
    AIcon: TIcon;
  begin
    if SHGetFileInfo( PChar( AExtension ), FILE_ATTRIBUTE_NORMAL, AInfo, SizeOf( AInfo ),
      SHGFI_SMALLICON or SHGFI_ICON or SHGFI_LARGEICON or SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES ) <> 0 then//
    begin
      AIcon := TIcon.Create;
      try
        AIcon.Transparent := True;
        AIcon.Handle := AInfo.hIcon;
        Result := AIcon;
      except
        AIcon.Free;
        Result := nil;
      end;
    end
    else
      Result := nil;
  end;
// присвоение иконки пункту меню
  procedure _AddFileItem( AFileMenuItem: TMenuItem; AFilePath: string);
  var lIcon: TIcon;
  begin
    AFileMenuItem.Hint := AFilePath;
    lIcon := _GetGenericFileIcon ( ExtractFileExt(AFilePath));
    if Assigned (lIcon) then begin
      try
        AFileMenuItem.Bitmap.Assign(lIcon);
      finally
        lIcon.Free;
      end;
    end;

    AMenuItem.Add(AFileMenuItem);
  end;
  • Вложение: mitIcon.png
    (Размер: 19.93KB, Загружено 382 раза)
  • Вложение: OhneIcon.png
    (Размер: 8.72KB, Загружено 379 раз)
Re: Стили и иконки в меню Delphi [сообщение #582 является ответом на сообщение #566] Wed, 14 September 2022 04:15 Переход к предыдущему сообщениюПереход к следующему сообщению
fraks в настоящее время не в онлайне  fraks
Сообщений: 108
Зарегистрирован: June 2022
Географическое положение: Новосибирск
Senior Member
Никогда не пиши версию Delphi и версию ОС.
Re: Стили и иконки в меню Delphi [сообщение #583 является ответом на сообщение #582] Wed, 14 September 2022 08:34 Переход к предыдущему сообщениюПереход к следующему сообщению
BlackEric в настоящее время не в онлайне  BlackEric
Сообщений: 282
Зарегистрирован: June 2022
Senior Member
Так что не работает? И что за стили?
Re: Стили и иконки в меню Delphi [сообщение #598 является ответом на сообщение #583] Fri, 16 September 2022 11:08 Переход к предыдущему сообщению
RusMikle в настоящее время не в онлайне  RusMikle
Сообщений: 18
Зарегистрирован: June 2022
Junior Member
Sorry. В ходе разборок выяснилось, что причина была не в стилях а в фреймворке который не переносил свoйство Bitmap у ТMenuItem. Там своя логика, меню рисуется своими средствами но базовые классы на базе TMainMenu и TMenuItem. Другими словами меню строится стандартными средствами но при старте программы переносится в другие обьекты. Я к сожалению про новую логику не знал в альфе (на лицо проблемма в коммуникации). А поскольку у нас новые фичи начинаются из релиза а на тестирование мержатся в альфу то то что работало в релизе перестало работать в альфе. Уже поправили. К сожалению логика начинать новые ветки из релиза где то даёт преимушества но иногда вылазят и проблемы.
Предыдущая тема: Найти реализацию метода
Следующая тема: ping
Переход к форуму:
  


Текущее время: Fri Mar 29 18:10:25 GMT+3 2024

Общее время, затраченное на создание страницы: 0.00682 секунд