source: branches/overos/FormMain.pas

Last change on this file was 39, checked in by chronos, 11 months ago
  • Modified: Simplified unit names.
File size: 4.7 KB
Line 
1unit FormMain;
2
3interface
4
5uses
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
9type
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
42var
43 FormMain: TFormMain;
44
45implementation
46
47{$R *.lfm}
48
49{ TCanvasScreen }
50
51procedure TCanvasScreen.DrawLine(P1, P2: TPosition; Color: TColor);
52begin
53 Canvas.Pen.Color := Color;
54 Canvas.Pen.Style := psSolid;
55 Canvas.Line(P1.Left, P1.Top, P2.Left, P2.Top);
56end;
57
58procedure TCanvasScreen.DrawArea(Rect: TRectangle; Color: TColor);
59begin
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);
65end;
66
67procedure TCanvasScreen.DrawText(P: TPosition; Color: TColor; Text: string);
68begin
69 Canvas.Brush.Style := bsClear;
70 Canvas.Font.Color := Color;
71 Canvas.TextOut(P.Left, P.Top, Text);
72end;
73
74function TCanvasScreen.GetTextSize(Text: string): TSize;
75var
76 Size: Types.TSize;
77begin
78 Size := Canvas.TextExtent(Text);
79 Result := TSize.Create(Size.cx, Size.cy);
80end;
81
82{ TFormMain }
83
84procedure TFormMain.Image1MouseDown(Sender: TObject; Button: TControlsMouseButton;
85 Shift: TShiftState; X, Y: Integer);
86var
87 MouseButton: TMouseButton;
88begin
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);
95end;
96
97procedure TFormMain.FormClose(Sender: TObject; var CloseAction: TCloseAction);
98begin
99 Timer1.Enabled := False;
100 FreeAndNil(App);
101 FreeAndNil(System);
102end;
103
104procedure TFormMain.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
105 Y: Integer);
106begin
107 //Caption := IntToStr(X) + ',' + IntToStr(Y);
108 System.Mouse.Move(TPosition.Create(X, Y));
109end;
110
111procedure TFormMain.Image1MouseUp(Sender: TObject; Button: TControlsMouseButton;
112 Shift: TShiftState; X, Y: Integer);
113var
114 MouseButton: TMouseButton;
115begin
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);
122end;
123
124procedure TFormMain.FormResize(Sender: TObject);
125begin
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;
131end;
132
133procedure TFormMain.FormShow(Sender: TObject);
134var
135 Window: TWindow;
136 Button: TButton;
137begin
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;
165end;
166
167procedure TFormMain.Timer1Timer(Sender: TObject);
168begin
169 App.ProcessMessages;
170end;
171
172end.
173
Note: See TracBrowser for help on using the repository browser.