Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2012, 06:19   #1
sedoq
Пользователь
 
Аватар для sedoq
 
Регистрация: 30.01.2012
Сообщений: 11
По умолчанию Ошибка Cannot focus a disabled or invisible window.

Выскакивает ошибка в программе по нажатию на клавишу Tab
Cannot focus a disabled or invisible window.

У меня Две формы на первой 2 edit'a с текстом

Код:
procedure TForm1.Edit1Click(Sender: TObject);
begin
edit1.Clear;
edit1.Font.Color := clBlack;
end;

procedure TForm1.Edit2Click(Sender: TObject);
begin
edit2.Clear;
edit2.Font.Color := clBlack;
end;
И компонент ApplicationEvents1Message

Код:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
     if Msg.message = WM_KEYDOWN then
        if (Msg.wParam=VK_TAB) then
        begin
        Edit2.SetFocus;
        Edit2.Clear;
        edit2.Font.Color := clBlack;
        Handled:=true;
        end;
        end;
А на второй форме тоже 2 edit'a но нету ApplicationEvents1Message

Код:
procedure TForm2.Edit4Click(Sender: TObject);
begin

edit4.Clear;
edit4.Font.Color := clBlack;
end;

procedure TForm2.Edit1Click(Sender: TObject);
begin
edit1.Clear;
edit1.Font.Color := clBlack;
end;

И когда я именно на Form2 нажимаю tab выскакивает ошибка Cannot focus a disabled or invisible window.

А на первой форме когда tab жму всё нормально
Возможно ли каким ни буть образом убрать ошибку ?
sedoq вне форума Ответить с цитированием
Старый 01.02.2012, 06:49   #2
MaxNik2009
Форумчанин
 
Аватар для MaxNik2009
 
Регистрация: 17.09.2009
Сообщений: 294
По умолчанию

ApplicationEvents получает системные сообщения в независимости от того какое окно у тебя активно в данный момент. По этому в ApplicationEvents1Message проверяй какое окно в данный момент активно, и в зависимости от этого выполняй нужные действия.procedure
Код:
TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
     if Msg.message = WM_KEYDOWN then
        if (Msg.wParam=VK_TAB) then
        begin
          если активно окно1 то
            твои действия для окна1
          иначе
             твои действия для окна2;
        end;
end;
надеюсь мысль ясна.
принимаю благодарности в письменном виде( весы слева)...
MaxNik2009 вне форума Ответить с цитированием
Старый 01.02.2012, 07:41   #3
sedoq
Пользователь
 
Аватар для sedoq
 
Регистрация: 30.01.2012
Сообщений: 11
По умолчанию

В строчке Form3.Edit4.SetFocus; показывает ошибку -
[Error] Unit2.pas(311): Operator not applicable to this operand type
sedoq вне форума Ответить с цитированием
Старый 01.02.2012, 07:45   #4
sedoq
Пользователь
 
Аватар для sedoq
 
Регистрация: 30.01.2012
Сообщений: 11
По умолчанию

MaxNik2009

Всё разобрался спасибо большое
sedoq вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JQuery форма focus gunsoy JavaScript, Ajax 3 15.11.2011 20:49
Отрисовка текста в цвете Disabled NieL Общие вопросы Delphi 1 14.05.2011 14:53
window.document.write и window.alert() Syltan JavaScript, Ajax 0 26.08.2010 21:32
disabled all checkbox mager JavaScript, Ajax 2 01.11.2008 20:43