Главная страница
    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.47 MB
Время: 0.06 c
15-1137442466
Гарри Поттер
2006-01-16 23:14
2006.02.12
Рисовалки


2-1138198075
Proxytel
2006-01-25 17:07
2006.02.12
Позиция курсора миши?


3-1134716335
Tigra
2005-12-16 09:58
2006.02.12
Как программно изменить NET DIR?


3-1134382092
Rater
2005-12-12 13:08
2006.02.12
Агрегатные поля в TDBF работаю? (+ походу глюки в TDBF...)


15-1137339360
Piter
2006-01-15 18:36
2006.02.12
Я плакал :)) А это правда?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский