TCRDBGrid是随源代码一起分发的。您可以修改源代码:
声明事件类型:
TOnTextChanged = procedure (Sender: TObject; Text: string) of object;
添加在TCRGridTitleEdit类的事件声明:
private
FOnFilterChanged: TOnTextChanged;
FOnSearchChanged: TOnTextChanged;
public
property OnFilterChanged: TOnTextChanged read FOnFilterChanged write FOnFilterChanged;
property OnSearchChanged: TOnTextChanged read FOnSearchChanged write FOnSearchChanged;
调用此事件的ProcessEdit过程中:
procedure TCRGridTitleEdit.ProcessEdit;
begin
if (FActiveColumn = nil) or (CRDBGrid = nil) or not FEdit.Modified then
Exit;
if FAsFilter then
with CRDBGrid do begin
try
TCRColumn(FActiveColumn).GetFilterExpression(FEdit.Text);
FFilterExpressions[FActiveColumn.Index] := FEdit.Text;
Self.Caption := FFilterExpressions[FActiveColumn.Index];
if Assigned(FOnFilterChanged) then
FOnFilterChanged(self, FEdit.Text);
except
on EConvertError do begin
FEdit.SelectAll;
raise;
end;
end;
end
else
try
with FActiveColumn.Field do
DataSet.Locate(FieldName, {$IFDEF CLR}Variant{$ENDIF}(FEdit.Text), [loCaseInsensitive,loPartialKey]);
if Assigned(FOnSearchChanged) then
FOnSearchChanged(self, FEdit.Text);
except
on EConvertError do
Exit;
end;
end;
并在TCRDBGrid类中添加事件声明:
private
function GetOnFilterChanged: TOnTextChanged;
procedure SetOnFilterChanged(Value: TOnTextChanged);
function GetOnSearchChanged: TOnTextChanged;
procedure SetOnSearchChanged(Value: TOnTextChanged);
published
property OnFilterChanged: TOnTextChanged read GetOnFilterChanged write SetOnFilterChanged;
property OnSearchChanged: TOnTextChanged read GetOnSearchChanged write SetOnSearchChanged;
实施
function TCRDBGrid.GetOnFilterChanged: TOnTextChanged;
begin
Result := CRGridTitleEdit.OnFilterChanged;
end;
procedure TCRDBGrid.SetOnFilterChanged(Value: TOnTextChanged);
begin
CRGridTitleEdit.OnFilterChanged := Value;
end;
function TCRDBGrid.GetOnSearchChanged: TOnTextChanged;
begin
Result := CRGridTitleEdit.OnSearchChanged;
end;
procedure TCRDBGrid.SetOnSearchChanged(Value: TOnTextChanged);
begin
CRGridTitleEdit.OnSearchChanged := Value;
end;
感谢您,包括您的回复代码,非常感谢:) – WileCau 2010-10-25 09:17:59