Заморачиваться особенно не пришлось
в классе SysSetupFormRun описываем переменную
X++:
// This is a framework class. Customizing this class may cause problems with future upgrades to the software.
public class SysSetupFormRun extends FormRun
{
SysWorkflowFormControls workflowControls;
// <GEEU>
// Event listeners list
List listeners_W;
// </GEEU>
// kos глюк выхода из ячейки грида после двойного клика
int Gridhwnd;
// kos глюк выхода из ячейки грида после двойного клика
затем в этом классе создаем метод
X++:
void catchMessage(int _hwnd, int _message, int _wParam, int _lParam, int _px, int _py)
{
/*
#define.WM_LBUTTONDOWN (0x0201)
#define.WM_LBUTTONUP (0x0202)
#define.WM_LBUTTONDBLCLK (0x0203)
*/
#WinAPI
;
WinAPI::SendMessageEx(Gridhwnd, #WM_LBUTTONDOWN, 1, 1);
WinAPI::SendMessageEx(Gridhwnd, #WM_LBUTTONUP, 1, 1);
}
и теперь в этом классе перекрываем метод selectControl и прописываем
X++:
public boolean selectControl(FormControl _control)
{
boolean ret;
/*
#define.WM_LBUTTONDOWN (0x0201)
#define.WM_LBUTTONUP (0x0202)
#define.WM_LBUTTONDBLCLK (0x0203)
*/
#WinAPI;
ret = super(_control);
// kos глюк выхода из ячейки грида после двойного клика
if (_control)
{
switch (_control.handle())
{
case classnum(FormGridControl):
Gridhwnd = _control.hWnd();
break;
case classnum(FormStringControl):
case classnum(FormRealControl):
case classnum(FormIntControl):
case classnum(FormInt64Control):
case classnum(FormDateControl):
case classnum(FormTimeControl):
case classnum(FormDateTimeControl):
case classnum(FormComboBoxControl):
this.installMessageProc(#WM_LBUTTONDBLCLK, _control.hWnd(), "catchMessage");
break;
default:
break;
}
}
// kos глюк выхода из ячейки грида после двойного клика
return ret;
}
Заработало корректно во всех местах.