cxgriddbdatadefinitions.pas

来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 682 行 · 第 1/2 页

PAS
682
字号
  if AName = 'FilterAutoDataSetFilter' then
    Filter.AutoDataSetFilter := StringToBoolean(AValue)
  else
    Result := False;
end;}

function TcxGridDBDataController.SetScrollBarPos(Value: Integer): Boolean;
begin
  Result := SupportsScrollBarParams;
  if Result and (RecNo <> Value + 1) then
  begin
    RecNo := Value + 1;
    if RecNo = Value + 1 then
      SetSelectionAnchor(FocusedRowIndex);
  end;
end;

function TcxGridDBDataController.CanSelectRow(ARowIndex: Integer): Boolean;
begin
  Result := TcxCustomGridTableViewAccess.CanSelectRecord(GridView, ARowIndex);
end;

function TcxGridDBDataController.CompareByField(ARecordIndex1, ARecordIndex2: Integer;
  AField: TcxCustomDataField; AMode: TcxDataControllerComparisonMode): Integer;
begin
  if GridView.ViewData.NeedsCustomDataComparison(AField, AMode) then
    Result := GridView.ViewData.CustomCompareDataValues(AField,
      GetComparedValue(ARecordIndex1, AField), GetComparedValue(ARecordIndex2, AField), AMode)
  else
    Result := inherited CompareByField(ARecordIndex1, ARecordIndex2, AField, AMode);
end;

procedure TcxGridDBDataController.DoDataSetCurrentChanged(AIsCurrent: Boolean);
begin
  inherited;
  TcxCustomGridTableViewAccess.RefreshNavigators(GridView);
end;

procedure TcxGridDBDataController.DoDataSourceChanged;
begin
  TcxComponentAccess(GridView).UpdateFakeLinks;
end;

procedure TcxGridDBDataController.DoValueTypeClassChanged(AItemIndex: Integer);
begin
  inherited;
  TcxCustomGridTableViewAccess.ItemValueTypeClassChanged(GridView, AItemIndex);
end;

procedure TcxGridDBDataController.FilterChanged;
begin
  inherited;
  TcxCustomGridTableViewAccess.FilterChanged(GridView);
end;

function TcxGridDBDataController.GetDefaultActiveRelationIndex: Integer;
begin
  Result := TcxCustomGridTableViewAccess.GetDefaultActiveDetailIndex(GridView);
end;

function TcxGridDBDataController.GetDefaultGridModeBufferCount: Integer;
begin
  Result := TcxCustomGridTableViewInfoAccess.GetDefaultGridModeBufferCount(GridView.ViewInfo);
  if Result = 0 then
    Result := inherited GetDefaultGridModeBufferCount;
end;

function TcxGridDBDataController.GetFilterDisplayText(ARecordIndex, AItemIndex: Integer): string;
begin
  if GridView.ViewData.HasCustomDataHandling(Fields[AItemIndex], doFiltering) then
    Result := GridView.ViewData.GetCustomDataDisplayText(ARecordIndex, AItemIndex, doFiltering)
  else
    Result := inherited GetFilterDisplayText(ARecordIndex, AItemIndex);
end;

{function TcxGridDBDataController.GetIncrementalSearchText(ARecordIndex, AItemIndex: Integer): string;
begin
  if not TcxCustomGridTableViewAccess(GridView).GetDisplayText(ARecordIndex, AItemIndex, Result) then
    Result := inherited GetIncrementalSearchText(ARecordIndex, AItemIndex);
end;}

function TcxGridDBDataController.GetItemID(AItem: TObject): Integer;
begin
  if AItem is TcxCustomGridTableItem then
    Result := TcxCustomGridTableItem(AItem).ID
  else
    Result := -1;
end;

function TcxGridDBDataController.GetSortingBySummaryEngineClass: TcxSortingBySummaryEngineClass;
begin
  Result := GridView.ViewData.GetSortingBySummaryEngineClass;
end;

function TcxGridDBDataController.GetSummaryGroupItemLinkClass: TcxDataSummaryGroupItemLinkClass;
begin
  Result := TcxCustomGridTableViewAccess.GetSummaryGroupItemLinkClass(GridView);
  if Result = nil then
    Result := inherited GetSummaryGroupItemLinkClass;
end;

function TcxGridDBDataController.GetSummaryItemClass: TcxDataSummaryItemClass;
begin
  Result := TcxCustomGridTableViewAccess.GetSummaryItemClass(GridView);
  if Result = nil then
    Result := inherited GetSummaryItemClass;
end;

function TcxGridDBDataController.SupportsScrollBarParams: Boolean;
begin
  Result := IsGridMode and IsSequenced and
    TcxCustomGridTableViewAccess.IsEqualHeightRecords(GridView);
end;

function TcxGridDBDataController.SyncDetailsFocusWithMaster: Boolean;
begin
  Result := GridView.IsSynchronization;
end;

procedure TcxGridDBDataController.UpdateScrollBars;
begin
  inherited;
  Controller.UpdateScrollBars;
end;

procedure TcxGridDBDataController.BeginFullUpdate;
begin
  GridView.BeginUpdate;
  inherited;
end;

procedure TcxGridDBDataController.EndFullUpdate;
begin
  inherited;
  GridView.EndUpdate;
end;

function TcxGridDBDataController.CreateDetailLinkObject(ARelation: TcxCustomDataRelation;
  ARecordIndex: Integer): TObject;
begin
  Result := TcxGridLevelAccess.CreateLinkObject(TcxGridLevel(ARelation.Item), ARelation, ARecordIndex);
end;

procedure TcxGridDBDataController.FocusControl(AItemIndex: Integer; var Done: Boolean);
begin
  inherited;
  TcxCustomGridTableViewAccess.FocusEdit(GridView, AItemIndex, Done);
end;

function TcxGridDBDataController.GetDetailDataControllerByLinkObject(ALinkObject: TObject): TcxCustomDataController;
begin
  Result := TcxCustomGridView(ALinkObject).DataController;
end;

function TcxGridDBDataController.GetDisplayText(ARecordIndex, AItemIndex: Integer): string;
begin
  if not GridView.ViewData.GetDisplayText(ARecordIndex, AItemIndex, Result) then
    Result := inherited GetDisplayText(ARecordIndex, AItemIndex);
  TcxCustomGridTableItemAccess.DoGetDataText(GridView.Items[AItemIndex], ARecordIndex, Result);
end;

function TcxGridDBDataController.GetFilterDataValue(ARecordIndex: Integer; AField: TcxCustomDataField): Variant;
begin
  Result := inherited GetFilterDataValue(ARecordIndex, AField);
  if GridView.ViewData.HasCustomDataHandling(AField, doFiltering) then
    Result := GridView.ViewData.GetCustomDataValue(AField, Result, doFiltering);
end;

function TcxGridDBDataController.GetFilterItemFieldCaption(AItem: TObject): string;
begin
  Result := TcxCustomGridTableItemAccess.GetFilterCaption(TcxCustomGridTableItem(AItem));
end;

function TcxGridDBDataController.GetItem(Index: Integer): TObject;
begin
  Result := GridView.Items[Index];
end;

function TcxGridDBDataController.GetItemSortByDisplayText(AItemIndex: Integer;
  ASortByDisplayText: Boolean): Boolean;
begin
  Result := TcxCustomGridTableViewAccess.GetItemSortByDisplayText(GridView,
    AItemIndex, ASortByDisplayText);
end;

function TcxGridDBDataController.GetItemValueSource(AItemIndex: Integer): TcxDataEditValueSource;
begin
  Result := TcxCustomGridTableViewAccess.GetItemValueSource(GridView, AItemIndex);
end;

procedure TcxGridDBDataController.UpdateData;
begin
  inherited;
  TcxCustomGridTableViewAccess.UpdateRecord(GridView);
end;

procedure TcxGridDBDataController.CreateAllItems(AMissingItemsOnly: Boolean = False);
var
  I: Integer;
  AItem: TcxCustomGridTableItem;
begin
  if DataSet = nil then Exit;
  ShowHourglassCursor;
  try
    GridView.BeginUpdate;
    BeginUpdateFields;
    try
      with DataSet do
        for I := 0 to FieldCount - 1 do
          if not AMissingItemsOnly or (GetItemByFieldName(Fields[I].FieldName) = nil) then
          begin
            AItem := GridView.CreateItem;
            with AItem do
            begin
              with DataBinding as TcxGridItemDBDataBinding do
                FieldName := Fields[I].FieldName;
              Name := CreateUniqueName(GridView.Owner, GridView, AItem,
                ScxGridPrefixName, Fields[I].FieldName);
              Visible := Fields[I].Visible;
            end;
          end;
    finally
      EndUpdateFields;
      GridView.EndUpdate;
    end;
  finally
    HideHourglassCursor;
  end;
end;

function TcxGridDBDataController.GetItemByFieldName(const AFieldName: string): TcxCustomGridTableItem;
begin
  Result := TcxCustomGridTableItem(inherited GetItemByFieldName(AFieldName));
end;

{ TcxGridItemDBDataBinding }

function TcxGridItemDBDataBinding.GetDataController: TcxGridDBDataController;
begin
  Result := TcxGridDBDataController(inherited DataController);
end;

function TcxGridItemDBDataBinding.GetField: TField;
begin
  Result := DataController.GetItemField(Item.Index);
end;

function TcxGridItemDBDataBinding.GetFieldName: string;
begin
  Result := DataController.GetItemFieldName(Item.Index);
end;

procedure TcxGridItemDBDataBinding.SetFieldName(const Value: string);
begin
  if FieldName <> Value then
  begin
    FilterMRUValueItems.ClearItems;
    DataController.ChangeFieldName(Item.Index, Value);
  end;
end;

function TcxGridItemDBDataBinding.GetDefaultValueTypeClass: TcxValueTypeClass;
begin
  Result := nil;
end;

function TcxGridItemDBDataBinding.GetFilterFieldName: string;
begin
  if Field = nil then
    Result := ''
  else
    Result := Field.FieldName;
end;

procedure TcxGridItemDBDataBinding.Init;
begin
  inherited;
  TcxGridDBDefaultValuesProvider(DefaultValuesProvider).DataSource := DataController.DataSource;
  TcxGridDBDefaultValuesProvider(DefaultValuesProvider).Field := Field;
  TcxGridDBDefaultValuesProvider(DefaultValuesProvider).FieldName := FieldName;
end;

function TcxGridItemDBDataBinding.IsValueTypeStored: Boolean;
begin
  Result := FieldName = '';
end;

procedure TcxGridItemDBDataBinding.Assign(Source: TPersistent);
begin
  if Source is TcxGridItemDBDataBinding then
    FieldName := TcxGridItemDBDataBinding(Source).FieldName;
  inherited;
end;

function TcxGridItemDBDataBinding.DefaultCaption: string;
var
  AField: TField;
begin
  AField := Field;
  if AField = nil then
    Result := FieldName
  else
    Result := AField.DisplayName;
end;

function TcxGridItemDBDataBinding.DefaultRepositoryItem: TcxEditRepositoryItem;
begin
  Result := GetDefaultEditDBRepositoryItems.GetItemByField(Field);
end;

function TcxGridItemDBDataBinding.DefaultWidth(ATakeHeaderIntoAccount: Boolean = True): Integer;
var
  AField: TField;
  ACanvas: TcxCanvas;
  AParams: TcxViewParams;
  //W: Integer;
begin
  AField := Field;
  if AField = nil then
    Result := inherited DefaultWidth(ATakeHeaderIntoAccount)
  else
  begin
    ACanvas := GridView.ViewInfo.Canvas;
    Item.Styles.GetContentParams(nil, AParams);
    ACanvas.Font := AParams.Font;
    Result := AField.DisplayWidth * ACanvas.TextWidth('0') + 2 * cxTextOffset;
    {if ATakeHeaderIntoAccount then
    begin
      W := ACanvas.TextWidth(TcxCustomGridTableItemAccess(Item).Caption) +
        2 * (GridView.LookAndFeelPainter.HeaderBorderSize + cxTextOffset);
      if W > Result then Result := W;
    end;}
  end;
  TcxCustomGridTableItemAccess.CheckWidthValue(Item, Result);
end;

initialization
  RegisterClasses([TcxGridItemDBDataBinding]);

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?