Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
4-1132821441
kolos_rus
2005-11-24 11:37
2006.02.12
Залогинился юзер или нет.


1-1136814083
Gear
2006-01-09 16:41
2006.02.12
Как программно установить файл инсталляции с расширением msi?


2-1137997680
Антон1209
2006-01-23 09:28
2006.02.12
Excel


3-1134209177
312Kbps
2005-12-10 13:06
2006.02.12
файл данных *.gtd !!!


15-1137788541
Хинт
2006-01-20 23:22
2006.02.12
Хостинг fatal.ru





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский