经分析修改以下两个文件即可达到目标
cxCustomData.pas
修改一
TcxCustomDataController = class(TPersistent, IUnknown) private FDisplayIndex: Integer; --添加一个属性 FActive: Boolean; FAfterSummaryFlag: Boolean; FBookmarkRecordIndex: Integer; ... public property DisplayIndex: Integer read FDisplayIndex write FDisplayIndex; --把属性公布出来
修改二
function TcxCustomDataController.DoIncrementalFilterRecord (ARecordIndex: Integer): Boolean; var S: string; I: Integer; begin Result := False; for I := 0 to Fields.ItemCount - 1 do begin S := GetInternalDisplayText(ARecordIndex, Fields[I]); Result := DataCompareText(S, FIncrementalFilterText, True); if Result then begin FDisplayIndex := I; Exit; end; end; // 注释掉原来的代码 // S := GetInternalDisplayText(ARecordIndex, FIncrementalFilterField); // Result := DataCompareText(S, FIncrementalFilterText, True); end;
cxLookupEdit.pas
修改一
function TcxCustomLookupEditLookupData.Locate(var AText, ATail: string;
ANext: Boolean): Boolean;
function SetGridFilter(AItemIndex: Integer; const AText: string): Integer;
...
var
AItemIndex, ARecordIndex: Integer;
S: string;
begin
Result := False;
DisableChanging;
try
AItemIndex := GetListIndex;
if (AItemIndex <> -1) and (DataController <> nil) then
begin
// TODO: Next
if FVisible and
Properties.GetIncrementalFiltering
{ and (Properties.DropDownListStyle <> lsFixedList) }
then
ARecordIndex := SetGridFilter(AItemIndex, AText)
else
ARecordIndex := Properties.FindByText(AItemIndex, AText, True);
if ARecordIndex <> -1 then
begin
DataController.ChangeFocusedRecordIndex(ARecordIndex);
DoSetCurrentKey(ARecordIndex);
Result := True;
// 此处为添加代码
if DataController.DisplayIndex > -1 then
begin
S := DataController.DisplayTexts[ARecordIndex,
DataController.DisplayIndex];
DataController.DisplayIndex := -1;
end
else
begin
S := DataController.DisplayTexts[ARecordIndex, AItemIndex];
end;
// 结束
AText := Copy(S, 1, Length(AText));
ATail := Copy(S, Length(AText) + 1, Length(S));
DoSetKeySelection(True);
end
else
DoSetKeySelection(False);
end;
finally
EnableChanging;
end;
end;
经过以上修改重新编译就可以了。
能实现输入条件,自动下拉码?而且还是模糊查询