procedure TimgFullForm.imgFullMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
with Sender as Tcontrol do DragBox:= Rect(Left, Top, Width, Height);
PntCapture := Point(X,Y);
SMode := 1;
if Start then Start:= FALSE; //'드래그 시작'
end;
procedure TimgFullForm.imgFullMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
if Smode = 1 then
begin
SaveBox := DragBox; // '드래그 중'
with Sender as Tcontrol do DragBox:= Rect(Left + X - PntCapture.X,
Top + Y - PntCapture.Y,
Width, Height);
pnlImageFullDragDrop(pnlImageFull, Sender,
DragBox.Left + PntCapture.X,
DragBox.Top + PntCapture.Y);
end;
end;
procedure TimgFullForm.imgFullMouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
SMode := 0; // '드래그 끝'
Start := TRUE;
pnlImageFullDragDrop(pnlImageFull, Sender,
DragBox.Left + PntCapture.X,
DragBox.Top + PntCapture.Y);
with Sender as Tcontrol do SaveBox:= Rect(Left, Top, Width, Height);
end;
procedure TimgFullForm.pnlImageFullDragDrop(Sender, Source: TObject; X,
Y: Integer);
var Moved: TControl; { Tlabel etc..}
Still: TPanel; { ScrollBox etc.. }
begin
Moved := Source as TControl;
Still := Sender as TPanel;
Moved.Parent := Still;
Moved.Left := X - PntCapture.X;
Moved.Top := Y - PntCapture.Y;
{if Moved.Left < 10 then Moved.Left := conMinBrank
else
if (Moved.Left + Moved.Width) > (pnlPaper.Width - conMinBrank) then
Moved.Left := pnlPaper.Width - (Moved.Width + conMinBrank);
if Moved.Top < 10 then Moved.Top := conMinBrank
else
if (Moved.Top + Moved.Height) > (pnlPaper.Height - conMinBrank) then
Moved.Top := pnlPaper.Height - (Moved.Height + conMinBrank);{}
end;
procedure TimgFullForm.pnlImageFullDragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept:= Source is Tcontrol; //'드래그 중'
end;
procedure TimgFullForm.spdBtnZoomNomlClick(Sender: TObject);
begin
imgFull.Left := 0; // imgFull Left Clear
imgFull.Top := 0; // imgFull Top Clear
cntZooms := 0; // Zoom Resister Clear
//pnlSpdBtnMenu.caption := '0';
ZoomMode := ZmNone;
imgFull.Width := wSource;
imgFull.Height := hSource;
end;
procedure TimgFullForm.ZoomTimerTimer(Sender: TObject);
var blZmExit : boolean;
ZoomVal : real;
dempT : integer;
dempB : integer;
dempW : integer;
dempH : integer;
begin
blZmExit := false;
if (blZmTime) then
begin
inc(cntTimer);
if (cntTimer = 3) then
begin
cntTimer := 0;
case ZoomMode of
ZmIn:
begin
if (cntZooms = 20) then
begin
blZmTime := false;
Exit;
end;
inc(cntZooms);
if (cntZooms > 0) then
begin
ZoomVal := (cntZooms * 2 / 10) + 1;
dempW := Trunc(wSource * ZoomVal);
dempH := Trunc(hSource * ZoomVal);
end
else
if (cntZooms < 0) then
begin
ZoomVal := Abs(cntZooms * 2 / 10) + 1;
dempW := Trunc(wSource / ZoomVal);
dempH := Trunc(hSource / ZoomVal);
end
else
begin
imgFull.Top := 0;
imgFull.Left := 0;
dempW := wSource;
dempH := hSource;
end;
end;
ZmOut:
begin
if (cntZooms = -20) then blZmExit := true;
if (blNotZmOut) and (cntZooms = 0) then blZmExit := true;
if not(blNotZmOut) and
((imgFull.Width <= 50) or
(imgFull.Height <= 50)) then blZmExit := true;
if (blZmExit) then Exit;
Dec(cntZooms);
if (cntZooms > 0) then
begin
ZoomVal := (cntZooms * 2 / 10) + 1;
dempW := Trunc(wSource * ZoomVal);
dempH := Trunc(hSource * ZoomVal);
end
else
if (cntZooms < 0) then
begin
ZoomVal := Abs(cntZooms * 2 / 10) + 1;
dempW := Trunc(wSource / ZoomVal);
dempH := Trunc(hSource / ZoomVal);
end
else
begin
imgFull.Top := 0;
imgFull.Left := 0;
dempW := wSource;
dempH := hSource;
end;
end;
end; // case end
//pnlSpdBtnMenu.caption := FloatToStr(ZoomVal);
imgFull.Width := dempW;
imgFull.Height := dempH;
end; // if (cntTimer = 3) then ==> end
end; // if (blZmTime) then ==> end
end;
procedure TimgFullForm.spdBtnZoomInClick(Sender: TObject);
var blZmExit : boolean;
ZoomVal : real;
dempT : integer;
dempB : integer;
dempW : integer;
dempH : integer;
begin
if (cntZooms = 20) then Exit;
inc(cntZooms);
if (cntZooms > 0) then
begin
ZoomVal := (cntZooms * 2 / 10) + 1;
dempW := Trunc(wSource * ZoomVal);
dempH := Trunc(hSource * ZoomVal);
end
else
if (cntZooms < 0) then
begin
ZoomVal := Abs(cntZooms * 2 / 10) + 1;
dempW := Trunc(wSource / ZoomVal);
dempH := Trunc(hSource / ZoomVal);
end
else
begin
imgFull.Top := 0;
imgFull.Left := 0;
dempW := wSource;
dempH := hSource;
end;
//pnlSpdBtnMenu.caption := FloatToStr(ZoomVal);
imgFull.Width := dempW;
imgFull.Height := dempH;
end;
procedure TimgFullForm.spdBtnZoomInMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
cntTimer := 0;
blZmTime := true;
ZoomMode := ZmIn;
ZoomTimer.Enabled := true;
end;
procedure TimgFullForm.spdBtnZoomInMouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
cntTimer := 0;
ZoomMode := ZmNone;
blZmTime := false;
ZoomTimer.Enabled := false;
end;
procedure TimgFullForm.spdBtnZoomOutClick(Sender: TObject);
var ZoomVal : real;
dempT : integer;
dempB : integer;
dempW : integer;
dempH : integer;
begin
if (cntZooms = -20) then Exit;
if (imgFull.Width <= 50) or (imgFull.Height <= 50) then Exit;
Dec(cntZooms);
if (cntZooms > 0) then
begin
ZoomVal := (cntZooms * 2 / 10) + 1;
dempW := Trunc(wSource * ZoomVal);
dempH := Trunc(hSource * ZoomVal);
end
else
if (cntZooms < 0) then
begin
ZoomVal := Abs(cntZooms * 2 / 10) + 1;
dempW := Trunc(wSource / ZoomVal);
dempH := Trunc(hSource / ZoomVal);
end
else
begin
imgFull.Top := 0;
imgFull.Left := 0;
dempW := wSource;
dempH := hSource;
end;
imgFull.Width := dempW;
imgFull.Height := dempH;
end;
procedure TimgFullForm.spdBtnZoomOutMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
cntTimer := 0;
blZmTime := true;
ZoomMode := ZmOut;
ZoomTimer.Enabled := true;
end;
procedure TimgFullForm.spdBtnZoomOutMouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
cntTimer := 0;
ZoomMode := ZmNone;
blZmTime := false;
ZoomTimer.Enabled := false;
end;
|