Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.11.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
1-34112
NeyroSpace
2002-10-31 17:15
2002.11.11
Как убить событие OnClick и OnDblClick?


3-33898
VZ Alexandr
2002-10-22 20:20
2002.11.11
Помогите с Insert


1-34091
Zergling
2002-10-30 06:15
2002.11.11
Как корректно завершить работу потоков в программе!?


3-33880
ScareCrow
2002-10-22 15:47
2002.11.11
Смена Table Langauge для табл.формата Paradox


14-34201
Yuraz
2002-10-22 12:34
2002.11.11
Можно ли загрузить архив этого форума в zip за месяц?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский