source: branches/ByteArray/Forms/FormScreen.pas

Last change on this file was 10, checked in by chronos, 2 months ago
  • Modified: Improved serial console handling.
File size: 2.0 KB
Line 
1unit FormScreen;
2
3interface
4
5uses
6 Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, Menus,
7 FrameBuffer, Device;
8
9type
10
11 { TFormScreen }
12
13 TFormScreen = class(TFormDevice)
14 Image1: TImage;
15 MainMenu1: TMainMenu;
16 MenuItem1: TMenuItem;
17 MenuItem10: TMenuItem;
18 MenuItem11: TMenuItem;
19 MenuItem12: TMenuItem;
20 MenuItem13: TMenuItem;
21 MenuItem14: TMenuItem;
22 MenuItem15: TMenuItem;
23 MenuItem16: TMenuItem;
24 MenuItem2: TMenuItem;
25 MenuItem3: TMenuItem;
26 MenuItem4: TMenuItem;
27 MenuItem5: TMenuItem;
28 MenuItem6: TMenuItem;
29 MenuItem7: TMenuItem;
30 MenuItem8: TMenuItem;
31 MenuItem9: TMenuItem;
32 MenuItemViewConsole: TMenuItem;
33 MenuItemViewStorage: TMenuItem;
34 Separator1: TMenuItem;
35 Separator2: TMenuItem;
36 TimerDraw: TTimer;
37 procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
38 procedure FormShow(Sender: TObject);
39 procedure TimerDrawTimer(Sender: TObject);
40 private
41 DrawPending: Boolean;
42 public
43 FrameBuffer: TFrameBuffer;
44 procedure ScreenChange(Sender: TObject);
45 end;
46
47
48implementation
49
50{$R *.lfm}
51
52uses
53 Core;
54
55{ TFormScreen }
56
57procedure TFormScreen.TimerDrawTimer(Sender: TObject);
58var
59 X, Y: Integer;
60const
61 CharSize = 16;
62begin
63 if DrawPending then begin
64 DrawPending := False;
65 with FrameBuffer do begin
66 Image1.Picture.Bitmap.SetSize(Width * CharSize, Height * CharSize);
67 Image1.Picture.Bitmap.Canvas.FillRect(0, 0, Image1.Picture.Bitmap.Width,
68 Image1.Picture.Bitmap.Height);
69 for Y := 0 to Height - 1 do
70 for X := 0 to Width - 1 do
71 Image1.Picture.Bitmap.Canvas.TextOut(X * CharSize, Y * CharSize,
72 Chr(Memory.Read(Y * Width + X, 1)));
73 end;
74 end;
75end;
76
77procedure TFormScreen.FormShow(Sender: TObject);
78begin
79 DrawPending := True;
80end;
81
82procedure TFormScreen.FormClose(Sender: TObject; var CloseAction: TCloseAction);
83begin
84 if Core.Core.MainForm = Self then Application.Terminate;
85end;
86
87procedure TFormScreen.ScreenChange(Sender: TObject);
88begin
89 DrawPending := True;
90end;
91
92end.
93
Note: See TracBrowser for help on using the repository browser.