Швы, подобные этому, предназначены только для настоящих фанатов Delphi.
Вот так это выглядит (извините, не могу размещать изображения)
Delphi IDE безобразная панель инструментов
(источник: piccy.info )
Что не так - отключены панель инструментов Delphi IDE, а кнопки меню - уродливые черно-белые изображения.
Что я хочу сделать - заставить их выглядеть серыми.
Как? Я провел небольшое исследование. Основная проблема в виртуальном TCustomImageList.DoDraw
методе. Когда paramater Enabled = False
, он рисует ужасные вещи (см. Отключенные кнопки на скриншоте). Я создал свое собственное переопределение для этой функции, и оно рисует серые изображения, когда Enabled = False
Теперь я хочу заменить значение по умолчанию DoDraw
своим собственным в IDE (используя пакет времени разработки):
- Я понял, что модуль ImgList скомпилирован в bds.exe, поэтому трюк с исправлением этой функции в
rtlXXX.bpl
не сработает.
- Поиск содержимого тела функции не дал результата. Похоже, реализация bds.exe (я думаю о машинных кодах)
DoDraw
немного отличается.
Любые предложения или идеи, как я могу сделать это возможным? В качестве базового примера исправления кода во время выполнения я взял Andy's Midas Speed Fix: FindMethodPtr
, HookProc
, UnhookProc