Başlangıç olması açısından şöyle bir örnek karaladım, belki bir ışık tutar;
Daha kısa olduğu için önce kullanımını örnekleyelim, devamında yapının kaynak kodlarını yazının devamında bulabilirsiniz;
Mesajların gösterileceği diyalog formu ise aşağıdaki gibi...
DFM Dosyası şu şekilde;
Daha kısa olduğu için önce kullanımını örnekleyelim, devamında yapının kaynak kodlarını yazının devamında bulabilirsiniz;
...
...
implementation
{$R *.dfm}
uses
Mesaj_
;
procedure TAna.Button1Click(Sender: TObject);
begin
TMesaj.Goster( Self // Parent Form
, 'Bu mesaj 15 saniye sonra kendini yok edecek.' // Mesajın kendisi
, 15 // Bekleme Süresi (Saniye cinsinden)
, True // Pencere başlığı gizlensin mi / gizlenmesin mi...
);
end;
procedure TAna.Button2Click(Sender: TObject);
var
I: Integer;
aDiyalog: TMesaj;
begin
// Mesaj diyalog formunu oluşturuyoruz
aDiyalog:= TMesaj.Goster(Self,'Bu, aşağıdaki işlem bittiğinde yok olacak...', 0, TRUE);
// aynı kanal içinde uzunca bir iş yapıyoruz...
for I := 0 to 3000 do Memo.Lines.Add(I.ToString); // Elbette temsili bir iş bu...
// İşimiz bitince mesaj diyalog formumuzu kendimiz kapatıyoruz...
FreeAndNil(aDiyalog);
end;
Mesajların gösterileceği diyalog formu ise aşağıdaki gibi...
unit Mesaj_;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, dxGDIPlusClasses;
type
TMesaj = class(TForm)
OtomatikKapat: TTimer;
pnGenel: TPanel;
Logo: TImage;
Panel1: TPanel;
lbMesaj: TLabel;
imClose: TImage;
pnTercih: TPanel;
lbSayac: TLabel;
cxBirDahaGosterMe: TCheckBox;
procedure OtomatikKapatTimer(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure imCloseClick(Sender: TObject);
private
{ Private declarations }
FBasliksiz: Boolean;
FBeklemeSuresi: Integer;
FBeklemeSayac: Integer;
procedure SetMesaj(const Value: string);
procedure SetBasliksiz(const Value: Boolean);
procedure SetBeklemeSuresi(const Value: Integer);
public
{ Public declarations }
class function Goster(aOwner: TComponent; aMesaj: string; aBeklemeSuresi: Integer = 10; aBasliksiz: Boolean = True): TMesaj;
end;
implementation
{$R *.dfm}
uses
System.Threading
;
{ TMesajGoster }
class function TMesaj.Goster(aOwner: TComponent; aMesaj: string; aBeklemeSuresi: Integer; aBasliksiz: Boolean): TMesaj;
begin
Result := TMesaj.Create(aOwner);
with Result do
begin
SetMesaj(aMesaj);
SetBasliksiz(aBasliksiz);
SetBeklemeSuresi(aBeklemeSuresi);
Show;
Application.ProcessMessages;
end;
end;
procedure TMesaj.SetBasliksiz(const Value: Boolean);
begin
FBasliksiz := Value;
case FBasliksiz of
True : BorderStyle := bsNone;
False : BorderStyle := bsDialog;
end;
end;
procedure TMesaj.SetMesaj(const Value: string);
begin
lbMesaj.Caption := Value;
end;
procedure TMesaj.SetBeklemeSuresi(const Value: Integer);
begin
FBeklemeSuresi := Value;
FBeklemeSayac := FBeklemeSuresi;
OtomatikKapat.Interval := 1000;
OtomatikKapat.Enabled := (Value > 0); // Sıfırdan büyük ise Timer'i etkinleştiriyoruz.
lbSayac.Caption := FBeklemeSayac.ToString;
end;
procedure TMesaj.OtomatikKapatTimer(Sender: TObject);
begin
FBeklemeSayac := FBeklemeSayac - 1;
lbSayac.Caption := FBeklemeSayac.ToString;
if (FBeklemeSayac <= 0) then Close;
end;
procedure TMesaj.imCloseClick(Sender: TObject);
begin
Close;
end;
procedure TMesaj.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
end.
DFM Dosyası şu şekilde;
object Mesaj: TMesaj
Left = 0
Top = 0
BorderIcons = []
BorderStyle = bsDialog
Caption = 'Mesaj'
ClientHeight = 153
ClientWidth = 507
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
FormStyle = fsStayOnTop
OldCreateOrder = False
Position = poMainFormCenter
OnClose = FormClose
PixelsPerInch = 96
TextHeight = 13
object pnGenel: TPanel
Left = 0
Top = 0
Width = 507
Height = 153
Align = alClient
Padding.Left = 2
Padding.Top = 2
Padding.Right = 2
Padding.Bottom = 2
TabOrder = 0
ExplicitTop = 4
object Logo: TImage
AlignWithMargins = True
Left = 13
Top = 13
Width = 34
Height = 34
Margins.Left = 10
Margins.Top = 10
Margins.Right = 10
Margins.Bottom = 10
Align = alLeft
AutoSize = True
Center = True
Constraints.MaxHeight = 34
Constraints.MaxWidth = 34
Constraints.MinHeight = 34
Constraints.MinWidth = 34
Picture.Data = {
0B546478504E47496D61676589504E470D0A1A0A0000000D4948445200000020
000000200806000000737A7AF40000001974455874536F667477617265004164
6F626520496D616765526561647971C9653C0000001B744558745469746C6500
5761726E696E673B4E6F74696669636174696F6E3BB6E779860000049E494441
54785EED94794CD37718C6B7653AC45DC9FE59B66CF18F89324427E31045C298
3B5C9685C503C7C47901634303988906141430A3188E5105B103741C010B4839
46E528542BB08A481139047518CA515A282D679167DFF797C589A2CE49354B6C
F2499E3CEFFBE57979DFB4CF0178AA3CFBFC7F91C539BD517BCC793F6377E961
07D3279DFF82FCA8F3F1F63307D1F6FB3E30CD27EF49853F5FC27358511BEF3C
61D05D8541D70AD2E451CDE8E9D1DE8B4D6BE29C9A6ECAE230AE9673749C8DC1
1F7CA766BECF92B946FFEFCF45AD8CB822DC09C38002633D950437C415A10F58
2DCAA85B1087D9DB55473B1A467A6A31D625C178AF8C60BA02C34A19586DA238
D4DED12843446EB5303DCB7368BC2189C1586F3546FB5B202911119C1E65435C
2FE3E15CE4CA56BEF7E297677CF592F0E5118A746F18FA9B31DA2D43B22001CB
9C3610A4396F4C5909459A37586FEC8C6EA120C8D64E7A68B961B8A71EC31D45
185156209E1F035BC7F51C094762396FF88608FA0E0958EF447EA0CD47333244
88ABD99CB290658D6D67781853D561A82D13237F1623EFD409583BAC25489347
35364401AE1685A1FC807D1B7FFBA2571E7BF5C58136E11793B6C1A0BB097D4B
06230D43EDB9904BF360B5FC6B82347954E37A86D9301793B7431C64F3783F50
423F2BEB9240DBF1A1CE3AB6DE22E81A5338F44D69E86C966289DD570469F2FE
A9B7A4437F5D0CF6F656B6BFD5C7FFE914BBBE986752F4D3878AE6BC83185337
41DB701C5A45E26D46BBE5B05AF625417A4A8D7A752D9968CEDD8FE2DDD6D762
DDCD5F7DE4D5E7F92E0DAF3EB2915BFDE0E51468EB8E4C61E466253EFD7C0D41
9ABCA9D41F83BE35073547DD21F2B38A7FA4536478595A17FA2E1D1F6815B375
0AA1A90AC7C085280CD4C6DE467FF53442020308D277D6A897DE3042A1A91380
FDADC92CEFC5ABFED5297C57BD6B72FAC7258A4B277762A4B31AAA727FA84A7D
197EE89304402DDD078D2C14DA4B020CB517328AA0AD17904735EAE17AB93765
FED09C0F47FD096F887C3EB811ED6AF6DA43579FE9B92854CA7361E1552C280C
BDE21FEE415D1984868A9370FBD6036E6E1EA4C99BB69706E997C7401AE98253
5E96890F3C45CA26F3A5D99E96E3AADA340CD6A7A0A7D0635A066AE3E1E3E589
F7AD5613A4C9BB6FBFAAD41F7D3571C8F1B49C4CDD6CF1D9B4A7D8E5FCCEECCC
2D1675F2444F76D30274177D8F2ED177D3A23E1F81D0BD3B306F813DC7C13D3B
C8A3DAF4E46F814AB21717051E38B57551C76197F75EBF67F5A91B1786941F58
CDC20BD157190C65AEDB7DE9CADF064D431612780104A7BB0AB63DF88D6833D4
E70EA12CD819E9EEE682BB4FF16286BB797B47F92F186C4845DFD970287336A0
53B8EEFE64BBA2B76C0F419ABC87D29DEF816BA2BDA02C9639EBCE016627BB9A
955445AD43BFFC283435B150571D865AF63387A63A8AF307EA92A055FC86C1C6
2CE89A73A16BCAC1E01521B49733A0AD3F89FE0BF1E0DECA78505504A3B73400
3D625F74177841797A1394D96E90867D82A4F566C52CF3A53B0798B573C55B8E
BFAE9DDF94FECD8249068CC4A460CDFC86EDB66FDADCBD01BAC75CC6DB8C850C
0B23B1F0EF0CD3E9BE8E64CC66CC312226943125FCD907C053E52F6A6A3577F3
F307D50000000049454E44AE426082}
ExplicitLeft = 0
ExplicitTop = 23
end
object Panel1: TPanel
Left = 57
Top = 3
Width = 447
Height = 147
Align = alClient
BevelOuter = bvLowered
Padding.Left = 2
Padding.Top = 2
Padding.Right = 2
Padding.Bottom = 2
TabOrder = 0
ExplicitLeft = 11
ExplicitTop = 11
ExplicitWidth = 449
ExplicitHeight = 102
object lbMesaj: TLabel
Left = 3
Top = 3
Width = 423
Height = 106
Align = alClient
Alignment = taCenter
AutoSize = False
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Tahoma'
Font.Style = [fsBold]
ParentFont = False
Layout = tlCenter
WordWrap = True
ExplicitTop = 1
ExplicitWidth = 427
ExplicitHeight = 110
end
object imClose: TImage
Left = 426
Top = 3
Width = 18
Height = 18
Align = alRight
Center = True
Constraints.MaxHeight = 18
Constraints.MaxWidth = 18
Constraints.MinHeight = 17
Constraints.MinWidth = 18
Picture.Data = {
0B546478504E47496D61676589504E470D0A1A0A0000000D4948445200000010
0000001008060000001FF3FF610000001D744558745469746C6500436C6F7365
3B457869743B426172733B526962626F6E3B4603B9E8000002AD49444154785E
85934B4C546714C77FF732320C041DC2237644C368F109868D98A0290BDA60E2
DE9526921856C3C2A08C2E1AA336A64DB48D81A8892D6E241A7CA20B15302618
49DA4D47596818082F0151180698B973DFB7773EB1333BEE97FFCD3927DFF97D
E77B1CE9E3AF17293FF3B30C48426B7D9939765A1290337AE1DC4B8F2CD73B0E
802306C24CEB9BE7ACFA620686650FECFCE55283079025DBAE2F3D5CB79A94B5
8E206692C5CF1606933DAF7F006451BA69986099A8C3C38C3C7846D791D3BCB9
7413351A151AFCADD38D8589DE7F412A3A426A388AC801D92300A689E36A2A12
25129923D8D1C9FC9387FCDDD587244BC4037BDC581B91AB97716C93F2AA6D98
9A004802A0AF28382EF19F3BFD34F4F7515852C4E2AE20FFFED10140CDC9101B
0ABD54B4FFCEAB1F7F62D3F90AB4643203589E9C469F9926B8BF8AF947DD94B5
849072246A5A43E040913F9FBC75394C3DEE2658BB9BD4F07BE2E3B35915A83A
FAA719766CCDE7C3403F43C86C6D6EC65FE8C391C0B660E8FA359203BD546EF7
A34E4C60A49C2C8066602514B4D94F98F12596150DDB721043DC84CC4A3A168F
A14FA75CA085A17D05885B30D280548AE8FB39947D8D048E3661D936DE5C99BC
5C8FB0BF3BD684527B88D1D118B6AAE22E9A5D8186954C105B50680C87503D3E
F2BDEE9E6FFD0940F9F113808FFA700BBD4FEEB2A94842D73D990A74DDC45C49
B2A37A336FDB4E5122AB8C5F6FE7CBBDDB7C763571A39D328FCEBB702BDF6F2F
C352750C4DCFBC0343750189243E3381131BE369DD018A4BD71328CE136730D7
D3CDD3CEBFD8B2A518AF99C04C030CFEDF82EBE802602C2CE22DC8676F750063
3981E2DE0C1694FAFD6C2C29419D8FA12515B06C4C43461080822B6595CF7D92
7410475A3DF9ACA6B0859FDD50C2566C7BF0ECD258A3E846200FF066B5AAB446
2B3B800628FF0122CC6063F45F96130000000049454E44AE426082}
OnClick = imCloseClick
ExplicitLeft = 380
ExplicitTop = 1
ExplicitHeight = 17
end
object pnTercih: TPanel
Left = 3
Top = 109
Width = 441
Height = 35
Align = alBottom
Padding.Left = 8
Padding.Top = 8
Padding.Right = 8
Padding.Bottom = 8
ParentBackground = False
TabOrder = 0
ExplicitLeft = 1
ExplicitTop = 115
ExplicitWidth = 449
object lbSayac: TLabel
Left = 424
Top = 9
Width = 8
Height = 17
Align = alRight
Caption = '0'
Font.Charset = DEFAULT_CHARSET
Font.Color = clHighlight
Font.Height = -13
Font.Name = 'Tahoma'
Font.Style = [fsBold]
ParentFont = False
ExplicitLeft = 428
ExplicitHeight = 16
end
object cxBirDahaGosterMe: TCheckBox
Left = 9
Top = 9
Width = 415
Height = 17
Align = alClient
Caption =
'Bunu bana bir daha g'#246'sterme... ( Ev '#246'devi, bunu da siz yapmaya '#231 +
'al'#305#351#305'n)'
TabOrder = 0
ExplicitWidth = 419
end
end
end
end
object OtomatikKapat: TTimer
Enabled = False
OnTimer = OtomatikKapatTimer
Left = 308
Top = 42
end
end
YouTube Delphi Tips
"Mantıklı adam kendini dünyaya uyarlar; mantıksız adam ise dünyayı kendine uydurmakta inat eder. Bu nedenle, tüm ilerleme o inatçı adama bağlıdır." - George Bernard Shaw
"Mantıklı adam kendini dünyaya uyarlar; mantıksız adam ise dünyayı kendine uydurmakta inat eder. Bu nedenle, tüm ilerleme o inatçı adama bağlıdır." - George Bernard Shaw

