1 | unit FormMain;
|
---|
2 |
|
---|
3 | interface
|
---|
4 |
|
---|
5 | uses
|
---|
6 | Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
|
---|
7 | Types, Os.Window, Os.System, Os.Types, Os.Mouse, Os.Graphics, Os.Controls, Os.Application;
|
---|
8 |
|
---|
9 | type
|
---|
10 | TControlsMouseButton = Controls.TMouseButton;
|
---|
11 |
|
---|
12 | { TFormMain }
|
---|
13 |
|
---|
14 | TFormMain = class(TForm)
|
---|
15 | Image1: TImage;
|
---|
16 | Timer1: TTimer;
|
---|
17 | procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
---|
18 | procedure Image1MouseDown(Sender: TObject; Button: TControlsMouseButton;
|
---|
19 | Shift: TShiftState; X, Y: Integer);
|
---|
20 | procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
|
---|
21 | procedure Image1MouseUp(Sender: TObject; Button: TControlsMouseButton;
|
---|
22 | Shift: TShiftState; X, Y: Integer);
|
---|
23 | procedure FormResize(Sender: TObject);
|
---|
24 | procedure FormShow(Sender: TObject);
|
---|
25 | procedure Timer1Timer(Sender: TObject);
|
---|
26 | public
|
---|
27 | App: TApplication;
|
---|
28 | System: TSystem;
|
---|
29 | end;
|
---|
30 |
|
---|
31 | { TCanvasScreen }
|
---|
32 |
|
---|
33 | TCanvasScreen = class(TCanvas)
|
---|
34 | Canvas: Graphics.TCanvas;
|
---|
35 | procedure DrawLine(P1, P2: TPosition; Color: TColor); override;
|
---|
36 | procedure DrawArea(Rect: TRectangle; Color: TColor); override;
|
---|
37 | procedure DrawText(P: TPosition; Color: TColor; Text: string); override;
|
---|
38 | function GetTextSize(Text: string): TSize; override;
|
---|
39 | end;
|
---|
40 |
|
---|
41 |
|
---|
42 | var
|
---|
43 | FormMain: TFormMain;
|
---|
44 |
|
---|
45 | implementation
|
---|
46 |
|
---|
47 | {$R *.lfm}
|
---|
48 |
|
---|
49 | { TCanvasScreen }
|
---|
50 |
|
---|
51 | procedure TCanvasScreen.DrawLine(P1, P2: TPosition; Color: TColor);
|
---|
52 | begin
|
---|
53 | Canvas.Pen.Color := Color;
|
---|
54 | Canvas.Pen.Style := psSolid;
|
---|
55 | Canvas.Line(P1.Left, P1.Top, P2.Left, P2.Top);
|
---|
56 | end;
|
---|
57 |
|
---|
58 | procedure TCanvasScreen.DrawArea(Rect: TRectangle; Color: TColor);
|
---|
59 | begin
|
---|
60 | Canvas.Brush.Color := Color;
|
---|
61 | Canvas.Brush.Style := bsSolid;
|
---|
62 | Canvas.FillRect(Rect.Position.Left, Rect.Position.Top,
|
---|
63 | Rect.Position.Left + Rect.Size.Width,
|
---|
64 | Rect.Position.Top + Rect.Size.Height);
|
---|
65 | end;
|
---|
66 |
|
---|
67 | procedure TCanvasScreen.DrawText(P: TPosition; Color: TColor; Text: string);
|
---|
68 | begin
|
---|
69 | Canvas.Brush.Style := bsClear;
|
---|
70 | Canvas.Font.Color := Color;
|
---|
71 | Canvas.TextOut(P.Left, P.Top, Text);
|
---|
72 | end;
|
---|
73 |
|
---|
74 | function TCanvasScreen.GetTextSize(Text: string): TSize;
|
---|
75 | var
|
---|
76 | Size: Types.TSize;
|
---|
77 | begin
|
---|
78 | Size := Canvas.TextExtent(Text);
|
---|
79 | Result := TSize.Create(Size.cx, Size.cy);
|
---|
80 | end;
|
---|
81 |
|
---|
82 | { TFormMain }
|
---|
83 |
|
---|
84 | procedure TFormMain.Image1MouseDown(Sender: TObject; Button: TControlsMouseButton;
|
---|
85 | Shift: TShiftState; X, Y: Integer);
|
---|
86 | var
|
---|
87 | MouseButton: TMouseButton;
|
---|
88 | begin
|
---|
89 | case Button of
|
---|
90 | TControlsMouseButton.mbLeft: MouseButton := mbLeft;
|
---|
91 | TControlsMouseButton.mbRight: MouseButton := mbRight;
|
---|
92 | TControlsMouseButton.mbMiddle: MouseButton := mbMiddle;
|
---|
93 | end;
|
---|
94 | System.Mouse.ButtonDown(TPosition.Create(X, Y), MouseButton);
|
---|
95 | end;
|
---|
96 |
|
---|
97 | procedure TFormMain.FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
---|
98 | begin
|
---|
99 | Timer1.Enabled := False;
|
---|
100 | FreeAndNil(App);
|
---|
101 | FreeAndNil(System);
|
---|
102 | end;
|
---|
103 |
|
---|
104 | procedure TFormMain.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
|
---|
105 | Y: Integer);
|
---|
106 | begin
|
---|
107 | //Caption := IntToStr(X) + ',' + IntToStr(Y);
|
---|
108 | System.Mouse.Move(TPosition.Create(X, Y));
|
---|
109 | end;
|
---|
110 |
|
---|
111 | procedure TFormMain.Image1MouseUp(Sender: TObject; Button: TControlsMouseButton;
|
---|
112 | Shift: TShiftState; X, Y: Integer);
|
---|
113 | var
|
---|
114 | MouseButton: TMouseButton;
|
---|
115 | begin
|
---|
116 | case Button of
|
---|
117 | TControlsMouseButton.mbLeft: MouseButton := mbLeft;
|
---|
118 | TControlsMouseButton.mbRight: MouseButton := mbRight;
|
---|
119 | TControlsMouseButton.mbMiddle: MouseButton := mbMiddle;
|
---|
120 | end;
|
---|
121 | System.Mouse.ButtonUp(TPosition.Create(X, Y), MouseButton);
|
---|
122 | end;
|
---|
123 |
|
---|
124 | procedure TFormMain.FormResize(Sender: TObject);
|
---|
125 | begin
|
---|
126 | if Assigned(System) then begin
|
---|
127 | Image1.Picture.Bitmap.SetSize(Image1.Width, Image1.Height);
|
---|
128 | System.Screen.Size := TSize.Create(Image1.Width, Image1.Height);
|
---|
129 | System.Screen.Paint;
|
---|
130 | end;
|
---|
131 | end;
|
---|
132 |
|
---|
133 | procedure TFormMain.FormShow(Sender: TObject);
|
---|
134 | var
|
---|
135 | Window: TWindow;
|
---|
136 | Button: TButton;
|
---|
137 | begin
|
---|
138 | System := TSystem.Create;
|
---|
139 | System.Screen.Canvas.Free;
|
---|
140 | System.Screen.Canvas := TCanvasScreen.Create;
|
---|
141 | TCanvasScreen(System.Screen.Canvas).Canvas := Image1.Canvas;
|
---|
142 | System.Screen.Size := TSize.Create(Width, Height);
|
---|
143 |
|
---|
144 | App := TApplication.Create;
|
---|
145 |
|
---|
146 | Window := System.Screen.CreateWindow('Test');
|
---|
147 | Window.Application := App;
|
---|
148 |
|
---|
149 | Window := System.Screen.CreateWindow('Commander');
|
---|
150 | Window.Position := TPosition.Create(100, 50);
|
---|
151 | Window.Size := TSize.Create(400, 200);
|
---|
152 | Window.Application := App;
|
---|
153 | Button := TButton.Create;
|
---|
154 | Button.Rectangle := TRectangle.Create(TPosition.Create(10, 50), TSize.Create(100, 32));
|
---|
155 | Button.ParentControl := Window;
|
---|
156 | Button.Title := 'Click';
|
---|
157 | Button.Visible := True;
|
---|
158 |
|
---|
159 | Window := System.Screen.CreateWindow('Calculator');
|
---|
160 | Window.Application := App;
|
---|
161 | Window.Position := TPosition.Create(200, 100);
|
---|
162 | Window.Size := TSize.Create(300, 200);
|
---|
163 |
|
---|
164 | System.Screen.Paint;
|
---|
165 | end;
|
---|
166 |
|
---|
167 | procedure TFormMain.Timer1Timer(Sender: TObject);
|
---|
168 | begin
|
---|
169 | App.ProcessMessages;
|
---|
170 | end;
|
---|
171 |
|
---|
172 | end.
|
---|
173 |
|
---|