Cannot focus a disabled or invisible windows как исправить
Есть процедура:
procedure Myform1.BtClick(. ;
begin
.
MyForm2.show;
.
Myform2.hide; //после етого появляєтся ошибка
// Cannot focus a disabled or invisible window
.
end;
ПОчему ета ошибка появляэтся? Кто нибудь знает?
Я пробовал перед Myform2.hide; писать
Myform1.BringToFront;
Myform1.show;
Myform1.Visible:=true;
ничего не помагаэт
← →
harismatik ( 2003-01-25 15:40 ) [1]
А у тебя форма с которой вызывается окно видимо и доступно? Откуда ты его вызываешь?
← →
Kventin ( 2003-01-25 15:43 ) [2]
Да.
Вызываю из обработчика клика по некоторой кнопке.
← →
Юрий Зотов ( 2003-01-25 17:42 ) [3]
После Myform2.hide происходит какое-то обращение к Myform2 (или к одному из ее контролов), которое требует, чтобы Myform2 была видимой. Myform1 здесь ни при чем.
Пройдите отладчиком и найдите ТОЧНОЕ место.
← →
Stager ( 2003-01-25 19:33 ) [4]
Абсолютно согласен с Юрием. От себя добавлю, что эта ошибка часто бывает, когда выполняется метод SetFocus. Чтобы не заниматься развернутой интеллектуальной обработкой, я обычно пользуюсь конструкцией:
try
Edit1.SetFocus;
except
end;
C уважением, Алексей.
Можно и проще — Windows.SetFocus(Edit1.Handle). При этом, если Edit1 не может получить фокус, то ничего не происходит, но и Exception не возникает. Значит try-except не нужны, а в итоге экономится машинный код (поскольку любой блок try — это немалые накладные расходы).
← →
Stager ( 2003-01-25 20:41 ) [6]
2 Юрий Зотов.
Понял, спасибо, буду использовать.
Cannot focus a disabled or invisible windows как исправить
Серия скриншотов из читального зала 5 ГПНТБ СО РАН.
При нажатии на кнопку выполнить в окне групповой выдачи сначала появляется сообщение «Cannot focus a disabled or invisible window» (ошибка?), а затем окно с бегущим ирбисом.
При этом в окне групповой выдачи — промежуточная ситуация: некоторые ячейки не содержат текста вообще (ошибка?). После нажатия кнопки OK в окне сообщения «Cannot focus. » — нормальная ситуация: в столбце «Выполнение» для всех строк — «Выполнено».
АРМ Книговыдача версии 2010.1 (ГПНТБ СО РАН), исполняемый файл cirbisb_new_unicode.exe от 25.01.2010 г.
У меня подобная ситуация тоже возникла, повторялась регулярно. Но, к сожалению, причин не знаю. Помогла переустановка клиента. Насколько я знаю, у других сотрудников библиотеки подобного не наблюдается (по крайней мере, не обращались).
Все книги при этом выдавались, хотя начиная с четвертой записи в окне заказа групповой книговыдачи шли пустые строки. При возврате ошибок не было.
Taisia написал(а):
——————————————————-
> У меня подобная ситуация тоже возникла,
> повторялась регулярно. Но, к сожалению, причин не
> знаю. Помогла переустановка клиента.
При чем тут переустановка клиента — если EXE-файл тот же самый, то что же меняется? Если это действительно помогло, то дело в секции [DESKTOP]
cirbisb.ini, т.е. не надо было ничего переустанавливать, а надо было просто удалить все секцию [DESKTOP]
Насколько я
> знаю, у других сотрудников библиотеки подобного не
> наблюдается (по крайней мере, не обращались).
> Все книги при этом выдавались, хотя начиная с
> четвертой записи в окне заказа групповой
> книговыдачи шли пустые строки.
.
Alio написал(а):
——————————————————-
> Эта ситуация повторяется? Если да — пришлите мне
> исходные данные (заказы и соответствующие
> документы ЭК) для ее воспроизведения.
Уважаемые коллеги, сегодня ситуацию удалось повторить.
Проблема проявилась при изменении сортировки в окне групповой выдачи.
Документы баз данных и описание тестов находятся во вложенном файле.
Cannot focus a disabled or invisible windows как исправить
Есть процедура:
procedure Myform1.BtClick(. ;
begin
.
MyForm2.show;
.
Myform2.hide; //после етого появляєтся ошибка
// Cannot focus a disabled or invisible window
.
end;
ПОчему ета ошибка появляэтся? Кто нибудь знает?
Я пробовал перед Myform2.hide; писать
Myform1.BringToFront;
Myform1.show;
Myform1.Visible:=true;
ничего не помагаэт
← →
harismatik ( 2003-01-25 15:40 ) [1]
А у тебя форма с которой вызывается окно видимо и доступно? Откуда ты его вызываешь?
← →
Kventin ( 2003-01-25 15:43 ) [2]
Да.
Вызываю из обработчика клика по некоторой кнопке.
← →
Юрий Зотов ( 2003-01-25 17:42 ) [3]
После Myform2.hide происходит какое-то обращение к Myform2 (или к одному из ее контролов), которое требует, чтобы Myform2 была видимой. Myform1 здесь ни при чем.
Пройдите отладчиком и найдите ТОЧНОЕ место.
← →
Stager ( 2003-01-25 19:33 ) [4]
Абсолютно согласен с Юрием. От себя добавлю, что эта ошибка часто бывает, когда выполняется метод SetFocus. Чтобы не заниматься развернутой интеллектуальной обработкой, я обычно пользуюсь конструкцией:
try
Edit1.SetFocus;
except
end;
C уважением, Алексей.
Можно и проще — Windows.SetFocus(Edit1.Handle). При этом, если Edit1 не может получить фокус, то ничего не происходит, но и Exception не возникает. Значит try-except не нужны, а в итоге экономится машинный код (поскольку любой блок try — это немалые накладные расходы).
← →
Stager ( 2003-01-25 20:41 ) [6]
2 Юрий Зотов.
Понял, спасибо, буду использовать.