Для себя обнаружил, что цветовая гамма полосок на гриде зависит ещё от параметра стиля отображения в WinXP (Экран\Оформление\Окна и кнопки). Если выбран "Стиль WindowsXP" то грид в axapta смотрится вполне приемлемо, но если выбран "Классический стиль" - то грид отображается с контрастными серыми и белыми полосами. В случае "Классического стиля" цвет серых полосок задается системным цветом COLOR_INACTIVEBORDER, как уже написали в этой теме.
В принципе этот цвет можно изменить из axapta через WinAPI. Добавляем в класс WinAPI функцию
X++:
client static void setSysColor(int _sysColor, rgbint _r, rgbint _g, rgbint _b)
{
DLL dll = new DLL(#UserDLL);
DLLFunction dllFunction = new DLLFunction(dll,'SetSysColors');
Binary rgb = new Binary(#offset4);
Binary syscolor = new Binary(#offset4);
;
syscolor.dWord(#Offset0,_sysColor);
rgb.dWord(#Offset0, winapi::rgb2int(_r,_g,_b));
dllFunction.arg(ExtTypes::DWord, ExtTypes::Pointer, ExtTypes::Pointer);
dllFunction.call(1, syscolor, rgb);
}
Вот пример её вызова.
X++:
static void setInactivBorderColor(Args _args)
{
#WinAPI
;
WinAPI::setSysColor(#COLOR_INACTIVEBORDER, 250,250,250);
}
Остается добавить соответствующую настройку для пользователя и вызывать при старте axapta.