This repository was archived by the owner on Dec 25, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathMessageForm.pas
More file actions
120 lines (95 loc) · 2.4 KB
/
MessageForm.pas
File metadata and controls
120 lines (95 loc) · 2.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
unit MessageForm;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls;
const
A_ALPHA_STEP = 20;
A_TIMER_INTERVAL = 30;
MAX_ALPHA = 210;
type
TfrmMessage = class(TForm)
timerShow: TTimer;
timerHide: TTimer;
lblMessage: TLabel;
timerLife: TTimer;
procedure timerShowTimer(Sender: TObject);
procedure timerHideTimer(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure timerLifeTimer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure SoftShow(AMessage: string; const AIntervalSec: integer);
procedure SoftHide;
end;
implementation
{$R *.dfm}
{ TfrmMessage }
procedure TfrmMessage.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TfrmMessage.FormCreate(Sender: TObject);
begin
timerShow.Enabled := False;
timerHide.Enabled := False;
timerShow.Interval := A_TIMER_INTERVAL;
timerHide.Interval := A_TIMER_INTERVAL;
end;
procedure TfrmMessage.SoftHide;
begin
timerShow.Enabled := False;
timerHide.Enabled := False;
if not Visible then
Exit;
AlphaBlendValue := MAX_ALPHA;
timerHide.Enabled := True;
end;
procedure TfrmMessage.SoftShow(AMessage: string; const AIntervalSec: integer);
begin
lblMessage.Caption := AMessage;
// áóäåò çîëîòîå ñå÷åíèå
Width := Round(Screen.Width / 1.618);
timerShow.Enabled := False;
timerHide.Enabled := False;
if Visible then
Exit;
AlphaBlendValue := 50;
Show;
timerShow.Enabled := True;
// Life time
timerLife.Enabled := False;
timerLife.Interval := AIntervalSec * 1000;
timerLife.Enabled := True;
end;
procedure TfrmMessage.timerHideTimer(Sender: TObject);
var alpha: integer;
begin
alpha := AlphaBlendValue - A_ALPHA_STEP;
if alpha <= 50 then
begin
alpha := 50;
timerHide.Enabled := False;
Close;
end;
AlphaBlendValue := alpha;
end;
procedure TfrmMessage.timerLifeTimer(Sender: TObject);
begin
SoftHide;
end;
procedure TfrmMessage.timerShowTimer(Sender: TObject);
var alpha: integer;
begin
alpha := AlphaBlendValue + A_ALPHA_STEP;
if alpha >= MAX_ALPHA then
begin
alpha := MAX_ALPHA;
timerShow.Enabled := False;
end;
AlphaBlendValue := alpha;
end;
end.