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 + -
显示快捷键?