source: trunk/Forms/FormMessages.pas

Last change on this file was 14, checked in by chronos, 3 weeks ago
  • Modified: Pausing CPU thread execution with event object instead of freeing thread object.
File size: 1.4 KB
Line 
1unit FormMessages;
2
3interface
4
5uses
6 Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls,
7 Generics.Collections;
8
9type
10 TMessage = class
11 Text: string;
12 end;
13
14 { TMessages }
15
16 TMessages = class(TObjectList<TMessage>)
17 function AddNew(Text: string): TMessage;
18 end;
19
20 { TFormMessages }
21
22 TFormMessages = class(TForm)
23 Memo1: TMemo;
24 Timer1: TTimer;
25 procedure FormCreate(Sender: TObject);
26 procedure FormDestroy(Sender: TObject);
27 procedure Timer1Timer(Sender: TObject);
28 private
29 FReloadPending: Boolean;
30 public
31 Messages: TMessages;
32 procedure AddMessage(Text: string);
33 end;
34
35
36implementation
37
38{$R *.lfm}
39
40{ TMessages }
41
42function TMessages.AddNew(Text: string): TMessage;
43begin
44 Result := TMessage.Create;
45 Result.Text := Text;
46 Add(Result);
47end;
48
49{ TFormMessages }
50
51procedure TFormMessages.Timer1Timer(Sender: TObject);
52var
53 I: Integer;
54begin
55 if FReloadPending then begin
56 FReloadPending := False;
57 Memo1.Lines.BeginUpdate;
58 Memo1.Lines.Clear;
59 for I := 0 to Messages.Count - 1 do
60 Memo1.Lines.Add(Messages[I].Text);
61 Memo1.Lines.EndUpdate;
62 end;
63end;
64
65procedure TFormMessages.FormCreate(Sender: TObject);
66begin
67 Messages := TMessages.Create;
68end;
69
70procedure TFormMessages.FormDestroy(Sender: TObject);
71begin
72 FreeAndNil(Messages);
73end;
74
75procedure TFormMessages.AddMessage(Text: string);
76begin
77 Messages.AddNew(Text);
78 FReloadPending := True;
79end;
80
81end.
82
Note: See TracBrowser for help on using the repository browser.