Показать сообщение отдельно
Старый 27.10.2016, 12:14   #8  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Кому это тоже мешает вот решение :
в классе 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>
    // не работает прокрутка колесом мыши в gride стоя на контролах c датами и временем
    int Gridhwnd;
в этом же классе перекрываем метод selectControl и прописываем :
X++:
public boolean selectControl(FormControl _control)
{
    boolean ret;
    #WinAPI;

    ret = super(_control);

    // не работает прокрутка колесом мыши в gride стоя на контролах c датами и временем
    if (_control &&       
       _control.owner().name() != identifierstr(TemporaryFormName))
    {
        switch (_control.handle())
        {
            case classnum(FormGridControl):
            Gridhwnd = _control.hWnd();
            break;
            case classnum(FormDateControl):
            case classnum(FormTimeControl):
            case classnum(FormDateTimeControl):
            // не работает прокрутка колесом мыши в gride стоя на контролах c датами и временем
            this.installMessageProc(#WM_MOUSEWHEEL, _control.hWnd(), "catchMessage");
            break;
            default:
            break;
        }
    }
    return ret;
}
и здесь же в этом классе создаем метод :
X++:
void catchMessage(int _hwnd, int _message, int _wParam, int _lParam, int _px, int _py)
{
    #WinAPI
    ;   
    // не работает прокрутка колесом мыши в gride стоя на контролах c датами и временем
    if (_message == #WM_MOUSEWHEEL)
    {
        if (_wParam < 0)
            WinAPI::SendMessageEx(Gridhwnd, #WM_VSCROLL, 1, 1);
        else
            WinAPI::SendMessageEx(Gridhwnd, #WM_VSCROLL, 0, 1);
    }
}
Ну и не забудьте описать переменную в макросе WinApi :
X++:
#define.WM_MOUSEWHEEL    (0x020A)
#define.WM_VSCROLL                      (0x0115) // эта вроде есть
Да, но все-таки контрол с типом DateTime победить не удалось. Потому что, он вообще не реагирует ни на какие события. Вообще такой странный контрол. В принципе, для нас это не критично - в основном везде просто даты. Но если у кого есть мысли будет не плохо.

До кучи кину ссылку в ветку про SysSetupFormRun.
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
За это сообщение автора поблагодарили: Logger (3), S.Kuskov (5).