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

Вниз

Баг с кнопками   Найти похожие ветки 

 
SPeller ©   (2003-01-31 05:11) [0]

Я нашёл такую вот недоработку в кнопках. У меня на форме несколько кнопок, ни одна из них не DefaultBtn и не CanselBtn. AllBtnReturnClick = True. Бага два. Первый: все кнопки реагируют на нажатие Esc, если клавиша была нажата на них. Данный эффект исчезает если назначить CancelBtn. Второй: по нажатию на одну из кнопок у меня показывается диалог открытия/сохранения. Так вот, если в диалоге нажать клавишу Esc или Enter, то диалог как и пологается закрывается, но вот нажатие клавиши почему-то передаётся кнопке, и кнопка тут же снова нажимается, и опять вылазит диалог.

Кто-нибудь готов взяться за истребление данного бага?


 
mdwmdw   (2003-01-31 14:10) [1]


Второй: по нажатию на одну из кнопок у меня показывается диалог открытия/сохранения. Так вот, если в диалоге нажать клавишу Esc или Enter, то диалог как и пологается закрывается, но вот нажатие клавиши почему-то передаётся кнопке, и кнопка тут же снова нажимается, и опять вылазит диалог.

Такую же фигню заметил для Toolbar. По dblClick на имени файла, в случае, если под ним находится кнопка Toolbar"а, то она отрабатывает нажатие.


 
blackalex ©   (2003-02-03 12:29) [2]

2Speller

Тоже самое у меня. Но я заметил еще несколько отклонений. Как-то уже писал про это, но никто не откликнулся. Можешь ли ты эти глюки у себя перепроверить?

У меня форме 5 кнопок. AllBtnReturnClick формы я посадил на True

1) Если сажаю DefaultBtn ОДНОЙ из кнопки , почему-то все 5 откликаются на Return.
2) В МСК DefaultBtn постоянно сбрасывыется на False
3) Если форма модальная , то DefaultBtn := True не дает вообще никакого результата , хотя AllBtnReturnClick у формы стоит True.
4) Если у кнопок DefaultBtn := True то события OnKeyDown и OnKeyUp не работают


 
SPeller ©   (2003-02-03 12:46) [3]

Посмотрю сразу же, как только справлюсь с проблемой показа модальной формы когда Applet = nil; :-))


 
blackalex ©   (2003-02-03 13:44) [4]

:) Глюк номер 3 выявился когда я кнопари на другую форму бросил и открыл ее модально.



 
mdw ©   (2003-02-03 14:09) [5]

1) Если сажаю DefaultBtn ОДНОЙ из кнопки , почему-то все 5 откликаются на Return.
У меня тоже самое, кроме того они и на Escape тоже реагируют. Причем в OnClick кнопок ставил MsgOk() - при нажатии Enter и Escape повторно кнопка срабатывает.

2) В МСК DefaultBtn постоянно сбрасывыется на False
Этого вроде нет. (версия 1.60)

3) Если форма модальная , то DefaultBtn := True не дает вообще никакого результата , хотя AllBtnReturnClick у формы стоит True.
Работает.
Если у кнопок DefaultBtn := True то события OnKeyDown и OnKeyUp не работают
Не работают у кого, у кнопок или у других контролов. хотя у меня работает у всех.


 
mdw ©   (2003-02-03 14:24) [6]

1) Если сажаю DefaultBtn ОДНОЙ из кнопки , почему-то все 5 откликаются на Return.

А вообще то, ты чего хотел? Если AllBtnReturnClick True
то так и должно быть.


 
mdw ©   (2003-02-03 14:38) [7]

Так вот, если в диалоге нажать клавишу Esc или Enter, то диалог как и пологается закрывается, но вот нажатие клавиши почему-то передаётся кнопке, и кнопка тут же снова нажимается, и опять вылазит диалог.

Сейчас посмотрел - кнопке передаётся не нажатие клавиши, а ее отпускание (WM_KEYUP), вернее не передается, а обрабатывается ею. Я думаю тот же баг и при DblClick (ну я писал) - только для мыши. Надо бы поковыряться, но некогда сейчас, работы дофига. А там глядишь и Кладов сам исправит :))))))


 
blackalex ©   (2003-02-03 15:29) [8]

Если сажаю DefaultBtn ОДНОЙ из кнопки , почему-то все 5 откликаются на Return.

А вообще то, ты чего хотел? Если AllBtnReturnClick True
то так и должно быть.


Да нет , что-то тут не чисто. Сажаю DefaultBtn = false , ни одна кнопка не реагирует на Return. AllBtnReturnClick стоит True. Все правильно . Так и должно. Теперь DefaultBtn = true только у одной. Внезапно начинают все 5 на Return откликаться. Я так понимаю, что только та у которой DefaultBtn = false должна нажиматься. Остальные же не должны молчать. Или не так?

Если у кнопок DefaultBtn := True то события OnKeyDown и OnKeyUp не работают
Не работают у кого, у кнопок или у других контролов. хотя у меня работает у всех.


У кнопок не работает. У меня тоже KOL 1.60 Сейчас буду пэтчить на 1.64 и посмотрю как это там все выглядит


 
blackalex ©   (2003-02-03 15:33) [9]

Я так понимаю, что только та у которой DefaultBtn = false должна нажиматься.

Сорри. Поправляюсь. Хотел сказать DefaultBtn = true


 
mdw ©   (2003-02-03 17:44) [10]

Читаем про AllBtnReturnClick
{* Call this method for a form or any its control to provide clicking a focused button when ENTER pressed. By default, a button can be clicked only by SPACE key from the keyboard, or by mouse. }
т.е обеспечивает щелчек на сфокусированной кнопке нри нажатии ENTER. По умолчанию, кнопка может быть нажата только ПРОБЕЛОМ или мышью.
Поэтому все кнопки (та на которой фокус) и нажимаются.
Или у тебя по ENTER"у все кнопки одновременно срабатывают?


 
blackalex ©   (2003-02-03 19:05) [11]

В том то и дело, что ни одна не срабатывает, пока DefaultBtn у кнопок false

Теперь читаем про DefaultBtn

Set this property to true to make control clicked when ENTER key is pressed

Что означает , что если DefaultBtn true, то кнопка срабатывает при нажатии Enter, если на ней фокус.
Так оно все прекрасно работает. Но только тогда , когда AllBtnReturnClick = false

Короче я с читал сначало, что для того чтобы выключить/включить поддержку Enter у кнопок, необходимо у формы назначить AllBtnReturnClick и дополнительно еще DefaultBtn у кнопок false-выключить , true-включить . Теперь я думаю, что AllBtnReturnClick был изначально задуман так, что если он true , то все кнопки (и не только) , лежащие на форме и имеющие фокус, слушаються Enter, независимо от значения DefaultBtn. В общем весь цирк в том, что я не могу понять для чего нужен AllBtnReturnClick , ведь можно и без него обойтись


 
SPeller ©   (2003-02-03 19:18) [12]


> В общем весь цирк в том, что я не могу понять для чего
> нужен AllBtnReturnClick

По-моему, он был для того чтобы кнопка (единичная - имхо) нажималась не только когда нажимаешь пробел (предусмотрено внидами), но и когда нажимаешь *на ней* Enter. Я понял так. Если не прав, пусть Владимир меня поправит.


 
Kladov   (2003-02-03 19:25) [13]

Разобрался. AllBtnReturnClick вызывается, когда форма еще только создается и ее перемення = nil. Пока можно вызов устроить в OnFormCreate (тогда свойство в Object Inspector поставить false). Вообще, работает сейчас, если есть TKOLApplet и у него AllBtnReturnClick = true. Может, поэтому одни других и не поняли - у кого-то именно так и выставлено и работает.

К следующему обновлению поправлю код в MCK, чтобы вызов делался, когда форма уже создана.

Впрочем, там еще глюк с CANCEL. Тоже подправлю.


> справлюсь с проблемой показа модальной формы когда Applet
> = nil;


А там какие проблемы? Присвойте не nil, и все будет в порядке.


 
SPeller ©   (2003-02-04 04:07) [14]


> А там какие проблемы? Присвойте не nil, и все будет в порядке.

Это по мылу обсудим. А так, чтобы народ знал: когда вы пишете ДЛЛ и вам надо селать несколько совершенно независимых КОЛ-форм, то это у вас врядли получится, потому как все формы будут связаны через Applet. Присваивание Applet"у nil спасает от одних, но тянет за собой другие проблемы.


 
Centronix   (2003-02-04 17:54) [15]


> Короче я с читал сначало, что для того чтобы выключить/включить
> поддержку Enter у кнопок, необходимо у формы назначить
> AllBtnReturnClick и дополнительно еще DefaultBtn у кнопок
> false-выключить , true-включить . Теперь я думаю, что
> AllBtnReturnClick был изначально задуман так, что если
> он true , то все кнопки (и не только) , лежащие на форме
> и имеющие фокус, слушаються Enter, независимо от значения
> DefaultBtn. В общем весь цирк в том, что я не могу понять
> для чего нужен AllBtnReturnClick , ведь можно и без него
> обойтись

Хм.. насколько я понял - AllBtnReturnClick нужен для того, чтобы любая кнопка с фокусом нажималась при нажитии на Enter. А DefaultBtn=True означает, что при нажатии на Enter при отсутствии фокуса на какой-либо кнопке (например, когда активен EditBox или ListBox) нажималась данная кнопка.
Во всяком случае в VCL вроде так.


 
blackalex ©   (2003-02-04 18:35) [16]

Я теперь тоже разобрался. Вся фишка в апплете. Если он есть, то AllBtnReturnClick работает как надо. У меня его как раз и не было. Вообщем ждем 1.65


 
SPeller ©   (2003-02-04 19:32) [17]

А если показать форму через Show, то никаких багов и ни DefaultBtn, ни CancelBtn не работают. Аплета нету.



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

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

Наверх




Память: 0.52 MB
Время: 0.018 c
1-65437
NewD
2003-10-07 17:21
2003.10.20
Очень нужно срочно!!!


1-65461
Oleg__
2003-10-09 09:55
2003.10.20
Странная ошибка


11-65402
FIj
2003-01-31 04:40
2003.10.20
Апдейт КОЛа


3-65315
guest_Dmitry
2003-09-28 13:11
2003.10.20
Сохранение параметров Grid


1-65458
MadDogNT
2003-10-06 19:12
2003.10.20
delphi и 1 с