Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как осуществить прокрутку в ScrollBox?


Vasiliy ©   (2006-08-20 07:56:00) 

Приветствую Вас, мастера. Вот такой вопрос возник.
Имеется компонент ScrollBox на форме, Align=Alclient. В этом компоненте находится Timage в котором загружена картинка, превосходящая размеры Scrollbox, как минимум вдвое. Соответственно появились ползунки.
Я обратил внимание что при прокрутке ползунков изменились Left и Top компонента Image. Решил воспользоваться событием OnMouseWheel... чтобы их изменить, но что-то не работает, при ни на Image, ни на ScrollBox.
Подскажить пожалуйста, как осуществить прокрутку ScrollBox, крутя колесик мышки.

Заранее благодарю.


Vasiliy   (2006-08-22 06:07:00) [1]

Спасибо, сегодня же поэксперементирую.


ffo   (2006-08-21 13:46:00) [2]


> Tfm_TP22500


Извини. Случайно оставил Tfm_TP22500 из своего приера, не обращай внимания.


ffo   (2006-08-21 13:42:00) [3]


> Подскажить пожалуйста, как осуществить прокрутку ScrollBox,
>  крутя колесик мышки


Для этого напиши небольшой перехватчик событий прокрутки мыши.
Вот пример писанный мной для скролов формы:
public
{ Public declarations }
procedure ffoHOOK(var Msg:TMsg;var Handled:Boolean);

//   ...

procedure Tfm_TP22500.FormCreate(Sender: TObject);
begin
Application.OnMessage:=ffoHOOK;
end;

//...

procedure TForm1.ffoHOOK(var Msg:TMsg;var Handled:Boolean);
begin
case Msg.message of
wm_MOUSEWHEEL://Крутнули кнопку мыши
               if Msg.wParam > 0 then VertScrollBar.Position:=VertScrollBar.Position+10
               else VertScrollBar.Position:=VertScrollBar.Position-10;

   wm_KEYDOWN://Сообщение от клавиатуры
               case Msg.wParam of
                vk_Left: HorzScrollBar.Position:=HorzScrollBar.Position-10;//смещение влево
                vk_Right:HorzScrollBar.Position:=HorzScrollBar.Position+10;//смещение вправо
                vk_Up:   VertScrollBar.Position:=VertScrollBar.Position-10;//смещение вверх
                vk_Down: VertScrollBar.Position:=VertScrollBar.Position+10;//смещение вниз
               end;//case

end;//case

//...
//Отключи
Form1.Repaint;
Handled:=true;

end;

Как видишь тут и кнопки управления курсором перехвачены(крутишь ср кн мыши или жмешь на кнопки перемещения курсора, а двигается скрол куда теде надо)


Мефисто   (2006-08-21 13:19:00) [4]

TForm.OnMouseWheel....
Begin
 TScrollBox.VertScrollBar.Position := TScrollBox.VertScrollBar.Position + WheelDelta;
end;


vasiliy   (2006-08-21 06:06:00) [5]

>>>Мефисто   (20.08.06 08:53) [1]

TScrollBox.HorzScrollBar
TScrollBox.VertScrollBar

TScrollBox.VertScrollBar.Position

А на какой компонент событие движения колесика мышки накладывать, а что-то не получается (на события Scrollbox, Image не работает).

С уважением.


Мефисто   (2006-08-20 08:53:00) [6]

TScrollBox.HorzScrollBar
TScrollBox.VertScrollBar

TScrollBox.VertScrollBar.Position


Наверх

Титульная страница Поиск, карта сайта Написать письмо