Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Вниз

OnMouseWheel в TScrollBox   Найти похожие ветки 

 
Provodnick   (2004-06-22 13:28) [0]

Здравствуйте, я пытаюсь обработать событие OnMouseWhell в ScrollBoxe на форме, но ничего не происходит. Удается обработать лишь аналогичное событие формы. Что делать? В чем проблема?


 
PVOzerski ©   (2004-06-22 13:33) [1]

А ScrollBox при этом активен?


 
Provodnick   (2004-06-22 13:49) [2]

Что Вы под этим подразумеваете? Находится ли он в фокусе ввода? Полагаю, что да, ведь он единственный компонент на форме(тестовой форме).


 
Andy BitOff ©   (2004-06-22 14:00) [3]

Надо принудительно передать ему фокус, например при OnShow


 
Andy BitOff ©   (2004-06-22 14:00) [4]

Надо принудительно передать ему фокус, например при OnShow


 
GuAV ©   (2004-06-22 14:01) [5]


>  Полагаю, что да

а TabStop случайно не False? если False, то предположение неверно.


 
Andy BitOff ©   (2004-06-22 14:03) [6]

Offtop: Прошу прощения за повтор. 500 ошибка выскачила и повторил.


 
Provodnick   (2004-06-22 14:26) [7]

TabStop действоительно был в False. Недоглядел. Но теперь событие вызывается даже если ScrollBox не находится в фокусе... Хотелось бы, чтоб этого не было.


 
Rem   (2004-06-22 15:35) [8]

"не находится в фокусе" - что имеется в виду? Не наведена мышь или фокус не на форме?


 
GuAV ©   (2004-06-22 16:17) [9]


> Но теперь событие вызывается даже если ScrollBox не находится
> в фокусе...

Ну, если на тестовой форме только ScrollBox, а остальные контролы в нём, то он не потеряет фокус.


 
Provodnick   (2004-06-22 18:36) [10]

Нет, я добавил кнопок всяких. Если фокус на другом контроле и мышь вне ScrollBox`a, то все равно срабатывает его событие. Что же делать?


 
GrayFace ©   (2004-06-22 19:09) [11]

Offtop: Лично я за повтор простил. Теперь проси прощения за Offtop.


 
Andy BitOff ©   (2004-06-22 22:59) [12]


Procedure PardonOfOffTop;
begin
 SendMessage("Прошу прощения за OffTop");
end;

Procedure WaitPardon;
begin
 if not Pardon then PardonOfOffTop;
end;


 
GuAV ©   (2004-06-23 00:15) [13]


> Нет, я добавил кнопок всяких. Если фокус на другом контроле
> и мышь вне ScrollBox`a, то все равно срабатывает его событие.
> Что же делать?

Проведи такой эксперимент ScrollBox и memo кинь в разные углы формы. назначь форме и скролбоксу такой onmousewheel:
procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState;
 WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
Memo1.Lines.Add(TComponent(Sender).Name);
end;

Кликни в сколбоксе и покрути колесо результат:
ScrollBox1
Form1
ScrollBox1
Form1
ScrollBox1
Form1
ScrollBox1
Form1
ScrollBox1
Form1
ScrollBox1
Form1
Кликни в мемо и покрути колесо результат:
Form1
Form1
Form1
Form1

...и ищи ошибку у себя.


 
AlexSV   (2004-06-23 10:39) [14]

Provodnick   (22.06.04 14:26) [7]
TabStop действоительно был в False. Недоглядел

и не надо, это не влияет на проблему

в событии OnMouseWhell в ScrollBoxe вставь
...
with TScrollBox(Sender) do
 if PtInRect(ClientRect, ScreenToClient(MousePos)) then begin
// Выполняем действия
 end;
...


 
GuAV ©   (2004-06-23 11:53) [15]

AlexSV   (23.06.04 10:39) [14]
Это тебе не надо. твой код выполнит действия, если и курсор будет в скролбоксе и фокус там же. Т.е. если у него не будет фокуса, то действия выполнены не будут, даже если мыша на нём.


 
AlexSV   (2004-06-23 12:17) [16]

> GuAV ©   (23.06.04 11:53) [15]

У меня работает D5
курсор скролбоксе а фокус нет


 
GuAV ©   (2004-06-23 12:21) [17]

AlexSV   (23.06.04 12:17) [16]
Уже начинаешь надоедать ;) кинь в один угол скролбокс а в другой edit, кликни по edit, наводи курсор и крути - работать не будет!
> У меня работает D5

Не аргумент ;)


 
AlexSV   (2004-06-23 12:52) [18]

> GuAV ©   (23.06.04 12:21) [17]
>... кликни по edit, наводи курсор и крути ...

кликни по скролбоксу, наведи на edit и крути


 
Provodnick   (2004-06-23 14:34) [19]

Во-первых, извеняюсь, что заварил всю кашу и свалил неизвестно куда - у нас инет вырубили только сегодня заработал. Во-вторых, пример с PtInRect(ClientRect, ScreenToClient(MousePos)) только в обработчике формы, а не ScrollBox`а - это то, что нужно!!! Отдельное спасибо AlexSV и всем всем всем!!!



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.033 c
1-1088072674
Anatoliy
2004-06-24 14:24
2004.07.11
Распаковать буфер


1-1087905913
Новичек
2004-06-22 16:05
2004.07.11
Class function/procedure


1-1088062573
Del_programmer
2004-06-24 11:36
2004.07.11
Регистрация проги


1-1088202560
AndrewVolkov
2004-06-26 02:29
2004.07.11
ListView изменение ширины столбца?


1-1088510769
MadMax
2004-06-29 16:06
2004.07.11
XML-RPC проблемы с загрузкой SSL библиотек





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