출처: 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.
'언어 > delphi' 카테고리의 다른 글
hex 전송 속도 개선? (0) | 2018.05.15 |
---|---|
BinToHexEx (0) | 2018.05.15 |
TBitmap 원본으로부터 크기조정한 비트맵 얻기 (Transparent, Antialiased) (0) | 2018.05.15 |
입력값 검사루틴 - 코드 리팩토링 (0) | 2018.05.15 |
초를 0시간 0분 0초식으로 리턴 (0) | 2018.05.15 |