TLama

Untitled

Nov 28th, 2013
653
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.57 KB | None | 0 0
  1. const
  2.   SearchDelayTimer = 1;
  3.  
  4. type
  5.   TSearchEdit = class(TEdit)
  6.   private
  7.     FSearching: Boolean;
  8.     FSearchDelay: DWORD;
  9.     FOnSearchStart: TNotifyEvent;
  10.     FOnSearchBreak: TNotifyEvent;
  11.     procedure WMTimer(var AMessage: TWMTimer); message WM_TIMER;
  12.   protected
  13.     procedure Change; override;
  14.     procedure DoSearchStart; virtual;
  15.     procedure DoSearchBreak; virtual;
  16.   public
  17.     constructor Create(AOwner: TComponent); override;
  18.   published
  19.     property SearchDelay: Cardinal read FSearchDelay write FSearchDelay default 1000;
  20.     property OnSearchStart: TNotifyEvent read FOnSearchStart write FOnSearchStart;
  21.     property OnSearchBreak: TNotifyEvent read FOnSearchBreak write FOnSearchBreak;
  22.   end;
  23.  
  24. implementation
  25.  
  26. { TSearchEdit }
  27.  
  28. constructor TSearchEdit.Create(AOwner: TComponent);
  29. begin
  30.   inherited;
  31.   FSearching := False;
  32.   FSearchDelay := 1000;
  33. end;
  34.  
  35. procedure TSearchEdit.WMTimer(var AMessage: TWMTimer);
  36. begin
  37.   if AMessage.TimerID = SearchDelayTimer then
  38.   begin
  39.     KillTimer(Handle, SearchDelayTimer);
  40.     DoSearchStart;
  41.   end;
  42. end;
  43.  
  44. procedure TSearchEdit.Change;
  45. begin
  46.   inherited;
  47.   DoSearchBreak;
  48.   SetTimer(Handle, SearchDelayTimer, FSearchDelay, nil);
  49. end;
  50.  
  51. procedure TSearchEdit.DoSearchStart;
  52. begin
  53.   if not FSearching then
  54.   begin
  55.     FSearching := True;
  56.     if Assigned(FOnSearchStart) then
  57.       FOnSearchStart(Self);
  58.   end;
  59. end;
  60.  
  61. procedure TSearchEdit.DoSearchBreak;
  62. begin
  63.   if FSearching then
  64.   begin
  65.     FSearching := False;
  66.     if Assigned(FOnSearchBreak) then
  67.       FOnSearchBreak(Self);
  68.   end;
  69. end;
Advertisement
Add Comment
Please, Sign In to add comment