колесо прокрутки
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
Как с помощью колёсика мышки прокручивать форму вверх, вниз. :evil:
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Путём обрабатывания нотификации WM_MOUSEWHEEL.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
1) Надо поставить в свойствах формы KeyPreview:=true; - это если на форме имеются другие компоненты, и фокус нахадится на них...maelz писал(а):Как с помощью колёсика мышки прокручивать форму вверх, вниз. :evil:
2) Описать события:
procedure TForm1.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
Form1.Top:=form1.Top-1; {Форма двигается вверх}
end;
procedure TForm1.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
Form1.Top:=form1.Top+1; {Форма двигается вниз}
end;
Я имею в виду не перемещение самой формы вверх вниз, а перемещение содержимого формы.
[/b]
[/b]
Если ты хочешь, чтобы все без исключения компоненты перемещались по форме, то тогда тебе надо в этих же обработчиках событий написать:maelz писал(а):Я имею в виду не перемещение самой формы вверх вниз, а перемещение содержимого формы.
[/b]
procedure TForm1.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
компонент1.Top:=компонент1.Top-1; {компонент1 двигается вверх}
компонент2.Top:=компонент2.Top-1; {компонент2 двигается вверх}
end;
procedure TForm1.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
компонент2.Top:=компонент2.Top+1; {компонент2 двигается вниз}
компонент1.Top:=компонент1.Top+1; {компонент1 двигается вниз}
end;
Компонент1 и Компонент2 могут быть например Button1 и Panel1
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Нет, нет. Так не надо делать!
Надо у формы AutoScroll поставить в False.
Затем в VertScrollBar.Range поставить логическую (прокручиваемую) высоту формы.
(VertScrollBar.Tracking можно = true)
Все. Этого достаточно. Содержимое формы будет прокручиваться.
Теперь осталось только связать колесико с вертикальным скроллбаром формы:
т.е. не
Form1.Top:=form1.Top-1; {Форма двигается вверх}
(как было выше)
а
Form1.VertScrollBar.Position:=form1.VertScrollBar.Position-1; {Форма двигается вверх}
Надо у формы AutoScroll поставить в False.
Затем в VertScrollBar.Range поставить логическую (прокручиваемую) высоту формы.
(VertScrollBar.Tracking можно = true)
Все. Этого достаточно. Содержимое формы будет прокручиваться.
Теперь осталось только связать колесико с вертикальным скроллбаром формы:
т.е. не
Form1.Top:=form1.Top-1; {Форма двигается вверх}
(как было выше)
а
Form1.VertScrollBar.Position:=form1.VertScrollBar.Position-1; {Форма двигается вверх}