OSDN Git Service

Design Changed
[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     Shape1: TShape;
14     Image1: TImage;
15     procedure FormCreate(Sender: TObject);
16     procedure FormDestroy(Sender: TObject);
17     procedure btnOkClick(Sender: TObject);
18     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
19   private
20     { Private \90é\8c¾ }
21     FMessages: TObjectList;
22     procedure UpdateMessage;
23   public
24     { Public \90é\8c¾ }
25     procedure ShowMessage(const Mes: String); overload;
26     procedure ShowMessage(Mes: TStrings); overload;
27   end;
28
29 var
30   frmMessageBox: TfrmMessageBox;
31
32 implementation
33
34 {$R *.DFM}
35
36 procedure TfrmMessageBox.FormCreate(Sender: TObject);
37 begin
38   FMessages := TObjectList.Create;
39 end;
40
41 procedure TfrmMessageBox.FormDestroy(Sender: TObject);
42 begin
43   FMessages.Free;
44 end;
45
46 procedure TfrmMessageBox.ShowMessage(const Mes: String);
47 var Str: TStringList;
48 begin
49   Str := TStringList.Create;
50   with Str do begin
51     Text := Mes;
52     Self.ShowMessage(Str);
53     Free;
54   end;
55 end;
56
57 procedure TfrmMessageBox.ShowMessage(Mes: TStrings);
58 var Str: TStringList;
59 begin
60   Str := TStringList.Create;
61   Str.Assign(Mes);
62   FMessages.Add(Str);
63   UpdateMessage;
64 end;
65
66 procedure TfrmMessageBox.btnOkClick(Sender: TObject);
67 begin
68   FMessages.Delete(0);
69   UpdateMessage;
70 end;
71
72 procedure TfrmMessageBox.UpdateMessage;
73 begin
74   if FMessages.Count > 0 then begin
75     memMessage.Lines.Assign(FMessages[0] as TStrings);
76   end else begin
77     Close;
78     Exit;
79   end;
80   if FMessages.Count <= 1 then //\8dÅ\8cã\82Ì1\82Â\82Ì\83\81\83b\83Z\81[\83W\82Ì\8fê\8d\87
81     btnOk.Caption := '&OK'
82   else
83     btnOk.Caption := Format('>>\8e\9f(%d)', [FMessages.Count-1]);
84   Show;
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.