![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
OnMouseWheel в TScrollBox [D7, WinXP]
Provodnick © (2004-06-22 13:28:00)Здравствуйте, я пытаюсь обработать событие OnMouseWhell в ScrollBoxe на форме, но ничего не происходит. Удается обработать лишь аналогичное событие формы. Что делать? В чем проблема?
Provodnick (2004-06-23 14:34:00) [1]Во-первых, извеняюсь, что заварил всю кашу и свалил неизвестно куда - у нас инет вырубили только сегодня заработал. Во-вторых, пример с PtInRect(ClientRect, ScreenToClient(MousePos)) только в обработчике формы, а не ScrollBox`а - это то, что нужно!!! Отдельное спасибо AlexSV и всем всем всем!!!
AlexSV (2004-06-23 12:52:00) [2]> GuAV © (23.06.04 12:21) [17]
>... кликни по edit, наводи курсор и крути ...
кликни по скролбоксу, наведи на edit и крути
GuAV (2004-06-23 12:21:00) [3]AlexSV (23.06.04 12:17) [16]
Уже начинаешь надоедать ;) кинь в один угол скролбокс а в другой edit, кликни по edit, наводи курсор и крути - работать не будет!
> У меня работает D5
Не аргумент ;)
AlexSV (2004-06-23 12:17:00) [4]> GuAV © (23.06.04 11:53) [15]
У меня работает D5
курсор скролбоксе а фокус нет
GuAV (2004-06-23 11:53:00) [5]AlexSV (23.06.04 10:39) [14]
Это тебе не надо. твой код выполнит действия, если и курсор будет в скролбоксе и фокус там же. Т.е. если у него не будет фокуса, то действия выполнены не будут, даже если мыша на нём.
AlexSV (2004-06-23 10:39:00) [6]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 00:15:00) [7]
> Нет, я добавил кнопок всяких. Если фокус на другом контроле
> и мышь вне 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
...и ищи ошибку у себя.
Andy BitOff (2004-06-22 22:59:00) [8]
Procedure PardonOfOffTop;
begin
SendMessage('Прошу прощения за OffTop');
end;
Procedure WaitPardon;
begin
if not Pardon then PardonOfOffTop;
end;
GrayFace (2004-06-22 19:09:00) [9]Offtop: Лично я за повтор простил. Теперь проси прощения за Offtop.
Provodnick (2004-06-22 18:36:00) [10]Нет, я добавил кнопок всяких. Если фокус на другом контроле и мышь вне ScrollBox`a, то все равно срабатывает его событие. Что же делать?
GuAV (2004-06-22 16:17:00) [11]
> Но теперь событие вызывается даже если ScrollBox не находится
> в фокусе...
Ну, если на тестовой форме только ScrollBox, а остальные контролы в нём, то он не потеряет фокус.
Rem (2004-06-22 15:35:00) [12]"не находится в фокусе" - что имеется в виду? Не наведена мышь или фокус не на форме?
Provodnick (2004-06-22 14:26:00) [13]TabStop действоительно был в False. Недоглядел. Но теперь событие вызывается даже если ScrollBox не находится в фокусе... Хотелось бы, чтоб этого не было.
Andy BitOff (2004-06-22 14:03:00) [14]Offtop: Прошу прощения за повтор. 500 ошибка выскачила и повторил.
GuAV (2004-06-22 14:01:00) [15]
> Полагаю, что да
а TabStop случайно не False? если False, то предположение неверно.
Andy BitOff (2004-06-22 14:00:00) [16]Надо принудительно передать ему фокус, например при OnShow
Andy BitOff (2004-06-22 14:00:00) [17]Надо принудительно передать ему фокус, например при OnShow
Provodnick (2004-06-22 13:49:00) [18]Что Вы под этим подразумеваете? Находится ли он в фокусе ввода? Полагаю, что да, ведь он единственный компонент на форме(тестовой форме).
PVOzerski (2004-06-22 13:33:00) [19]А ScrollBox при этом активен?