Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.11;
Скачать: CL | DM;

Вниз

Установка фокуса   Найти похожие ветки 

 
skiph ©   (2002-10-30 09:54) [0]

На форме расположены две кнопки (TBitBtn), событие OnEnter, которых переопределено. Управляя клавишами клавиатуры "вправо - влево", можно можно фокусировать поочередно каждую из кнопок. Пусть фокус на кнопке №2, в результате некоторых действий я делаю кнопку №1 недоступной (BitBtn1.Enabled:=False). Пользователь нажимает на клавишу "влево", после чего управление должно перейти на кнопку 1, но поскольку она недоступна, это становится невозможным и бог с этим. Но возникает ошибка "Cannot focus a disabled or invisible window", не смотря на то, что в этот момент процедура OnEnter даже не вызывается. Как избежать таких сообщений?


 
roadster   (2002-10-30 12:47) [1]

ну либо фокус не давать на задизабленную и невидимую,
либо енаблить и визиблить, а потом фокус давать


 
Song ©   (2002-10-30 14:01) [2]

Надо вставлять проверку в то, место которое ответственно за перемещение фокуса.


 
skiph ©   (2002-10-31 03:58) [3]

Так как не давать фокус? Я брекпоинт ставил на начало OnEnter, так ошибка возникает раньше, чем вызывается этот метод, т.е. на основании самого факта передачи управления!


 
PKT   (2002-10-31 04:17) [4]

to: skiph © (30.10.02 09:54)

Я правильно принцип понял ?


procedure TForm1.Button1Enter(Sender: TObject);
begin
ShowMessage("Enter 1");
end;

procedure TForm1.Button2Enter(Sender: TObject);
begin
ShowMessage("Enter 2");
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Button1.Enabled := not Button1.Enabled;
end;


Ошибка у меня не возникает.


 
skiph ©   (2002-10-31 07:53) [5]

Ну, примерно так. Но при передаче фокуса выскакивает егог.


 
Separator ©   (2002-10-31 08:02) [6]

Когда передаешь фокус, делай проверку на Enable


 
skiph ©   (2002-10-31 09:25) [7]

Так и делал. Но в том-то и дело, что до выполнения OnEnter очередь даже не доходит. В ручную (через SetFocus) я фокус не передавал.
А вообще спасибо всем, я по-другому сделал.


 
Alex4444444444   (2002-10-31 11:09) [8]


with MyButton do try
if CanFocus then SetFocus;
except // just in case
end;



 
skiph ©   (2002-11-01 05:16) [9]

Спасибо, конечно, но куда бы мне это впихнуть?



Страницы: 1 вся ветка

Текущий архив: 2002.11.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
4-34292
volodya_
2002-10-01 10:45
2002.11.11
Handle


1-34027
vic_vm
2002-11-02 12:49
2002.11.11
Как в TStringGrid удалить строку посредине StringGrid-а


1-34023
[NEW]Splinter
2002-11-02 14:26
2002.11.11
Не могу прочитать из EXE-шника...


7-34280
Master Noname
2002-09-04 12:24
2002.11.11
Driver for USB


1-33926
DVM
2002-10-31 10:25
2002.11.11
Сохранение содержимого ListView в реестре