Главная страница
    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.053 c
3-1087192084
Tariel
2004-06-14 09:48
2004.07.11
InterBase - Сколько раз выполняется вложенный запрос в where


14-1087949054
jack128
2004-06-23 04:04
2004.07.11
Как часто вы работаете по ночам?


14-1087972511
Карелин Артем
2004-06-23 10:35
2004.07.11
Где найти анализатор логов сервера формата IAS? (MicroSoft)


4-1085985021
Mamed
2004-05-31 10:30
2004.07.11
Font Size


1-1087996349
Heretic
2004-06-23 17:12
2004.07.11
Подчиненные окна





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