Форум: "KOL";
Текущий архив: 2006.02.12;
Скачать: [xml.tar.bz2];
ВнизОшибка в 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 вся ветка
Форум: "KOL";
Текущий архив: 2006.02.12;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.037 c