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

Вниз

Ошибка в TToolBar?   Найти похожие ветки 

 
Gleb   (2004-10-22 16:32) [0]

Открывать файлы посредством OpenSaveDialog можно двумя способами:
- нажав на кнопку "Open" в диалоге
- сделав DoubleClick на файле из списка диалога.
Во втором случае, если имя файла располагается на экране над кнопкой (т.е. поверх её), то срабатывает событие OnClick этой кнопки. В моём случае кнопка называлась "Delete" и удаляла одну строку из только что открывшейся таблицы (и такое удаление данных часто происходит незамеченным)

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

Долго не заморачиваясь, я обошёл это, создав для ToolBarа обработчики события OnMouseDown и OnMouseLeave, добавив булевую переменную (статус того, что кнопка была нажата) и проверяя и сбрасывая это состояние в процедуре OnClick кнопки.

Но, наверное, нужно подобную проверку включить в компонент.


 
SPeller ©   (2004-10-22 17:06) [1]

Что-то я ничего не понял что ты сказал. Можно ещё раз и поподробней?


 
Владимир Кладов   (2004-10-22 17:12) [2]

нет, ну это вряд ли ошибка тулбара KOL, это скорее ошибка Windows. Зачем она закрывая диалог посылаем WM_MOUSEUP тому окну, которое было под ним. Еще точнее, зачем API генерирует WM_LDOUBLECLICK или как его до того, как отработает WM_LBUTTONUP. В общем, у себя вы можете поставить проверку, какую хотите, а я у себя пока не буду. Кстати, в VCL оно как - проверяют они там это?


 
Gleb   (2004-10-25 10:04) [3]

Дело не в диалоговом окне.
Пусть в программе вообще нет диалоговых окон.
1. Нажимаем на кнопку мыши в любом месте основного окна.
2. Тянем курсор мыши на кнопку тулбара.
3. Отжимаем кнопку мыши.
В этот момент срабатывает событие OnClick кнопки тулбара.

Тулбаром VCL я давно не пользуюсь, как он себя ведёт, сказать не могу, но вот проверил два других тулбара. При таком поведении мыши, событие для кнопки не вызывается. Аналогично повозил мышью в программе MSWord 2003. Событие тоже не вызывается.


 
Владимир Кладов   (2004-10-25 12:31) [4]

Но все-таки надо тогда проверить другие контролы. Я еще сам гляну, но OnClick в KOL формируется общим кодом, значит надо менять логику срабатывания OnClick во всех контролах сразу.


 
SPeller ©   (2004-10-25 13:01) [5]

У меня на контролах такого симтома нет. А у тебя такое на asm или на pas версии? У меня pas.


 
SPeller ©   (2004-10-25 13:01) [6]

Удалено модератором
Примечание: Дубль


 
Gleb   (2004-10-25 16:26) [7]

И в ASM и в PAS версиях одно и то же.
KOL version 1.96
Delphi version 7
Windows XP.

На обычных TButtton этот баг не проявляется. На других контролах - тоже. (Проверял то, что было под рукой - radiobutton, treeview, checkbox, editbox, combobox). Если мышь на этих контролах только отжимать, то эти контролы не получат даже фокус ввода.


 
<Falcon>   (2004-11-17 12:15) [8]


> Открывать файлы посредством OpenSaveDialog можно двумя способами:
> - нажав на кнопку "Open" в диалоге
> - сделав DoubleClick на файле из списка диалога.
> Во втором случае, если имя файла располагается на экране
> над кнопкой (т.е. поверх её), то срабатывает событие OnClick
> этой кнопки.

У меня точно такой же глюк. :(


 
mdw ©   (2004-11-17 12:56) [9]

Да, есть такое дело. Я где-то год назад заметил.


 
имя   (2005-02-20 20:53) [10]

Удалено модератором


 
Peter   (2005-06-10 12:27) [11]

Gleb, ты писал, что для ToolBar прописывал свойство OnMouseLeave. Раскажи, как это сделать. У меня только получалось прописывать дополнительные события для TForm. Просто вписывал процедуру-обработчик в опсание класа. А, как обрабатывать дополнительные события для других компонентов - незнаю.


 
Gleb   (2005-06-14 10:42) [12]

У TKOLToolbar есть событие (event) OnMouseLeave. Если используешь MCK, то работай как в VCL: тыкаешь мышью в компонент и в ObjectInspector делаешь двойной щелчок на нужном событии.



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

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

Наверх




Память: 0.49 MB
Время: 0.046 c
15-1137596780
Джо
2006-01-18 18:06
2006.02.12
Цитата


2-1138107504
stels
2006-01-24 15:58
2006.02.12
проверка Edit на пустоту


2-1138326869
Лом
2006-01-27 04:54
2006.02.12
что за глюк ! pt.2


5-1124814681
TStas
2005-08-23 20:31
2006.02.12
Почему нет глюка?


2-1138188142
VitalikS
2006-01-25 14:22
2006.02.12
Invalid use of keyword