![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() в скролбоксе находится большая картинка, скролбокс отображает только некоторую ее часть.как обработать процедуры маусап,даун и мув, что бы можно было прямо в скролбоксе перемещать картинку, просматривая все ее части?буду благодарен за наброски кода.заранее спасибо!
|
#2
|
|||
|
|||
![]() как-то так
Код:
TForm1 = class(TForm) .... private FMovedImage : TImage; FMovedX,FMovedY:Integer; ... end; ........ procedure TForm1.ImageMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if Sender = FMovedImage then with FMovedImage do begin Left :=Left +(X-FMovedX); Top :=Top +(Y-FMovedY); end; end; procedure TForm1.ImageMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin FMovedImage := nil; end; procedure TForm1.ImageMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Sender is TImage then begin FMovedImage := Sender as TImage; FMovedX:=X; FMovedY:=Y; end; end; |
#3
|
|||
|
|||
![]() вроде бы да, работает, но если тащить картинку в одну сторону, то открываются пустые поля.как задать границы сдвига размерами имиджа?вот вопрос
|
#4
|
||||
|
||||
![]() Код:
var Form1: TForm1; ImgMoved:Boolean; oX, oY:Integer; implementation ............................................................ procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin imgMoved:=true; oX:=X; oY:=Y; end; procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin imgMoved:=false; end; procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var dx, dy:Integer; begin if imgMoved then begin dx:=oX-X; dy:=oY-Y; ScrollBox1.HorzScrollBar.Position:=ScrollBox1.HorzScrollBar.Position+dx; ScrollBox1.VertScrollBar.Position:=ScrollBox1.VertScrollBar.Position+dy; end; end; |