Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.93
Singleton
175 / 70 / 2
Регистрация: 27.12.2012
Сообщений: 380
#1

Cannot focus a disabled or invisible window - Delphi

08.02.2014, 20:05. Просмотров 4608. Ответов 4
Метки нет (Все метки)

В рабочий проект (D7) были внесены изменения, в частности при определенном событии запрещена смена раскладки клавиатуры:
Delphi
1
2
3
4
5
6
7
8
9
private
  { Private declarations }
  procedure MsgHandler(var Msg: TMsg; var Handled: Boolean);
...
procedure TForm1.MsgHandler(var Msg: TMsg; var Handled: Boolean);
begin
 if Msg.message = WM_INPUTLANGCHANGEREQUEST then 
   Handled := true;
end;
После этого при запуске появилась ошибка выполнения cannot focus a disabled or invisible window на 8 строке:
Delphi
1
2
3
4
5
6
7
8
9
10
11
begin
  CreateMutex(nil, True, 'Test Lite');
  if GetLastError = ERROR_ALREADY_EXISTS then
  Exit;
  Application.Initialize;
  Application.Title := 'Test Lite 1.0.9';
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TAboutBox, AboutBox); //ошибка
  Application.CreateForm(TForm3, Form3);
  Application.Run;
end.
Лечиться правкой private процедуры locking (закомменторовал строку Form1.Edit1.SetFocus).
Получается что программа якобы пытается установить фокус ввода на Edit скрытого окна, хотя в FormCreate фокус не устанавливается.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.Minimize;
  ShowWindow(Application.Handle, sw_Hide);  //убрать кнопку с системной панели
  CoolTrayIcon1.HideMainForm;
  Label1.Font.Color:=Form1.Color;
  AddFontResource('DS-DIGII.TTF'); //регистрируем шрифт для программы
  SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
 
  LoadKeyboardLayout('00000409',KLF_ACTIVATE); //меняем язык на En
  Application.OnMessage := MsgHandler; //отправляем к заглушке изменения языка
 
  OptionsLoad();
 
  if Options.AutoActivate then
    locking();
end;
 
procedure TForm1.locking();
begin
  Application.ShowMainForm:=True;
  Form1.CoolTrayIcon1.ShowMainForm;
  ShowWindow(Application.Handle, sw_Hide);
  Form1.CoolTrayIcon1.IconVisible:=False;
  Form1.WindowState:=wsMaximized;
  Form1.FormStyle:=fsStayOnTop;
  Form1.Label1.Font.Size:=Round(Form1.Height/6);
  showtime();
  Form1.Label1.Font.Color:=clLime;
  ExitLock:=True;
  Form1.Edit1.SetFocus;
 
  Form1.Timer1.Enabled:=True;
end;
Пробовал перенести Application.OnMessage := MsgHandler; в процедуру locking() - без изменений. Как можно одновременно запретить смену раскладки и сохранить перевод фокуса на Edit?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2014, 20:05
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Cannot focus a disabled or invisible window (Delphi):

cannot focus a disabled or invisible window - Delphi
На форме имеется PageControl с двумя вкладками на одной TreeView. В момент срабатывания структуры if Tree.CanFocus then Tree.SetFocus...

Cannot focus a disabled or invisible window [Delphi 7] - Delphi
Ребят, проблема опять, с этими тупыми вкладками Приступим. Дано: С лева панель кнопок (програмку прикрепил http://zalil.ru/31308503...

Есть две формы, при переходе с одной на другую, вылетает cannot focus a disabled or invisible window - Delphi
В общем хочу что бы у меня были открыты две формы сразу, но при переходе между ними вылетает сообщение cannot focus a disabled or invisible...

MS SQL Ошибка: Cannot focus a disabled or invisible window - Delphi БД
Добрый день, подскажите пожалуйста, при нажатии на кнопку выходит вот такая ошибка. Cannot focus a disabled or invisible window ...

события window.focus/blur/beforeunload, element.load/error не работаю - JavaScript
почему? window.beforeunload = function(){ confirm("Вы уверенны что хотите покинуть эту страницу?"); } а так же...

Focus на поле input при открытии popup window (bootstrap popover) - jQuery
Есть кнопка на сайте, при нажатии открывается popover окошко, с полем input в котором есть текст. Как сделать так чтобы при открытии...

4
Singleton
175 / 70 / 2
Регистрация: 27.12.2012
Сообщений: 380
10.02.2014, 02:10  [ТС] #2
Перефразирую вопрос: какая связь между вмешательством в очередь сообщений ОС и установкой фокуса ввода (фокус устанавливается не в TFormOnCreate, а после максимизации данной формы)?
0
northener
пофигист широкого профиля
3246 / 2298 / 497
Регистрация: 15.07.2013
Сообщений: 13,554
10.02.2014, 02:56 #3
Цитата Сообщение от Singleton Посмотреть сообщение
фокус устанавливается не в TFormOnCreate
А в вышепредставленном коде именно в TFormOnCreate. Как прикажешь тебя понимать, Саид?
0
Singleton
175 / 70 / 2
Регистрация: 27.12.2012
Сообщений: 380
10.02.2014, 03:05  [ТС] #4
Вход в процедуру блокировки происходит по условию, а ошибка возникает даже если оно ложно. Пробовал поставить sleep(5000), т.е. форма гарантировано должна быть создана, развернута и перемещена наверх.
При трассировке вылетает именно на строке
Delphi
1
Application.CreateForm(TAboutBox, AboutBox);
Форма при этом так же не активизируется.
Саид в недоумении.
0
northener
пофигист широкого профиля
3246 / 2298 / 497
Регистрация: 15.07.2013
Сообщений: 13,554
10.02.2014, 03:20 #5
Цитата Сообщение от Singleton Посмотреть сообщение
ошибка возникает даже если оно ложно.
Значит ещё где-то сидит подобная засада.
Цитата Сообщение от Singleton Посмотреть сообщение
При трассировке вылетает именно на строке
Application.CreateForm(TAboutBox, AboutBox);
Именно там и должен находится курсор при "неглубокой" трассировке в случае ошибки при создании Form1.
1
10.02.2014, 03:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.02.2014, 03:20
Привет! Вот еще темы с ответами:

input[type="submit"][disabled!=disabled]:hover - HTML, CSS
Здравствуйте. У меня для кнопок типа submit и button есть стили input, input, button { ... } input:hover, input:hover,...

Window является свойством глобального объекта Window - JavaScript
если объект window является свойством глобального объекта Window, то почему запись: Window.window // => undefined

Почему в Opera v12.0 координаты окна браузера относительно экрана window.screenX или window.screenY выдает 0? - JavaScript
Здравствуйте, подскажите пожалуйста почему в Opera v 12.0, координаты окна браузера относительно экрана - window.screenX или...

window.document.write и window.alert() - JavaScript
1)Вот смотрите, window ч точки зрения языка джаваскрипт - это объект, скажите это объект какого класса?Ведь говорят что window это самый...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru