Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GridCtrl теряет фокус 
:(
    Опции темы
VKlim
Дата 16.1.2009, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 1.2.2007

Репутация: нет
Всего: нет



Доброго всем!
В силу необходимости работаю с MFCGridControl, стянутым с CodeProject.com. Все вроде хорошо и нравится, но сейчас столкнулся со следующей проблемой:
Хотелось мне, чтобы по нажатию Enter фокус в табличке автоматически перескакивал на следующую ячейку (ну удобно вроде как). Добавил следующий код:
Код

BOOL CEtalonWizardDlg::PreTranslateMessage (LPMSG pMsg)
{
    if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN)
    {
        CCellID m_Cell;
        m_Cell = m_Grid.GetFocusCell();
        if ((m_Cell.col != -1)&&(m_Cell.row != -1))
        {
            m_Cell.col++;
            if (m_Cell.col == MAX_COLS)
            {
                m_Cell.col = 1;
                m_Cell.row++;
                if (m_Cell.row >= m_Grid.GetRowCount())
                {
                    m_Grid.InsertRow("");
                    CString strRowCount;
                    strRowCount.Format("%d", m_Grid.GetRowCount() - 1);
                    m_Grid.SetItemText(m_Grid.GetRowCount() - 1, 0, strRowCount);
                }
            }
            m_Grid.Refresh();
            m_Grid.SetFocusCell(m_Cell);
        }
    }
    return CDialog::PreTranslateMessage(pMsg);
}

Вот. И все в принципе работает, если в ячейке что-то вводить. Но стоит нажать Enter в ячейке, не вводя никаких символов - фокус бесследно теряется :(
Самое главное, что в табличке он как-будто бы есть. Я смотрел функцией GetFocusCell()? там значения столбца и колонки сообтветствуют нужным. Но на диалоге ни ячейка не светится, да и вводить текст никуда не получается, пока мышкой не кликнешь в нужную ячейку. 
Отсюда возникла мысль, что фокус куда-то улетел (на другой контрол), но непонятно почему и что делать, чтобы такого не происходило. Собсно, в этом и вопрос. прав ли я и как с этим бороться.
Заранее спасибо!
PM MAIL   Вверх
KEHT
Дата 16.1.2009, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 67
Регистрация: 17.7.2006

Репутация: 1
Всего: 1



m_Grid.Refresh() перерисовывает область, возможно из за этого фокус сбивается. И почему в перерисовываете ее до того как изменили ячейку?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0540 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.