filtcomp.pas

来自「delphi编程控件」· PAS 代码 · 共 1,794 行 · 第 1/4 页

PAS
1,794
字号
begin
  inherited Click;
  UpdateData;
end;

procedure TImageComboBoxFilter.KeyDown(var Key: Word; Shift: TShiftState);
begin
  inherited KeyDown(Key, Shift);
  if Key in [VK_PRIOR, VK_NEXT, VK_END, VK_HOME, VK_LEFT, VK_UP,
    VK_RIGHT, VK_DOWN] then
     UpdateData;
end;

procedure TImageComboBoxFilter.KeyPress(var Key: Char);
begin
  inherited KeyPress(Key);
  UpdateData;
end;

procedure TImageComboBoxFilter.CMExit(var Message: TCMExit);
begin
  UpdateData;
  inherited;
end;

procedure TImageComboBoxFilter.SetItems(Value: TStrings);
begin
  Items.Assign(Value);
  UpdateData;
end;

procedure TImageComboBoxFilter.SetUseValues(Value: Boolean);
begin
  if(FUseValues <> Value)then begin
    FUseValues := Value;
    UpdateData;
  end;
end;

{TSpinImageFilter}
constructor TSpinImageFilter.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FAutoFilter := TAutoFilter.Create(self);
  DefaultImages := False;
end;

destructor TSpinImageFilter.Destroy;
begin
  FAutoFilter.Free;
  inherited;
end;

function TSpinImageFilter.GetOnBeforeFilterChange : TNotifyEvent;
begin
  Result := FAutoFilter.OnBeforeChange;
end;

function TSpinImageFilter.GetOnAfterFilterChange : TNotifyEvent;
begin
  Result := FAutoFilter.OnAfterChange;
end;

procedure TSpinImageFilter.SetOnBeforeFilterChange(Value : TNotifyEvent);
begin
  FAutoFilter.OnBeforeChange := Value;
end;

procedure TSpinImageFilter.SetOnAfterFilterChange(Value : TNotifyEvent);
begin
  FAutoFilter.OnAfterChange := Value;
end;

procedure TSpinImageFilter.UpdateData;
begin
  if ItemIndex >= 0 then begin
    if DefaultImages then
      AutoFilter.Value := IntToStr(ItemIndex)
    else AutoFilter.Value := Items[ItemIndex].Value;
  end else begin
    if DefaultImages then
       AutoFilter.Value := '-1'
    else AutoFilter.Value := '';
  end;
end;

procedure TSpinImageFilter.UpdateItems;
begin
  if Not (csLoading in ComponentState) then
    UpdateData;
end;

procedure TSpinImageFilter.Change;
begin
  if Not (csLoading in ComponentState) then
    UpdateData;
  inherited Change;
end;

{TAutoDBComboBoxFilter}
constructor TAutoDBComboBoxFilter.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FAutoFilter := TAutoFilter.Create(self);
end;

destructor TAutoDBComboBoxFilter.Destroy;
begin
  FAutoFilter.Free;
  inherited;
end;

function TAutoDBComboBoxFilter.GetOnBeforeFilterChange : TNotifyEvent;
begin
  Result := FAutoFilter.OnBeforeChange;
end;

function TAutoDBComboBoxFilter.GetOnAfterFilterChange : TNotifyEvent;
begin
  Result := FAutoFilter.OnAfterChange;
end;

procedure TAutoDBComboBoxFilter.SetOnBeforeFilterChange(Value : TNotifyEvent);
begin
  FAutoFilter.OnBeforeChange := Value;
end;

procedure TAutoDBComboBoxFilter.SetOnAfterFilterChange(Value : TNotifyEvent);
begin
  FAutoFilter.OnAfterChange := Value;
end;

procedure TAutoDBComboBoxFilter.Change;
begin
  FAutoFilter.Value := GetComboText;
end;

procedure TAutoDBComboBoxFilter.Click;
begin
  FAutoFilter.Value := GetComboText;
end;

const
  NullDate = -700000;

{TDateControlFilter}
function GetFilterStrDate(ADate : TDateTime) : String;
begin
  Result := DateToStr(ADate);
  if(Pos('/', ShortDateFormat) > 0) then
    Result := '''' + Result + '''';
end;


constructor TDateControlFilter.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);

  FDateFilter := TAutoFilter.Create(self);
  FDateFilter.Name := 'Date';
  FBeginDateFilter := TAutoFilter.Create(self);
  FBeginDateFilter.Name := 'BeginDate';  
  FEndDateFilter := TAutoFilter.Create(self);
  FEndDateFilter.Name := 'EndDate';  
end;

destructor TDateControlFilter.Destroy;
begin
  FDateFilter.Free;
  FBeginDateFilter.Free;
  FEndDateFilter.Free;
  inherited;
end;

function TDateControlFilter.GetOnBeforeDateFilterChange : TNotifyEvent;
begin
  Result := FDateFilter.OnBeforeChange;
end;

function TDateControlFilter.GetOnAfterDateFilterChange : TNotifyEvent;
begin
  Result := FDateFilter.OnAfterChange;
end;

function TDateControlFilter.GetOnBeforeBeginDateFilterChange : TNotifyEvent;
begin
  Result := FBeginDateFilter.OnBeforeChange;
end;

function TDateControlFilter.GetOnAfterBeginDateFilterChange : TNotifyEvent;
begin
  Result := FBeginDateFilter.OnAfterChange;
end;

function TDateControlFilter.GetOnBeforeEndDateFilterChange : TNotifyEvent;
begin
  Result := FEndDateFilter.OnBeforeChange;
end;

function TDateControlFilter.GetOnAfterEndDateFilterChange : TNotifyEvent;
begin
  Result := FEndDateFilter.OnAfterChange;
end;

procedure TDateControlFilter.SetOnBeforeDateFilterChange(Value : TNotifyEvent);
begin
  FDateFilter.OnBeforeChange := Value;
end;

procedure TDateControlFilter.SetOnAfterDateFilterChange(Value : TNotifyEvent);
begin
  FDateFilter.OnAfterChange := Value;
end;

procedure TDateControlFilter.SetOnBeforeBeginDateFilterChange(Value : TNotifyEvent);
begin
  FBeginDateFilter.OnBeforeChange := Value;
end;

procedure TDateControlFilter.SetOnAfterBeginDateFilterChange(Value : TNotifyEvent);
begin
  FBeginDateFilter.OnAfterChange := Value;
end;

procedure TDateControlFilter.SetOnBeforeEndDateFilterChange(Value : TNotifyEvent);
begin
  FEndDateFilter.OnBeforeChange := Value;
end;

procedure TDateControlFilter.SetOnAfterEndDateFilterChange(Value : TNotifyEvent);
begin
  FEndDateFilter.OnAfterChange := Value;
end;

procedure TDateControlFilter.DoDateChange;
begin
  if(Date <> NullDate) And (FDateFilter <> Nil) then
    FDateFilter.Value := GetFilterStrDate(Date);
  inherited DoDateChange;
end;

procedure TDateControlFilter.DoBeginDateChange;
begin
  if(BeginDate <> NullDate) And (FBeginDateFilter <> Nil) then
    FBeginDateFilter.Value := GetFilterStrDate(BeginDate);
  inherited DoBeginDateChange;
end;

procedure TDateControlFilter.DoEndDateChange;
begin
  if(EndDate <> NullDate) And (FEndDateFilter <> Nil) then
    FEndDateFilter.Value := GetFilterStrDate(EndDate);
  inherited DoEndDateChange;
end;

{TDateFilter}
constructor TDateFilter.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);

  FDateFilter := TAutoFilter.Create(self);
  FDateFilter.Name := 'Date';
  FBeginDateFilter := TAutoFilter.Create(self);
  FBeginDateFilter.Name := 'BeginDate';
  FEndDateFilter := TAutoFilter.Create(self);
  FEndDateFilter.Name := 'EndDate';
end;

destructor TDateFilter.Destroy;
begin
  FDateFilter.Free;
  FBeginDateFilter.Free;
  FEndDateFilter.Free;
  inherited;
end;

function TDateFilter.GetOnBeforeDateFilterChange : TNotifyEvent;
begin
  Result := FDateFilter.OnBeforeChange;
end;

function TDateFilter.GetOnAfterDateFilterChange : TNotifyEvent;
begin
  Result := FDateFilter.OnAfterChange;
end;

function TDateFilter.GetOnBeforeBeginDateFilterChange : TNotifyEvent;
begin
  Result := FBeginDateFilter.OnBeforeChange;
end;

function TDateFilter.GetOnAfterBeginDateFilterChange : TNotifyEvent;
begin
  Result := FBeginDateFilter.OnAfterChange;
end;

function TDateFilter.GetOnBeforeEndDateFilterChange : TNotifyEvent;
begin
  Result := FEndDateFilter.OnBeforeChange;
end;

function TDateFilter.GetOnAfterEndDateFilterChange : TNotifyEvent;
begin
  Result := FEndDateFilter.OnAfterChange;
end;

procedure TDateFilter.SetOnBeforeDateFilterChange(Value : TNotifyEvent);
begin
  FDateFilter.OnBeforeChange := Value;
end;

procedure TDateFilter.SetOnAfterDateFilterChange(Value : TNotifyEvent);
begin
  FDateFilter.OnAfterChange := Value;
end;

procedure TDateFilter.SetOnBeforeBeginDateFilterChange(Value : TNotifyEvent);
begin
  FBeginDateFilter.OnBeforeChange := Value;
end;

procedure TDateFilter.SetOnAfterBeginDateFilterChange(Value : TNotifyEvent);
begin
  FBeginDateFilter.OnAfterChange := Value;
end;

procedure TDateFilter.SetOnBeforeEndDateFilterChange(Value : TNotifyEvent);
begin
  FEndDateFilter.OnBeforeChange := Value;
end;

procedure TDateFilter.SetOnAfterEndDateFilterChange(Value : TNotifyEvent);
begin
  FEndDateFilter.OnAfterChange := Value;
end;

procedure TDateFilter.DoDateChange;
begin
  if(Date <> NullDate) And (FDateFilter <> Nil) then
    FDateFilter.Value := GetFilterStrDate(Date);
  inherited DoDateChange;
end;

procedure TDateFilter.DoBeginDateChange;
begin
  if(BeginDate <> NullDate) And (FBeginDateFilter <> Nil) then
    FBeginDateFilter.Value := GetFilterStrDate(BeginDate);
  inherited DoBeginDateChange;
end;

procedure TDateFilter.DoEndDateChange;
begin
  if(EndDate <> NullDate) And (FEndDateFilter <> Nil) then
    FEndDateFilter.Value := GetFilterStrDate(EndDate);
  inherited DoEndDateChange;
end;

{TTimeControlFilter}
constructor TTimeControlFilter.Create(AOwner : TComponent);
begin
  inherited;
  FAutoFilter := TAutoFilter.Create(self);
  with FAutoFilter do begin
    TextBefore := '''';
    TextAfter := '''';    
  end;
end;

destructor TTimeControlFilter.Destroy;
begin
  FAutoFilter.Free;
  inherited;
end;

function TTimeControlFilter.GetOnBeforeFilterChange : TNotifyEvent;
begin
  Result := FAutoFilter.OnBeforeChange;
end;

function TTimeControlFilter.GetOnAfterFilterChange : TNotifyEvent;
begin
  Result := FAutoFilter.OnAfterChange;
end;

procedure TTimeControlFilter.SetOnBeforeFilterChange(Value : TNotifyEvent);
begin
  FAutoFilter.OnBeforeChange := Value;
end;

procedure TTimeControlFilter.SetOnAfterFilterChange(Value : TNotifyEvent);
begin
  FAutoFilter.OnAfterChange := Value;
end;

procedure TTimeControlFilter.DoTimeChange;
begin
  if(FAutoFilter <> Nil) then
    FAutoFilter.Value := TimeToStr(Time);
  inherited DoTimeChange;
end;

{TTimeEditFilter}
constructor TTimeEditFilter.Create(AOwner : TComponent);
begin
  inherited;
  FAutoFilter := TAutoFilter.Create(self);  
  with FAutoFilter do begin
    TextBefore := '''';
    TextAfter := '''';    
  end;
end;

destructor TTimeEditFilter.Destroy;
begin
  FAutoFilter.Free;
  inherited;
end;

function TTimeEditFilter.GetOnBeforeFilterChange : TNotifyEvent;
begin
  Result := FAutoFilter.OnBeforeChange;
end;

function TTimeEditFilter.GetOnAfterFilterChange : TNotifyEvent;
begin
  Result := FAutoFilter.OnAfterChange;
end;

procedure TTimeEditFilter.SetOnBeforeFilterChange(Value : TNotifyEvent);
begin
  FAutoFilter.OnBeforeChange := Value;
end;

procedure TTimeEditFilter.SetOnAfterFilterChange(Value : TNotifyEvent);
begin
  FAutoFilter.OnAfterChange := Value;
end;

procedure TTimeEditFilter.DoTimeChange;
begin
  if(FAutoFilter <> Nil) then
    FAutoFilter.Value := TimeToStr(Time);
  inherited DoTimeChange;
end;

end.

⌨️ 快捷键说明

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