OSDN Git Service

TEditor、TTaskTrayの配布先変更に追従
[winbottle/winbottle.git] / bottleclient / MessageBox.pas
1 unit MessageBox;
2
3 interface
4
5 uses
6   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
7   StdCtrls, Contnrs, ExtCtrls;
8
9 type
10   TfrmMessageBox = class(TForm)
11     memMessage: TMemo;
12     btnOk: TButton;
13     Image1: TImage;
14     procedure FormCreate(Sender: TObject);
15     procedure FormDestroy(Sender: TObject);
16     procedure btnOkClick(Sender: TObject);
17     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
18   private
19     { Private \90é\8c¾ }
20     FMessages: TObjectList;
21     procedure UpdateMessage;
22   public
23     { Public \90é\8c¾ }
24     procedure ShowMessage(const Mes: String); overload;
25     procedure ShowMessage(Mes: TStrings); overload;
26   end;
27
28 var
29   frmMessageBox: TfrmMessageBox;
30
31 implementation
32
33 {$R *.DFM}
34
35 procedure TfrmMessageBox.FormCreate(Sender: TObject);
36 begin
37   FMessages := TObjectList.Create;
38 end;
39
40 procedure TfrmMessageBox.FormDestroy(Sender: TObject);
41 begin
42   FMessages.Free;
43 end;
44
45 procedure TfrmMessageBox.ShowMessage(const Mes: String);
46 var Str: TStringList;
47 begin
48   Str := TStringList.Create;
49   with Str do begin
50     Text := Mes;
51     Self.ShowMessage(Str);
52     Free;
53   end;
54 end;
55
56 procedure TfrmMessageBox.ShowMessage(Mes: TStrings);
57 var Str: TStringList;
58 begin
59   Str := TStringList.Create;
60   Str.Assign(Mes);
61   FMessages.Add(Str);
62   UpdateMessage;
63 end;
64
65 procedure TfrmMessageBox.btnOkClick(Sender: TObject);
66 begin
67   FMessages.Delete(0);
68   UpdateMessage;
69 end;
70
71 procedure TfrmMessageBox.UpdateMessage;
72 begin
73   if FMessages.Count > 0 then begin
74     memMessage.Lines.Assign(FMessages[0] as TStrings);
75   end else begin
76     Close;
77     Exit;
78   end;
79   if FMessages.Count <= 1 then //\8dÅ\8cã\82Ì1\82Â\82Ì\83\81\83b\83Z\81[\83W\82Ì\8fê\8d\87
80     btnOk.Caption := '&OK'
81   else
82     btnOk.Caption := Format('>>\8e\9f(%d)', [FMessages.Count-1]);
83   Show;
84   btnOk.SetFocus;
85 end;
86
87 procedure TfrmMessageBox.FormCloseQuery(Sender: TObject;
88   var CanClose: Boolean);
89 begin
90   CanClose :=  FMessages.Count = 0;
91 end;
92
93 end.