Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.11;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.04 c
6-1084712702
Tolik77
2004-05-16 17:05
2004.07.11
TIdHTTP как поротся с преброской сайта:)


14-1088063193
Романов Р.В.
2004-06-24 11:46
2004.07.11
Что такое


3-1087306890
Piter
2004-06-15 17:41
2004.07.11
Выбор уникальных полей


4-1085226019
Lenchik
2004-05-22 15:40
2004.07.11
Хочу написать монитор температуры


1-1088524227
hgd
2004-06-29 19:50
2004.07.11
Как подсоединить Excel к Delphi