![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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; |