OSDN Git Service

Fixed memory leaks
[winbottle/winbottle.git] / bottleclient / SendConfirm.pas
1 unit SendConfirm;
2
3 interface
4
5 uses
6   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
7   StdCtrls, ExtCtrls, BottleDef, SppList;
8
9 type
10   TfrmConfirmSend = class(TForm)
11     btnOk: TButton;
12     btnCancel: TButton;
13     cbxDontAlertAnyMore: TCheckBox;
14     memPrompt: TMemo;
15     memInfo: TMemo;
16     pnlPreview: TPanel;
17     Image: TImage;
18     procedure FormCreate(Sender: TObject);
19     procedure FormDestroy(Sender: TObject);
20   private
21     { Private \90é\8c¾ }
22     FDefaultImage: TBitmap; // \83v\83\8c\83r\83\85\81[\97p\83T\81[\83t\83B\83X\82ª\82È\82¢\8fê\8d\87\82Ì\83{\83g\83\8b\89æ\91\9c
23   public
24     { Public \90é\8c¾ }
25     function Execute(const Channel, Ghost: String): boolean;
26   end;
27
28 var
29   frmConfirmSend: TfrmConfirmSend;
30
31 function SendConfirmDialog(const Channel, Ghost: String): boolean;
32
33 implementation
34
35 {$R *.DFM}
36
37 function SendConfirmDialog(const Channel, Ghost: String): boolean;
38 var MyfrmConfirmSend: TfrmConfirmSend;
39 begin
40   Application.CreateForm(TfrmConfirmSend, MyfrmConfirmSend);
41   with MyfrmConfirmSend do begin
42     try
43       cbxDontAlertAnyMore.Checked := Pref.NoConfirm;
44       Result := Execute(Channel, Ghost);
45       Pref.NoConfirm := cbxDontAlertAnyMore.Checked;
46     finally
47       Release;
48     end;
49   end;
50 end;
51
52 function TfrmConfirmSend.Execute(const Channel, Ghost: String): boolean;
53 var Mes: String;
54     Bmp: TBitmap;
55     SurfaceImageExists: boolean;
56 begin
57   Bmp := TBitmap.Create;
58   try
59     if Ghost = ChannelDefault then
60       SurfaceImageExists := false
61     else
62       SurfaceImageExists := Spps.TryGetImage(Ghost, 0, Bmp);
63     if SurfaceImageExists then
64       with Image do
65       begin
66         Picture.Bitmap := Bmp;
67         if (Width < Bmp.Width) or (Height < Bmp.Height) then
68         begin
69           Stretch := true;
70         end else
71           Stretch := false;
72         begin
73         end;
74       end
75     else
76       with Image do
77       begin
78         Picture.Bitmap := FDefaultImage;
79         Stretch := false;
80       end
81   finally
82     Bmp.Free;
83   end;
84
85   Mes := memInfo.Lines.Text;
86   Mes := StringReplace(Mes, '%channel', Channel, [rfReplaceAll]);
87   Mes := StringReplace(Mes, '%ghost', Ghost, [rfReplaceAll]);
88   memInfo.Lines.Text := Mes;
89   Result := ShowModal = mrOk;
90 end;
91
92 procedure TfrmConfirmSend.FormCreate(Sender: TObject);
93 begin
94   FDefaultImage := TBitmap.Create;
95   FDefaultImage.Assign(Image.Picture.Bitmap);
96 end;
97
98 procedure TfrmConfirmSend.FormDestroy(Sender: TObject);
99 begin
100   FDefaultImage.Free;
101 end;
102
103 end.