经分析修改以下两个文件即可达到目标
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;
经过以上修改重新编译就可以了。
能实现输入条件,自动下拉码?而且还是模糊查询