Главная страница
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.06 c
6-1131363336
vladraven
2005-11-07 14:35
2006.02.12
В случае закрытого порта выдает ошибку ( connection timed out )


15-1137954001
iZEN
2006-01-22 21:20
2006.02.12
Инструментарий для исследования, анализа IP-пакетов.


15-1138087423
Serg1981
2006-01-24 10:23
2006.02.12
Не могу понять


15-1137670385
Kerk
2006-01-19 14:33
2006.02.12
Подскажите форум посвященный веб-дизайну.


15-1137960823
Udaff
2006-01-22 23:13
2006.02.12
Замучился уже