±ÍÇÏ´Â ¼Õ´Ô À̽ʴϴÙ
·Î±×ÀÎ
ȸ¿ø°¡ÀÔ
  
  µ¨¸¶´ç °ø½Ä ÀºÇà°èÁÂ
  ÇϳªÀºÇà 227-910235-83607
  ¿¹±ÝÁÖ ÀÌ»ó±¹(¿î¿µÁø)
ÇÁ·ÎÁ§Æ® °Ô½ÃÆÇ
ÅõÇ¥°Ô½ÃÆÇ
µ¨¸¶´ç¼Ò°³
±âÃʺÎÅÍ È°¿ë±îÁö! µ¨ÆÄÀÌ ±³À° - µ¥ºê±â¾î
°­ÁÂ, ÆÁ, Á¤º¸ °­ÁÂ, ÆÁ, Á¤º¸ ÀÔ´Ï´Ù.
±Û³»¿ë - °­ÁÂ, ÆÁ, Á¤º¸
 ÀÚ¹ÙÀÇ Toast¸¦ ÆÄÀ̾î¸ÛÅ°·Î ¸¸µé¾î ºÃ½À´Ï´Ù..
±è½ÃÁØ
(±è½ÃÁØ)
2016-07-26 ¿ÀÈÄ 3:58:50
Ä«Å×°í¸®: ÆÁ
2788ȸ Á¶È¸



÷ºÎÆÄÀÏ ´Ù¿î·Îµå
Bread.zip
ÀÚ¹ÙÀÇ Toast¸¦ ÆÄÀ̾î¸ÛÅ°·Î ¸¸µé¾î ºÃ½À´Ï´Ù...
ÀÚ¹ÙÀÇ Toast¿¡ ºø´ë¾î Bread¶ó°í Çߴµ¥ ¾²½Ç ºÐµéÀº ¸¶À½´ë·Î NamingÇؼ­ ¾²½Ã±â ¹Ù¶ø´Ï´Ù....
±×¸®°í À̸¦ ÀÌ¿ëÇØ µÚ·Î ¹öÆ°À» µÎ ¹ø ´­·¯ ¾ÛÀ» Á¾·áÇϴ ¹æ¹ýÀÔ´Ï´Ù...
(ÃÊ ´ÜÀ§°¡ ¾Æ´Ñ Millisecond ´ÜÀ§·Î Àû¿ë.)

// »ç¿ë ¹æ¹ýÀÔ´Ï´Ù..

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.VirtualKeyboard, FMX.Platform,
  System.DateUtils, FMX.Controls.Presentation, FMX.StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    procedure FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;  Shift: TShiftState);
    procedure FormCreate(Sender: TObject);
  private
     // µÚ·Î ¹öÆ°ÀÌ ´­·Á Á³´ÂÁö¸¦ Ã¼Å©...
      HardwareBackClickCheckFlag: Boolean;
     // ¹öÆ°ÀÌ ´­·Á Á³À» ¶§ÀÇ ½Ã°£
      BackFirstClick: TDateTime;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses uBread;

{$R *.fmx}

// »§ Å¬·¡½º¸¦ ¾²±â ÆíÇÏ°Ô...
procedure Bread(AOwner: TComponent; msg: string);
begin
    TBread.Create(AOwner, msg);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
    // ¹Ýµå½Ã ÃʱâÈ­... ±×·¸Áö ¾ÊÀ¸¸é ÇÑ ¹ø¸¸ ´­·¯µµ Á¾·áµÇ´Â Çö»óÀÌ °¡²û¾¿ ³ªÅ¸³²..
    HardwareBackClickCheckFlag := False;
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
   // Áö¿ª procedure
    procedure HardwareBackClickCheck;
    var
        BackSecondClick: TDateTime;
        BackClickTimeSpan: Int64;
    begin
        if not HardwareBackClickCheckFlag then
        begin
            BackFirstClick := Now;
            Bread(Self, '''µÚ·Î'' ¹öÆ°À» ÇÑ ¹ø ´õ ´©¸£¸é Á¾·áÇÕ´Ï´Ù.');
            HardwareBackClickCheckFlag := True;
            Exit;
        end;

        if HardwareBackClickCheckFlag then
        begin
            BackSecondClick := Now;
            BackClickTimeSpan := MillisecondsBetween(BackFirstClick, BackSecondClick);
            // 1500 millisecond Áï, 1.5ÃÊ ¾È¿¡ ¶Ç ÇÑ ¹ø ´©¸£¸é Á¾·á...
            if BackClickTimeSpan <= 1500 then  
                Close;
            BackFirstClick := Now;
            Bread(Self, '''µÚ·Î'' ¹öÆ°À» ÇÑ ¹ø ´õ ´©¸£¸é Á¾·áÇÕ´Ï´Ù.');
        end;
    end;
var
    Keyboard: IFMXVirtualKeyboardService;
begin
    if Key = vkHardwareBack then
    begin
        Key := 0;
        HardwareBackClickCheck;
    end;
end;


// »§  Å¬·¡½ºÀÔ´Ï´Ù...  (ÆÄÀϠ÷ºÎ)
// ÇÊ¿äÇϸé ÀÔ ¸À¿¡ ¸Â°Ô ¼öÁ¤ÇØ »ç¿ëÇϽñæ....
unit uBread;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, FMX.Graphics,
  FMX.Types, FMX.Forms, FMX.Objects;

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

var
  FInterval: Integer = 1500;  // ¸Þ½ÃÁö°¡ ¶° Àִ ½Ã°£

implementation

{ TBread }

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

    // Round Rectangle draw
    Parent := AOwner as TFmxObject;
    Align := TAlignLayout.Center;
    Fill.Color := TAlphaColorRec.Firebrick; 
    Stroke.Color := TAlphaColorRec.Null;
    Stroke.Cap := TStrokeCap.Round;
    Height := (AOwner as TForm).Canvas.TextHeight(msg) + 20;  //  20Àº ¿©À¯ºÐ
    // ¹®ÀÚ¿­ ±æÀÌ¿¡ ¸Â°Ô ÀÚµ¿ Á¶Àý..
    Width := (AOwner as TForm).Canvas.TextWidth(msg) + 30;    // 30Àº ¿©À¯ºÐ

    // Text display
    FText := TText.Create(Self);
    FText.Parent := Self;
    FText.Align := TAlignLayout.Contents;
    FText.TextSettings.Font.Family := '¸¼Àº °íµñ';
    FText.TextSettings.Font.Style := FText.TextSettings.Font.Style + [TFontStyle.fsBold];
    FText.TextSettings.FontColor := TAlphaColorRec.White;
    FText.TextSettings.HorzAlign := TTextAlign.Center;
    FText.TextSettings.VertAlign := TTextAlign.Center;
    FText.TextSettings.WordWrap := False;
    FText.AutoSize := True;
    FText.Text := msg;

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

destructor TBread.Destroy;
begin

  inherited;
end;

procedure TBread.Free;
begin
    FText.DisposeOf;
    FTimer.DisposeOf;
    Self.DisposeOf;
end;

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

end.

³¡...

blog.naver.com/seejune66