Страница 1 из 1

колесо прокрутки

Добавлено: 29 дек 2005, 18:51
maelz
Как с помощью колёсика мышки прокручивать форму вверх, вниз. :evil:

Добавлено: 04 янв 2006, 11:51
Romeo
Путём обрабатывания нотификации WM_MOUSEWHEEL.

Re: колесо прокрутки

Добавлено: 04 янв 2006, 13:08
CyMKuH
maelz писал(а):Как с помощью колёсика мышки прокручивать форму вверх, вниз. :evil:
1) Надо поставить в свойствах формы KeyPreview:=true; - это если на форме имеются другие компоненты, и фокус нахадится на них...

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;

Добавлено: 04 янв 2006, 17:52
maelz
Я имею в виду не перемещение самой формы вверх вниз, а перемещение содержимого формы.
[/b]

Добавлено: 05 янв 2006, 14:46
CyMKuH
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

Добавлено: 15 янв 2006, 01:47
Naeel Maqsudov
Нет, нет. Так не надо делать!

Надо у формы AutoScroll поставить в False.
Затем в VertScrollBar.Range поставить логическую (прокручиваемую) высоту формы.
(VertScrollBar.Tracking можно = true)

Все. Этого достаточно. Содержимое формы будет прокручиваться.

Теперь осталось только связать колесико с вертикальным скроллбаром формы:

т.е. не
Form1.Top:=form1.Top-1; {Форма двигается вверх}

(как было выше)

а

Form1.VertScrollBar.Position:=form1.VertScrollBar.Position-1; {Форма двигается вверх}