Cannot focus a disabled or invisible window

Добрый день!

У меня следующая проблема. Есть окно, в котором две компоненты FrameGroup. В первом - все необходимые визуальные компоненты (в том числе DataGrid, к которому привязан Dataset). Во втором - ProgressBar. После нажатия пользователем любой кнопки (например, Печать), первый FrameGroup прячется и показывается второй, на котором показывается прогресс выполнения. Проблема появляется при вызове Dataset.GoToFirst(). Появляется ошибка "Cannot focus a disabled or invisible window". Самое интересное, что на тестовой системе всё работает, но после переноса на живую показывается вышеописанная ошибка. Кто-нибудь знает в чём может быть проблема?

Нравится

3 комментария

Наверное грид пытается "отрисоваться", когда Вы программно переходите на первую запись.
Может лучше не прятать первый FrameGroup, а просто сделать ему IsEnabled = false ?

Если все-таки требуется прятать, попробуйте отключить события датасате:

Dataset.DisableEvents();
try
{
    // спрятали фрейм
    Dataset.GotoFirst();
    // сделали работу
     ...
}
finally
{
    // наверное, показали фрейм
    Dataset.EnableEvents();
}

Для этих целей лучше использовать отдельное окно wnd_ProcessingProgress.

Спасибо! DisableEvents помогло. wnd_ProcessingProgress не всегда можно использовать. Есть случаи, когда на окне все дёргаетьса (например большая функция Prepare). Я не хочу ето показывать пользователю, так как ето его роздражает. Вместо етого я показываю прогресс.

Показать все комментарии