-
Notifications
You must be signed in to change notification settings - Fork 0
/
acEhLibPainter.h
51 lines (43 loc) · 2.33 KB
/
acEhLibPainter.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//---------------------------------------------------------------------------
#ifndef acEhLibPainterH
#define acEhLibPainterH
//---------------------------------------------------------------------------
/*
// Цели:
Этот модуль предназначен для скинирования компонентов EhLib с использованием AlphaControls
На самом деле - большая часть кода здесь - это переведенные оригинальные методы прорисовки EhLib
их потребовалось перевести на с++ чтобы могла работать прорисовка с выключенными скинами.
Для "перехвата" прорисовки компонентов EhLib используется недокументированная
возможность линкера "подменять" функции (#pragma alias ).
На Delphi вместо этого можно использовать либо способ перехвата из библиотеки FastCode
либо не перехватывать ничего, а сразу править исходника EhLib
К сожалению, для перехвата нужных функций прорисовки - придется подправить ToolCtrlsEh.pas
тк они не вынесены в интерфейс - получить указатель на них или unmangled-имя невозможно
придется - перенести некоторые функции из раздела implementation в раздел interface
// Применение:
- Во первых нужно пропатчить EhLib - diff и инструкции см. в папке _eh_patch
- Во вторых добавить в SkinManager->ThirdPartyList как Edit следующие классы:
TDBEditEh
TDBNumberEditEh
TDBDateTimeEditEh
TDBLookupComboboxEh
TDBComboBoxEh
TInplaceFilterEditEh
TPopupListboxEh
- Далее достаточно подключить этот модуль к проекту
// Известыне недостатки/проблемы:
- TDBLookupGridEh не скинится
там 2 проблемы - во первых он создается динамически,
и во вторых у него "своя" обработка скроллов (см. TDBLookupGridEh.UpdateScrollBar())
- Прит смене скина кнопки Eh controls не реагируют на смену скина :(
- Eh controls скинятся DefaultManager`ом, а не тем которым скинится форма
- Кнопки со стилем ebsGlyphEh не скинятся (а это вообще надо ?)
- Не выключайте BitmapCache (Toolctrlseh::UseButtonsBitmapCache) - иначе будет поглючивать
- Скинирование CheckBox - внутри грида выглядит не красиво - лучше его выключить
чтобы включить - см. SkinCheckBox в этом модуле
- Не скинируется сетка грида (видно на темных скинах)
- Нужно скинировать DBGridEhInplaceSearchColor / DBGridEhInplaceSearchTextColor
// Автор: alex000 @ http://www.alphaskins.com/forum/
*/
//---------------------------------------------------------------------------
#endif