cxdblookupcombobox.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 654 行 · 第 1/2 页
PAS
654 行
end
end
else
inherited Assign(Source);
end;
class function TcxLookupComboBoxProperties.GetContainerClass: TcxContainerClass;
begin
Result := TcxLookupComboBox;
end;
function TcxLookupComboBoxProperties.GetLookupGridClass: TcxCustomLookupDBGridClass;
begin
Result := TcxCustomLookupDBGrid;
end;
procedure TcxLookupComboBoxProperties.ListOptionsChanged(Sender: TObject);
begin
Changed;
end;
// LookupGrid
function TcxLookupComboBoxProperties.GetLookupGridColumnCount: Integer;
begin
Result := ListColumns.Count;
end;
function TcxLookupComboBoxProperties.GetLookupGridControl: TWinControl;
begin
Result := Grid;
end;
function TcxLookupComboBoxProperties.GetLookupGridDataController: TcxCustomDataController;
begin
Result := Grid.DataController;
end;
function TcxLookupComboBoxProperties.GetLookupGridVisualAreaPreferredWidth: Integer;
var
I: Integer;
begin
Result := 0;
for I := 0 to ListColumns.Count - 1 do
Inc(Result, ListColumns[I].Width);
end;
function TcxLookupComboBoxProperties.GetLookupGridNearestPopupHeight(
AHeight: Integer): Integer;
begin
Result := Grid.GetNearestPopupHeight(AHeight);
end;
function TcxLookupComboBoxProperties.GetLookupGridPopupHeight(ADropDownRowCount: Integer): Integer;
begin
Result := Grid.GetPopupHeight(ADropDownRowCount);
end;
function TcxLookupComboBoxProperties.IsLookupGridMouseOverList(const P: TPoint): Boolean;
begin
Result := Grid.IsMouseOverList(P);
end;
procedure TcxLookupComboBoxProperties.LookupGridInitEvents(AOnClick, AOnFocusedRowChanged: TNotifyEvent;
AOnCloseUp: cxLookupEdit.TcxLookupGridCloseUpEvent);
begin
Grid.OnClick := AOnClick;
Grid.OnFocusedRowChanged := AOnFocusedRowChanged;
Grid.OnCloseUp := AOnCloseUp;
end;
procedure TcxLookupComboBoxProperties.LookupGridInitLookAndFeel(ALookAndFeel: TcxLookAndFeel;
AColor: TColor; AFont: TFont);
begin
Grid.LookAndFeel.MasterLookAndFeel := ALookAndFeel;
Grid.Color := AColor;
Grid.Font := AFont;
end;
procedure TcxLookupComboBoxProperties.LookupGridLockMouseMove;
begin
Grid.LockPopupMouseMove;
end;
procedure TcxLookupComboBoxProperties.LookupGridMakeFocusedRowVisible;
begin
Grid.MakeFocusedRowVisible;
end;
procedure TcxLookupComboBoxProperties.LookupGridUnlockMouseMove;
begin
TControlAccess(Grid).MouseCapture := False;
end;
// DBLookupGrid
procedure TcxLookupComboBoxProperties.DBLookupGridBeginUpdate;
begin
Grid.BeginUpdate;
end;
procedure TcxLookupComboBoxProperties.DBLookupGridCheckColumnByFieldName(const AFieldName: string);
begin
if (AFieldName <> '') and (ListColumns.ColumnByFieldName(AFieldName) = nil) then
with ListColumns.Add do
begin
FieldName := AFieldName;
Index := 0;
end;
end;
procedure TcxLookupComboBoxProperties.DBLookupGridCreateColumnsByFieldNames(const AFieldNames: string);
begin
Grid.CreateColumnsByFieldNames(AFieldNames);
end;
procedure TcxLookupComboBoxProperties.DBLookupGridEndUpdate;
begin
Grid.EndUpdate;
end;
function TcxLookupComboBoxProperties.GetDBLookupGridColumnField(AIndex: Integer): TField;
begin
Result := ListColumns[AIndex].Field;
end;
function TcxLookupComboBoxProperties.GetDBLookupGridColumnFieldName(AIndex: Integer): string;
begin
Result := ListColumns[AIndex].FieldName;
end;
function TcxLookupComboBoxProperties.GetDBLookupGridColumnIndexByFieldName(const AFieldName: string): Integer;
var
AColumn: TcxLookupDBGridColumn;
begin
AColumn := ListColumns.ColumnByFieldName(AFieldName);
if AColumn <> nil then
Result := AColumn.Index
else
Result := -1;
end;
function TcxLookupComboBoxProperties.GetDBLookupGridDataController: TcxDBDataController;
begin
if Grid <> nil then
Result := Grid.DataController
else
Result := nil;
end;
function TcxLookupComboBoxProperties.GetGrid: TcxCustomLookupDBGrid;
begin
Result := FGrid;
end;
function TcxLookupComboBoxProperties.GetGridMode: Boolean;
begin
Result := inherited IsUseLookupList;
end;
function TcxLookupComboBoxProperties.GetListColumns: TcxLookupDBGridColumns;
begin
Result := Grid.Columns;
end;
function TcxLookupComboBoxProperties.GetListOptions: TcxLookupDBGridOptions;
begin
Result := Grid.Options;
end;
function TcxLookupComboBoxProperties.GetListSource: TDataSource;
begin
if IsDefinedByLookup then
Result := nil
else
Result := Grid.DataSource;
end;
function TcxLookupComboBoxProperties.GetOnSortingChanged: TNotifyEvent;
begin
Result := Grid.DataController.OnSortingChanged;
end;
procedure TcxLookupComboBoxProperties.SetGridMode(Value: Boolean);
begin
inherited IsUseLookupList := Value;
end;
procedure TcxLookupComboBoxProperties.SetListColumns(Value: TcxLookupDBGridColumns);
begin
Grid.Columns := Value; // TODO: recreate?
CheckLookupColumn;
CheckDisplayColumnIndex;
end;
procedure TcxLookupComboBoxProperties.SetListOptions(Value: TcxLookupDBGridOptions);
begin
Grid.Options := Value;
end;
procedure TcxLookupComboBoxProperties.SetListSource(Value: TDataSource);
procedure CheckListSource(ADataSource: TDataSource);
var
AField: TField;
begin
AField := GetDataField;
if Assigned(AField) and Assigned(ADataSource) and
// AField.DataSet.IsLinkedTo(ADataSource) then
IsLinkedToDataSet(ADataSource, AField.DataSet) then
DatabaseError(SCircularDataLink);
end;
begin
if IsDefinedByLookup and not InSyncLookup then
DefineByLookupError;
if Value <> nil then
CheckListSource(Value);
Grid.DataSource := Value;
Changed;
end;
procedure TcxLookupComboBoxProperties.SetOnSortingChanged(Value: TNotifyEvent);
begin
Grid.DataController.OnSortingChanged := Value;
end;
{ TcxCustomLookupComboBox }
class function TcxCustomLookupComboBox.GetPropertiesClass: TcxCustomEditPropertiesClass;
begin
Result := TcxLookupComboBoxProperties;
end;
function TcxCustomLookupComboBox.GetProperties: TcxLookupComboBoxProperties;
begin
Result := TcxLookupComboBoxProperties(FProperties);
end;
function TcxCustomLookupComboBox.GetActiveProperties: TcxLookupComboBoxProperties;
begin
Result := TcxLookupComboBoxProperties(InternalGetActiveProperties);
end;
procedure TcxCustomLookupComboBox.SetProperties(Value: TcxLookupComboBoxProperties);
begin
FProperties.Assign(Value);
end;
{ TcxDBLookupComboBox }
class function TcxDBLookupComboBox.GetDataBindingClass: TcxEditDataBindingClass;
begin
Result := TcxDBLookupEditDataBinding;
end;
function TcxDBLookupComboBox.GetDataBinding: TcxDBTextEditDataBinding;
begin
Result := TcxDBTextEditDataBinding(FDataBinding);
end;
procedure TcxDBLookupComboBox.SetDataBinding(Value: TcxDBTextEditDataBinding);
begin
FDataBinding.Assign(Value);
end;
procedure TcxDBLookupComboBox.CMGetDataLink(var Message: TMessage);
begin
Message.Result := Integer(GetcxDBEditDataLink(Self));
end;
{ TcxFilterLookupComboBoxHelper }
class function TcxFilterLookupComboBoxHelper.GetFilterEditClass: TcxCustomEditClass;
begin
Result := TcxLookupComboBox;
end;
class procedure TcxFilterLookupComboBoxHelper.GetFilterValue(AEdit: TcxCustomEdit;
AEditProperties: TcxCustomEditProperties; var V: Variant; var S: TCaption);
begin
V := AEdit.EditValue;
S := TcxCustomTextEdit(AEdit).ILookupData.GetDisplayText(V);
end;
class function TcxFilterLookupComboBoxHelper.GetSupportedFilterOperators(
AProperties: TcxCustomEditProperties;
AValueTypeClass: TcxValueTypeClass;
AExtendedSet: Boolean = False): TcxFilterControlOperators;
begin
Result := [fcoEqual, fcoNotEqual, fcoBlanks, fcoNonBlanks];
end;
class procedure TcxFilterLookupComboBoxHelper.InitializeProperties(AProperties,
AEditProperties: TcxCustomEditProperties; AHasButtons: Boolean);
begin
inherited InitializeProperties(AProperties, AEditProperties, AHasButtons);
with TcxCustomLookupEditProperties(AProperties) do
begin
DropDownAutoSize := True;
DropDownListStyle := lsFixedList;
DropDownSizeable := True;
IncrementalFiltering := True;
end;
end;
class function TcxFilterLookupComboBoxHelper.IsValueValid(AValueTypeClass: TcxValueTypeClass;
var Value: Variant): Boolean;
begin
Result := True;
end;
class function TcxFilterLookupComboBoxHelper.IsIDefaultValuesProviderNeeded(
AEditProperties: TcxCustomEditProperties): Boolean;
begin
Result := TcxCustomDBLookupEditProperties(AEditProperties).IsDefinedByLookup;
end;
initialization
GetRegisteredEditProperties.Register(TcxLookupComboBoxProperties, scxSEditRepositoryLookupComboBoxItem);
FilterEditsController.Register(TcxLookupComboBoxProperties, TcxFilterLookupComboBoxHelper);
finalization
FilterEditsController.Unregister(TcxLookupComboBoxProperties, TcxFilterLookupComboBoxHelper);
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?