Delphi-Projects
119 строк · 2.7 Кб
1unit PreviewUnit;
2
3interface
4
5uses
6Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7Dialogs, ExtCtrls, Menus;
8
9type
10TPreviewForm = class(TForm)
11ScrollBox: TScrollBox;
12Image: TImage;
13PopupMenu: TPopupMenu;
14Exit: TMenuItem;
15Bevel: TBevel;
16procedure FormKeyPress(Sender: TObject; var Key: Char);
17procedure ExitClick(Sender: TObject);
18procedure ScrollBoxMouseWheel(Sender: TObject; Shift: TShiftState;
19WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
20procedure FormCreate(Sender: TObject);
21procedure ImageMouseMove(Sender: TObject; Shift: TShiftState; X,
22Y: Integer);
23procedure ImageMouseDown(Sender: TObject; Button: TMouseButton;
24Shift: TShiftState; X, Y: Integer);
25private
26{ Private declarations }
27PrevX, PrevY: Integer;
28public
29{ Public declarations }
30end;
31
32var
33PreviewForm: TPreviewForm;
34
35implementation
36
37{$R *.dfm}
38
39procedure TPreviewForm.FormKeyPress(Sender: TObject; var Key: Char);
40begin
41case Ord(Key) of
42VK_Space, VK_Escape, VK_Return:
43ExitClick(Sender);
448, VK_Up:
45Image.Top := Image.Top + 120;
462, VK_Down:
47Image.Top := Image.Top - 120;
486, VK_Right:
49Image.Left := Image.Left + 120;
504, VK_Left:
51Image.Left := Image.Left - 120;
52end;
53end;
54
55procedure TPreviewForm.ExitClick(Sender: TObject);
56begin
57Close;
58end;
59
60procedure TPreviewForm.ScrollBoxMouseWheel(Sender: TObject;
61Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint;
62var Handled: Boolean);
63var
64H, W: Integer;
65begin
66with Image do
67begin
68H := Height;
69W := Width;
70Stretch := True;
71if ssLeft in Shift then
72begin
73Top := 0;
74Height := Height - WheelDelta;
75Width := MulDiv(Height, W, H);
76end
77else
78if (Top < 0) and (WheelDelta > 0) then
79ScrollBox.ScrollBy(0, WheelDelta);
80if ((Top + Height) > ScrollBox.ClientHeight) and (WheelDelta < 0) then
81ScrollBox.ScrollBy(0, WheelDelta);
82Bevel.SetBounds(Left, Top, Width + 1,Height + 1);
83{
84Caption := Format('%d %d %d %d', [
85WheelDelta,
86Image.Top,
87Image.Top + Image.Height,
88ScrollBox.ClientHeight
89]);
90}
91end;
92//ScrollBox.ScaleBy(3, 4);
93Handled := True;
94end;
95
96procedure TPreviewForm.FormCreate(Sender: TObject);
97begin
98//ScrollBox.ScrollInView(Image);
99end;
100
101procedure TPreviewForm.ImageMouseMove(Sender: TObject; Shift: TShiftState;
102X, Y: Integer);
103begin
104if ssLeft in Shift then
105with TImage(Sender) do
106begin
107SetBounds(Left + X - PrevX, Top + Y - PrevY, Width, Height);
108Bevel.SetBounds(Left, Top, Width + 1, Height + 1);
109end;
110end;
111
112procedure TPreviewForm.ImageMouseDown(Sender: TObject;
113Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
114begin
115PrevX := X;
116PrevY := Y;
117end;
118
119end.
120