´ñ±Û : 13 °³
Çѱ¹ µ¨ÆÄÀÌ µ¿È£È¸ µ¨¸¶´ç
»çÀÌ»çÀÌ
(¹®È£»ó)
 
µ¨ÆÄÀ̷Π¸¸µç´Ù¸é ¾Æ·¡¿Í °°À̠Ŭ·¡½ºÇÙÀ» ÀÌ¿ëÇؼ­ ¼Õ½±°Ô ¸¸µé¼ö ÀÖÀ»°Í °°½À´Ï´Ù

  TButton = class(Vcl.StdCtrls.TButton)
  public
    procedure Click; override;
  end;

  TForm5 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;





var
  Form5: TForm5;

implementation

{$R *.dfm}

procedure TForm5.Button1Click(Sender: TObject);
begin
  Sleep(1000);

  Memo1.Lines.Add('click');
end;

{ TButtonHelper }

procedure TButton.Click;
begin
  Self.Enabled:= False;
  try
    inherited Click;
  finally
    Self.Enabled:= True;
  end;
end;


 
2020-03-11 ¿ÀÈÄ 10:03:59
»çÀÌ»çÀÌ
(¹®È£»ó)
 
Ŭ·¡½º ÇÙÀ» °ü¸®Çϴ À¯´ÖÀ» µû·Î ¸¸µé¾î¼­ °ø¿ëÀ¸·Î ÀÌ¿ëÇصµ ÁÁ±¸¿© 
2020-03-11 ¿ÀÈÄ 10:09:11
ÁÖÁ¤¼·
(ÁÖÁ¤¼·)
 
»çÀÌ»çÀÌ´Ô. ±× ¹æ¹ýÀ¸·Î Áߺ¹ Å¬¸¯À» ¸·À» ¼ö°¡ ¾ø½À´Ï´Ù. ¹öÆ°À» ¿¬¼Ó Å¬¸¯Çϸé Áߺ¹À¸·Î Å¬¸¯ À̺¥Æ®°¡ ½ÇÇàµË´Ï´Ù.
ù¹ø° Å¬¸¯À¸·Î ¹öÆ°ÀÌ ºñÈ°¼ºÈ­µÈ »óÅ¿¡¼­ ¿¬¼Ó Å¬¸¯ÇØ º¸¼¼¿ä, ¿¬¼ÓÀ¸·Î ½ÇÇàµË´Ï´Ù. Sleep(3000) Á¤µµ·Î º¯°æÇÏ°í Å×½ºÆ®Çغ¸¼¼¿ä. 
2020-03-11 ¿ÀÈÄ 10:50:17
ÁÖÁ¤¼·
(ÁÖÁ¤¼·)
 
ÀÓÆ÷½ºÅ͠Ŭ·¡½º(Ŭ·¡½º ÇÙ) ¹æ½ÄÀº ÄöÅÒ°°Àº ´Ù¸¥ ¼­µå ÆÄƼ ¹öÆ°µé¿¡ ´ëÇؼ­ µ¿ÀÛÇÏÁö ¾Ê´Â ¹®Á¦µµ ÀÖ½À´Ï´Ù. 
2020-03-11 ¿ÀÈÄ 11:00:20
ƽÅå
(ÀÌÀå¿ì)
 
click ¿¡ ³ÖÁö¾Ê°í lbuttondown À̺¥Æ®¿¡ ³ÖÀ¸¸é °£´ÜÇÒ°Å °°Àºµ¥ 

procedure TButton.lbuttondown;
begin
  if enabled = false then exit;
  Self.Enabled:= False;
  inherited;
end;

procedure TButton.Click;
begin
  if enabled = false then exit;
  try
    inherited Click;
  finally
    Self.Enabled:= True;
  end;
end; 
2020-03-11 ¿ÀÈÄ 11:03:37
»çÀÌ»çÀÌ
(¹®È£»ó)
 
¿À, ±×·¸³×¿ä. À̺¥Æ®°¡ Å¥¿¡¼­ ¾ÈºüÁ®³ª°¬³ª º¸³×¿ä.
¾²·¹µå¶óµµ ½á¼­ ½×ÀÎÅ¥¸¦ ºñ¿ö³»¾ß Çϳªº¾´Ï´Ù.



procedure TButton.Click;
begin
  Self.Enabled:= False;
  try
    inherited Click;
  finally
    TThread.CreateAnonymousThread(procedure
    begin
      Sleep(100);
      TThread.Queue(nil, procedure
      begin
        Self.Enabled:= True;
      end);
    end).Start;
  end;
end;

 
2020-03-11 ¿ÀÈÄ 11:05:09
»çÀÌ»çÀÌ
(¹®È£»ó)
 
ÁÖÁ¤¼·´Ô, ÀÓÆ÷½ºÅ͠Ŭ·¡½º´Â ¼­µåÆÄƼ¹öÆ°µé¿¡°Õ »ç¿ëÇÏÁö ¸øÇѴٴ ¸»¾¸Àº
ºÒ°¡Çϴٴ ¸»¾¸À̽Ű¡¿ä? ¾Æ´Ô Å¬·¡½º Á¾·ùº°·Î ÀÛ¾÷À» ÇؾßÇѴٴ ¸»¾¸À̽Ű¡¿ä?
ÈÄÀÚ¶ó°í »ý°¢µÇ´Âµ¥ ÈÄÀÚ°¡ ¸Â´Ù¸é Ãʹݿ¡ °øµé¿©¼­ ÀÓÆ÷½ºÅ͠Ŭ·¡½º¸¦ ¸¸µé¾î¼­ »ç¿ëÇϴ°ԠÃæºÐÈ÷ °øµéÀϸ¸ÇÑ °¡Ä¡°¡ À־ÀÔ´Ï´Ù. 
2020-03-12 ¿ÀÀü 12:34:50
ÁÖÁ¤¼·
(ÁÖÁ¤¼·)
 
ÀÓÆ÷½ºÅ͠Ŭ·¡½º¸¦ »ç¿ëÇÏ·Á¸é ¹öÆ° Å¬·¡½º Á¾·ùº°·Î ÀÛ¾÷À» ÇؾßÇѴٴ ¸»ÀÔ´Ï´Ù.
±×¸®°í À§ ¹æ¹ýÀº ºÒÇེ·´°Ôµµ µ¨ÆÄÀÌ 7¿¡¼­´Â »ç¿ëÇÒ ¼ö ¾ø´Â ¹æ¹ýÀÎÁö¶ó, ³» Ã¥¿¡¼­ ¼³¸íÇѰ͠󷳠ŸÀ̸Ӹ¦ »ç¿ëÇϴ °ÍÀÌ ´õ ÁÁ½À´Ï´Ù. 
2020-03-12 ¿ÀÀü 12:39:37
ÁÖÁ¤¼·
(ÁÖÁ¤¼·)
 
±×¸®°í TThread.CreateAnonymousThread()¾ÈÀÇ Sleep(100) ¿¡¼­ 100À̶õ ¼ýÀÚ°¡ Á» ¾Ö¸ÅÇѵ¥, ¸Å¿ì ºü¸¥ CPU¶ó¸é ¶È°°Àº ¹®Á¦°¡ ÀÖÀ»¼öµµ ÀÖÁö ¾ÊÀ»±î ¸ð¸£°Ú³×¿ä. 
±×·±µ¥ ¹öÆ°¸»°íµµ ¸Þ´º³ª ´Ù¸¥ ÄÜÆ®·ÑÀÇ À̺¥Æ®¿¡¼­µµ ºñ½ÁÇÑ ¹®Á¦°¡ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù. 
 
2020-03-12 ¿ÀÀü 1:00:03
´Ê¹Ù¶÷
(È«½ÂÀÏ)
 
Àú´Â Á» ¹«½ÄÇÑ ¹æ¹ýÀÏÁö ¸ð¸£Áö¸¸ ¾Æ·¡¿Í °°ÀÌ »ç¿ëÇÏ°í ÀÖ½À´Ï´Ù.

procedure TButton.Click;
var
  iClick : cardinal;
begin
  iClick := GetTickCount;
  if fLastClick + 1000 > iClick then 
    Exit;
  fLastClick := iClick;
  inherited Click;
end; 

Form Unit¿¡¼­ ¹öÆ° Å¬¸¯ À̺¥Æ®¿¡ Á÷Á¢ À§ÀÇ Äڵ带 »ç¿ëÇϱ⵵ ÇÏ°í¿ä. 
2020-03-15 ¿ÀÈÄ 3:08:30
ÀÚ¸ùÀÙ
(Ãʺ¸°³¹ßÀÚ)
 
Ȥ½Ã³ª Çؼ­ ÆÄÀ̾î¸ùÅ° ÇÁ·¹ÀÓ¿÷¿¡¼­µµ µ¿ÀÏÇÑ À̽´°¡ ÀÖ³ª Å×½ºÆ® Çغ¸´Ï ¹®Á¦¾øÀÌ Çѹø¸¸ ½ÇÇàµÇ³×¿ä 
2020-03-16 ¿ÀÀü 9:30:37
ÀÚ¸ùÀÙ
(Ãʺ¸°³¹ßÀÚ)
 
ÀÌ·± ¹æ¹ýµµ ÀÖÀ»°Å °°½À´Ï´Ù.
procedure TForm1.Button1Click(Sender: TObject);
begin
  Button1.Enabled := False;
  Memo1.Lines.Add('Click Event');
  Sleep(2000);
  Application.ProcessMessages;
  Button1.Enabled := True;
end;
 
2020-03-16 ¿ÀÀü 10:52:06
ÇÒ¦ÀÌ
(±è¹Î¼ö)
 
ÀÚ¸ùÀÙ´Ô Äڵ带 ¾à°£ ¼öÁ¤Çϸé ButtonÀ̶ó±âº¸´Ü 
ÇØ´ç ÄÞÆ÷³ÍÆ®°¡ TObject·Î ¿À´Ï±ñ Sender ·Î Ã³¸®ÇϼŵµµË´Ï´Ù. 

procedure TForm1.Button1Click(Sender: TObject);
begin
  Sender.Enabled := False; // ¾ÈµÇ¸é (Sender as Button).Enabel := False;

  try 
   // TODO: somthing
  finally
   Sender.Enabled := True;
end; 
2020-03-23 ¿ÀÈÄ 1:15:32