Показать сообщение отдельно
Старый 27.07.2007, 12:49   #11  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,973 / 3268 (116) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Лучше сделать так

X++:
    if (_p1 == 260/* #taskNew*/)
        SysSetupFormRun::GRD_NewRecordMode(this.hWnd(), true);
    if (_p1 == 2840 && SysSetupFormRun::GRD_NewRecordMode(this.hWnd()))
        ret = 1;
    else
        ret = super(_p1);
    if (_p1 == 260 /* #taskNew*/)
        SysSetupFormRun::GRD_NewRecordMode(this.hWnd(), false);
и еще добавить вот такой метод
X++:
  // pkoz 27.07.2007
static boolean GRD_NewRecordMode(int    _hwnd, boolean _parm = false)
{
    SysGlobalCache      SysGlobalCache = infolog.globalCache();
    boolean             ret;
    ;
    if (prmIsDefault(_parm)) // читаем
    {
        ret = SysGlobalCache.get(funcName(), _hWnd, false);
    }
    else
    {
        if (_parm)
        {
            SysGlobalCache.set(funcName(), _hWnd, _parm);
        }
        else
        {
            SysGlobalCache.remove(funcName(), _hWnd); // значение false не кладем
            // а просто чистим кеш - чтобы не флудить его ненужными значениями - все равно
            // hwnd почти всегда новый выделяется
        }
        ret = _parm;
    }
    return ret;
}
При таком подходе нет ошибок выполнения при фильтрации в лукапах.
За это сообщение автора поблагодарили: rumpleteazer (1), erudit (1), dn (3), raz (5), savel (1), Pustik (2), Bega (5), SIrina (1).