Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.048 c
15-1137730196
Думкин
2006-01-20 07:09
2006.02.12
Jeer с днем тебя человечище.


2-1138145935
Змей
2006-01-25 02:38
2006.02.12
colordialog


8-1124699608
Новичек11
2005-08-22 12:33
2006.02.12
Эквалайзер к MS Media Player


4-1133562913
Delphi_is_cool
2005-12-03 01:35
2006.02.12
Не отображаются Item ы в СomboBox


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




   Наверх