| 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 |
|
|---|