cxfiltercontrolutils.pas

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

PAS
425
字号
  case AOperator of
    fcoEqual:
      Result := cxGetResourceString(@cxSFilterOperatorEqual);
    fcoNotEqual:
      Result := cxGetResourceString(@cxSFilterOperatorNotEqual);
    fcoLess:
      Result := cxGetResourceString(@cxSFilterOperatorLess);
    fcoLessEqual:
      Result := cxGetResourceString(@cxSFilterOperatorLessEqual);
    fcoGreater:
      Result := cxGetResourceString(@cxSFilterOperatorGreater);
    fcoGreaterEqual:
      Result := cxGetResourceString(@cxSFilterOperatorGreaterEqual);
    fcoLike:
      Result := cxGetResourceString(@cxSFilterOperatorLike);
    fcoNotLike:
      Result := cxGetResourceString(@cxSFilterOperatorNotLike);
    fcoBlanks:
      Result := cxGetResourceString(@cxSFilterOperatorIsNull);
    fcoNonBlanks:
      Result := cxGetResourceString(@cxSFilterOperatorIsNotNull);
    fcoBetween:
      Result := cxGetResourceString(@cxSFilterOperatorBetween);
    fcoNotBetween:
      Result := cxGetResourceString(@cxSFilterOperatorNotBetween);
    fcoInList:
      Result := cxGetResourceString(@cxSFilterOperatorInList);
    fcoNotInList:
      Result := cxGetResourceString(@cxSFilterOperatorNotInList);
    //date
    fcoYesterday:
      Result := cxGetResourceString(@cxSFilterOperatorYesterday);
    fcoToday:
      Result := cxGetResourceString(@cxSFilterOperatorToday);
    fcoTomorrow:
      Result := cxGetResourceString(@cxSFilterOperatorTomorrow);
    fcoLast7Days:
      Result := cxGetResourceString(@cxSFilterOperatorLast7Days);
    fcoLastWeek:
      Result := cxGetResourceString(@cxSFilterOperatorLastWeek);
    fcoLast14Days:
      Result := cxGetResourceString(@cxSFilterOperatorLast14Days);
    fcoLastTwoWeeks:
      Result := cxGetResourceString(@cxSFilterOperatorLastTwoWeeks);
    fcoLast30Days:
      Result := cxGetResourceString(@cxSFilterOperatorLast30Days);
    fcoLastMonth:
      Result := cxGetResourceString(@cxSFilterOperatorLastMonth);
    fcoLastYear:
      Result := cxGetResourceString(@cxSFilterOperatorLastYear);
    fcoInPast:
      Result := cxGetResourceString(@cxSFilterOperatorPast);
    fcoThisWeek:
      Result := cxGetResourceString(@cxSFilterOperatorThisWeek);
    fcoThisMonth:
      Result := cxGetResourceString(@cxSFilterOperatorThisMonth);
    fcoThisYear:
      Result := cxGetResourceString(@cxSFilterOperatorThisYear);
    fcoNext7Days:
      Result := cxGetResourceString(@cxSFilterOperatorNext7Days);
    fcoNextWeek:
      Result := cxGetResourceString(@cxSFilterOperatorNextWeek);
    fcoNext14Days:
      Result := cxGetResourceString(@cxSFilterOperatorNext14Days);
    fcoNextTwoWeeks:
      Result := cxGetResourceString(@cxSFilterOperatorNextTwoWeeks);
    fcoNext30Days:
      Result := cxGetResourceString(@cxSFilterOperatorNext30Days);
    fcoNextMonth:
      Result := cxGetResourceString(@cxSFilterOperatorNextMonth);
    fcoNextYear:
      Result := cxGetResourceString(@cxSFilterOperatorNextYear);
    fcoInFuture:
      Result := cxGetResourceString(@cxSFilterOperatorFuture);
    else
      Result := '';
  end;
end;

{ TcxCustomFilterEditHelper }

class procedure TcxCustomFilterEditHelper.ClearPropertiesEvents(
  AProperties: TcxCustomEditProperties);
begin
  if AProperties = nil then Exit;
  with AProperties do
  begin
    OnValidate := nil;
    OnEditValueChanged := nil;
    OnChange := nil;
    OnButtonClick := nil;
  end;
end;

class procedure TcxCustomFilterEditHelper.InitializeEdit(AEdit: TcxCustomEdit;
  AEditProperties: TcxCustomEditProperties);
begin
  InitializeProperties(AEdit.ActiveProperties, AEditProperties,
    EditPropertiesHasButtons);
end;

class function TcxCustomFilterEditHelper.IsIDefaultValuesProviderNeeded(
  AEditProperties: TcxCustomEditProperties): Boolean;
begin
  Result := True;
end;

class function TcxCustomFilterEditHelper.EditPropertiesHasButtons: Boolean;
begin
  Result := False;
end;

class function TcxCustomFilterEditHelper.GetFilterEdit(AEditProperties: TcxCustomEditProperties;
  AInplaceEditList: TcxInplaceEditList = nil): TcxCustomEdit;
begin
  if AInplaceEditList = nil then
    Result := GetFilterEditClass.Create(nil)
  else
    Result := AInplaceEditList.GetEdit(TcxCustomEditPropertiesClass(GetFilterEditClass.GetPropertiesClass));
  InitializeEdit(Result, AEditProperties);
end;

class procedure TcxCustomFilterEditHelper.GetFilterValue(AEdit: TcxCustomEdit;
  AEditProperties: TcxCustomEditProperties; var V: Variant; var S: TCaption);
begin
  V := AEdit.EditValue;
  S := AEditProperties.GetDisplayText(V);
end;

class function TcxCustomFilterEditHelper.GetSupportedFilterOperators(
  AProperties: TcxCustomEditProperties;
  AValueTypeClass: TcxValueTypeClass;
  AExtendedSet: Boolean = False): TcxFilterControlOperators;
begin
  if AExtendedSet then
    Result := [fcoEqual..fcoNotInList]
  else
    Result := [fcoEqual..fcoNonBlanks];
  if (AValueTypeClass = nil) or not AValueTypeClass.IsString then
    Result := Result - [fcoLike, fcoNotLike];
end;

class function TcxCustomFilterEditHelper.GetFilterEditClass: TcxCustomEditClass;
begin
  Result := nil;
end;

class procedure TcxCustomFilterEditHelper.InitializeProperties(
  AProperties, AEditProperties: TcxCustomEditProperties; AHasButtons: Boolean);
begin
  with AProperties do
  begin
    Assign(AEditProperties);
    Alignment.Horz := taLeftJustify;
    Alignment.Vert := taTopJustify;
    BeepOnError := False;
    if not AHasButtons then
      Buttons.Clear;
    ReadOnly := False;
    ValidateOnEnter := True;
    if not Self.IsIDefaultValuesProviderNeeded(AEditProperties) then
      IDefaultValuesProvider := nil;
  end;
  ClearPropertiesEvents(AProperties);
end;

class function TcxCustomFilterEditHelper.IsValueValid(AValueTypeClass: TcxValueTypeClass;
  var AValue: Variant): Boolean;
begin
  Result := AValueTypeClass.IsValueValid(AValue);
end;

class procedure TcxCustomFilterEditHelper.SetFilterValue(AEdit: TcxCustomEdit;
  AEditProperties: TcxCustomEditProperties; AValue: Variant);
begin
end;

class function TcxCustomFilterEditHelper.UseDisplayValue: Boolean;
begin
  Result := False;
end;

{ TcxFilterEditsController }

function TcxFilterEditsController.GetItemClass(
  AItemClass: TClass): TClass;
begin
  Result := AItemClass.ClassParent;
end;

function TcxFilterEditsController.FindHelper(
  APropertiesClass: TClass): TcxCustomFilterEditHelperClass;
begin
  Result := TcxCustomFilterEditHelperClass(FindClass(GetItemClass(APropertiesClass)));
end;

procedure TcxFilterEditsController.Register(AItemClass,
  ARegisteredClass: TClass);
begin
  inherited Register(GetItemClass(AItemClass), ARegisteredClass);
end;

procedure TcxFilterEditsController.Unregister(AItemClass,
  ARegisteredClass: TClass);
begin
  inherited Unregister(GetItemClass(AItemClass), ARegisteredClass);
  if Count = 0 then
    FreeAndNil(FController);
end;

end.

⌨️ 快捷键说明

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