본문 바로가기

언어/delphi

자바의 Toast VCL용입니다

출처: http://www.delmadang.com/community/bbs_view.asp?bbsNo=3&bbsCat=0&indx=450880&page=2

자바의 Toast VCL용입니다...

메시지가 떴다가 1500 millisecond가 지난 후 메시지가 사라집니다...


아래 파이어멍키용하고 거의 비슷하나 메모리 해제 방법이 다릅니다..


델파이 입문자들이나 만들기 귀찮은 분들은 갖다 쓰시기 바랍니다..

 
사용예제)

uses uBread;

procedure Bread(AOwner: TComponent; msg: string);
begin
    TBread.Create(AOwner, msg);
end;

procedure Form1.Button1Click(Sender: TObject);
begin
    Bread(Self, '저장되었습니다...');
end;




// 클래스...
unit uBread;

interface

uses Vcl.ExtCtrls, Vcl.Controls, Vcl.Graphics, System.SysUtils, System.Classes, Vcl.Forms;

type
  TBread = class(TPanel)
  private
    FTimer: TTimer;
    procedure Free;
    procedure OnBreadTimer(Sender: TObject);
  public
    constructor Create(AOwner: TComponent; msg: string); reintroduce;
    destructor Destroy; override;
  end;

var
  FInterval: Integer = 1500;   // 메시지가 떠 있는 시간...

implementation

{ TBread }

constructor TBread.Create(AOwner: TComponent; msg: string);
begin
    inherited Create(AOwner);

    Parent := AOwner as TForm;
    ParentBackground := False;   // if True not change color
    DoubleBuffered := True;
    Color := clHighlight;
    Font.Name := '맑은 고딕';
    Font.Style := [fsBold];
    Font.Size := 10;
    Font.Color := clWhite;
    Caption := msg;
    Width := Canvas.TextWidth(msg) + 80;    // * 2;
    Height := Canvas.TextHeight(msg) + 20;  // * 2;
    Left := ((AOwner as TForm).Width div 2) - (Width div 2);
    Top  := ((AOwner as TForm).Height div 2) - (Height div 2);

    FTimer := TTimer.Create(Self);
    FTimer.Interval := FInterval;
    FTimer.Enabled := True;
    FTimer.OnTimer := OnBreadTimer;
end;

destructor TBread.Destroy;
begin

    inherited;
end;

procedure TBread.Free;
begin
    FreeAndNil(FTimer);
    Destroy; 
end;

procedure TBread.OnBreadTimer(Sender: TObject);
begin
    FTimer.Enabled := False;
    Free;
end;

end.