Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const
- SearchDelayTimer = 1;
- type
- TSearchEdit = class(TEdit)
- private
- FSearching: Boolean;
- FSearchDelay: DWORD;
- FOnSearchStart: TNotifyEvent;
- FOnSearchBreak: TNotifyEvent;
- procedure WMTimer(var AMessage: TWMTimer); message WM_TIMER;
- protected
- procedure Change; override;
- procedure DoSearchStart; virtual;
- procedure DoSearchBreak; virtual;
- public
- constructor Create(AOwner: TComponent); override;
- published
- property SearchDelay: Cardinal read FSearchDelay write FSearchDelay default 1000;
- property OnSearchStart: TNotifyEvent read FOnSearchStart write FOnSearchStart;
- property OnSearchBreak: TNotifyEvent read FOnSearchBreak write FOnSearchBreak;
- end;
- implementation
- { TSearchEdit }
- constructor TSearchEdit.Create(AOwner: TComponent);
- begin
- inherited;
- FSearching := False;
- FSearchDelay := 1000;
- end;
- procedure TSearchEdit.WMTimer(var AMessage: TWMTimer);
- begin
- if AMessage.TimerID = SearchDelayTimer then
- begin
- KillTimer(Handle, SearchDelayTimer);
- DoSearchStart;
- end;
- end;
- procedure TSearchEdit.Change;
- begin
- inherited;
- DoSearchBreak;
- SetTimer(Handle, SearchDelayTimer, FSearchDelay, nil);
- end;
- procedure TSearchEdit.DoSearchStart;
- begin
- if not FSearching then
- begin
- FSearching := True;
- if Assigned(FOnSearchStart) then
- FOnSearchStart(Self);
- end;
- end;
- procedure TSearchEdit.DoSearchBreak;
- begin
- if FSearching then
- begin
- FSearching := False;
- if Assigned(FOnSearchBreak) then
- FOnSearchBreak(Self);
- end;
- end;
Advertisement
Add Comment
Please, Sign In to add comment