filtcomp.pas

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

PAS
1,794
字号
unit filtcomp;
(*
 COPYRIGHT (c) RSD software 1997 - 98
 All Rights Reserved.
*)

{$I aclver.inc}
interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, afilter, DB, ExtCtrls, DBCtrls, aflookup, Mask, aimctrls, adbcombo,
  aDateCtl, aTimeCtl;

type
{$I aclver.inc}
TEasyFilter = class(TComponent)
private
  FAutoFilter : TAutoFilter;
  FValue : String;

  function GetOnBeforeFilterChange : TNotifyEvent;
  function GetOnAfterFilterChange : TNotifyEvent;
  procedure SetOnBeforeFilterChange(Value : TNotifyEvent);
  procedure SetOnAfterFilterChange(Value : TNotifyEvent);
  procedure SetValue(Value : String);
public
  constructor Create(AOwner : TComponent); override;
  destructor Destroy; override;
published
  property AutoFilter : TAutoFilter read FAutoFilter write FAutoFilter;
  property Value : String read FValue write SetValue;
  property OnBeforeFilterChange: TNotifyEvent read GetOnBeforeFilterChange write SetOnBeforeFilterChange;
  property OnAfterFilterChange: TNotifyEvent read GetOnAfterFilterChange write SetOnAfterFilterChange;
end;

TCheckBoxFilter = class(TCustomCheckBox)
private
  FValueChecked : String;
  FValueUnChecked : String;
  SaveChecked : Boolean;
  FAutoFilter : TAutoFilter;

  function GetOnBeforeFilterChange : TNotifyEvent;
  function GetOnAfterFilterChange : TNotifyEvent;
  procedure SetOnBeforeFilterChange(Value : TNotifyEvent);
  procedure SetOnAfterFilterChange(Value : TNotifyEvent);
  procedure SetValueChecked(Value : String);
  procedure SetValueUnChecked(Value : String);
  procedure ReadSaveChecked(Reader: TReader);
  procedure WriteSaveChecked(Writer: TWriter);
protected
  procedure WndProc(var Message: TMessage); override;
  procedure DefineProperties(Filer: TFiler); override;
public
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;
  procedure Loaded; override;
published
  property AutoFilter : TAutoFilter read FAutoFilter write FAutoFilter;
  property Alignment;
  property AllowGrayed;
  property Caption;
  property Checked;
  property Color;
  property Ctl3D;
  property DragCursor;
  property DragMode;
  property Enabled;
  property Font;
  property ParentColor;
  property ParentCtl3D;
  property ParentFont;
  property ParentShowHint;
  property PopupMenu;
  property ShowHint;
  property TabOrder;
  property TabStop;
  property ValueChecked : String read FValueChecked write SetValueChecked;
  property ValueUnChecked : String read FValueUnChecked write SetValueUnChecked;
  property Visible;
  property OnAfterFilterChange: TNotifyEvent read GetOnAfterFilterChange write SetOnAfterFilterChange;
  property OnBeforeFilterChange: TNotifyEvent read GetOnBeforeFilterChange write SetOnBeforeFilterChange;
  property OnClick;
  property OnDragDrop;
  property OnDragOver;
  property OnEndDrag;
  property OnEnter;
  property OnExit;
  property OnKeyDown;
  property OnKeyPress;
  property OnKeyUp;
  property OnMouseDown;
  property OnMouseMove;
  property OnMouseUp;
  property OnStartDrag;
end;

TRadioGroupFilter = class(TRadioGroup)
private
  FItems : TStrings;
  OldItemIndex : Integer;
  FAutoFilter : TAutoFilter;

  function GetOnBeforeFilterChange : TNotifyEvent;
  function GetOnAfterFilterChange : TNotifyEvent;
  procedure SetItems(Value: TStrings);
  procedure SetOnBeforeFilterChange(Value : TNotifyEvent);
  procedure SetOnAfterFilterChange(Value : TNotifyEvent);
  procedure ItemsChanged(Sender: TObject);
  procedure ChangeAutoFilterValue;
protected
  procedure WndProc(var Message: TMessage); override;
public
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;
  procedure Loaded; override;
published
  property Items : TStrings read FItems write SetItems;
  property AutoFilter : TAutoFilter read FAutoFilter write FAutoFilter;
  property OnBeforeFilterChange: TNotifyEvent read GetOnBeforeFilterChange write SetOnBeforeFilterChange;
  property OnAfterFilterChange: TNotifyEvent read GetOnAfterFilterChange write SetOnAfterFilterChange;
end;

TListBoxFilter = class(TListBox)
private
  FItems : TStrings;
  OldItemIndex : Integer;
  FAutoFilter : TAutoFilter;

  function GetOnBeforeFilterChange : TNotifyEvent;
  function GetOnAfterFilterChange : TNotifyEvent;
  procedure SetItems(Value: TStrings);
  procedure SetOnBeforeFilterChange(Value : TNotifyEvent);
  procedure SetOnAfterFilterChange(Value : TNotifyEvent);
  procedure ItemsChanged(Sender: TObject);
  procedure ChangeAutoFilterValue;
protected
  procedure WndProc(var Message: TMessage); override;
  procedure KeyPress(var Key: Char); override;
  procedure Click; override;
public
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;
  procedure Loaded; override;
published
  property AutoFilter : TAutoFilter read FAutoFilter write FAutoFilter;
  property Items : TStrings read FItems write SetItems;
  property ItemIndex;
  property OnBeforeFilterChange: TNotifyEvent read GetOnBeforeFilterChange write SetOnBeforeFilterChange;
  property OnAfterFilterChange: TNotifyEvent read GetOnAfterFilterChange write SetOnAfterFilterChange;
end;

TComboBoxFilter = class(TComboBox)
private
  FItems : TStrings;
  OldItemIndex : Integer;
  FAutoFilter : TAutoFilter;

  function GetOnBeforeFilterChange : TNotifyEvent;
  function GetOnAfterFilterChange : TNotifyEvent;
  procedure SetItems(Value: TStrings);
  procedure SetOnBeforeFilterChange(Value : TNotifyEvent);
  procedure SetOnAfterFilterChange(Value : TNotifyEvent);
  procedure ItemsChanged(Sender: TObject);
  procedure ChangeAutoFilterValue;
protected
  procedure WndProc(var Message: TMessage); override;
  procedure KeyPress(var Key: Char); override;
  procedure Click; override;
public
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;
  procedure Loaded; override;
published
  property AutoFilter : TAutoFilter read FAutoFilter write FAutoFilter;
  property Items : TStrings read FItems write SetItems;
  property ItemIndex;
  property OnBeforeFilterChange: TNotifyEvent read GetOnBeforeFilterChange write SetOnBeforeFilterChange;
  property OnAfterFilterChange: TNotifyEvent read GetOnAfterFilterChange write SetOnAfterFilterChange;
end;

TRefreshType = (rtOnChange, rtonExit);

TMaskEditFilter = class(TMaskEdit)
private
  FAutoFilter : TAutoFilter;
  FRefreshType : TRefreshType;

  function GetOnBeforeFilterChange : TNotifyEvent;
  function GetOnAfterFilterChange : TNotifyEvent;
  procedure SetOnBeforeFilterChange(Value : TNotifyEvent);
  procedure SetOnAfterFilterChange(Value : TNotifyEvent);
  procedure CMExit(var Message: TCMExit); message CM_EXIT;
protected
  procedure Change; override;
public
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;
published
  property AutoFilter : TAutoFilter read FAutoFilter write FAutoFilter;
  property RefreshType : TRefreshType read FRefreshType write FRefreshType;
  property OnBeforeFilterChange: TNotifyEvent read GetOnBeforeFilterChange write SetOnBeforeFilterChange;
  property OnAfterFilterChange: TNotifyEvent read GetOnAfterFilterChange write SetOnAfterFilterChange;
end;

TLookupListFilter = class(TAutoCustomLookupList)
private
  FAutoFilter : TAutoFilter;

  function GetOnBeforeFilterChange : TNotifyEvent;
  function GetOnAfterFilterChange : TNotifyEvent;

  procedure SetOnBeforeFilterChange(Value : TNotifyEvent);
  procedure SetOnAfterFilterChange(Value : TNotifyEvent);
protected
  procedure KeyValueChanged; override;
public
  constructor Create(AOwner : TComponent); override;
  destructor Destroy; override;
published
  property AutoFilter : TAutoFilter read FAutoFilter write FAutoFilter;
  property ItemIndex;  
  property OnBeforeFilterChange: TNotifyEvent read GetOnBeforeFilterChange write SetOnBeforeFilterChange;
  property OnAfterFilterChange: TNotifyEvent read GetOnAfterFilterChange write SetOnAfterFilterChange;
end;

TLookupComboFilter = class(TAutoCustomLookupCombo)
private
  FAutoFilter : TAutoFilter;

  function GetOnBeforeFilterChange : TNotifyEvent;
  function GetOnAfterFilterChange : TNotifyEvent;
  procedure SetOnBeforeFilterChange(Value : TNotifyEvent);
  procedure SetOnAfterFilterChange(Value : TNotifyEvent);
protected
  procedure KeyValueChanged; override;
public
  constructor Create(AOwner : TComponent); override;
  destructor Destroy; override;
published
  property AutoFilter : TAutoFilter read FAutoFilter write FAutoFilter;
  property ItemIndex;  
  property OnBeforeFilterChange: TNotifyEvent read GetOnBeforeFilterChange write SetOnBeforeFilterChange;
  property OnAfterFilterChange: TNotifyEvent read GetOnAfterFilterChange write SetOnAfterFilterChange;
end;

TImageListBoxFilter = class(TAutoCustomImageListBox)
private
  FAutoFilter : TAutoFilter;
  FUseValues : Boolean;

  function GetOnBeforeFilterChange : TNotifyEvent;
  function GetOnAfterFilterChange : TNotifyEvent;
  procedure SetOnBeforeFilterChange(Value : TNotifyEvent);
  procedure SetOnAfterFilterChange(Value : TNotifyEvent);
  procedure SetItems(Value: TStrings);
  procedure SetUseValues(Value: Boolean);

  procedure UpdateData;
  procedure CMExit(var Message: TCMExit); message CM_EXIT;
protected
  procedure Click; override;
  procedure KeyDown(var Key: Word; Shift: TShiftState); override;
  procedure KeyPress(var Key: Char); override;
public
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;
published
  property AutoFilter : TAutoFilter read FAutoFilter write FAutoFilter;
  property Items write SetItems;
  property UseValues : Boolean read FUseValues write SetUseValues;
  property OnBeforeFilterChange: TNotifyEvent read GetOnBeforeFilterChange write SetOnBeforeFilterChange;
  property OnAfterFilterChange: TNotifyEvent read GetOnAfterFilterChange write SetOnAfterFilterChange;
end;

TImageComboBoxFilter = class(TAutoImageComboBox)
private
  FAutoFilter : TAutoFilter;
  FUseValues : Boolean;

  function GetOnBeforeFilterChange : TNotifyEvent;
  function GetOnAfterFilterChange : TNotifyEvent;
  procedure SetOnBeforeFilterChange(Value : TNotifyEvent);
  procedure SetOnAfterFilterChange(Value : TNotifyEvent);
  procedure SetItems(Value: TStrings);
  procedure SetUseValues(Value: Boolean);
  
  procedure UpdateData;
  procedure CMExit(var Message: TCMExit); message CM_EXIT;
protected
  procedure Click; override;
  procedure KeyDown(var Key: Word; Shift: TShiftState); override;
  procedure KeyPress(var Key: Char); override;
public
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;
published
  property AutoFilter : TAutoFilter read FAutoFilter write FAutoFilter;
  property Items write SetItems;
  property UseValues : Boolean read FUseValues write SetUseValues;
  property OnBeforeFilterChange: TNotifyEvent read GetOnBeforeFilterChange write SetOnBeforeFilterChange;
  property OnAfterFilterChange: TNotifyEvent read GetOnAfterFilterChange write SetOnAfterFilterChange;
end;

TSpinImageFilter = class(TAutoCustomSpinImage)
private
  FAutoFilter : TAutoFilter;

  function GetOnBeforeFilterChange : TNotifyEvent;
  function GetOnAfterFilterChange : TNotifyEvent;
  procedure SetOnBeforeFilterChange(Value : TNotifyEvent);
  procedure SetOnAfterFilterChange(Value : TNotifyEvent);
  procedure UpdateData;
protected
  procedure Change; override;
  procedure UpdateItems; override;
public
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;
published
  property AutoFilter : TAutoFilter read FAutoFilter write FAutoFilter;
  property OnBeforeFilterChange: TNotifyEvent read GetOnBeforeFilterChange write SetOnBeforeFilterChange;
  property OnAfterFilterChange: TNotifyEvent read GetOnAfterFilterChange write SetOnAfterFilterChange;
  property Align;
  property Color;
  property Ctl3D;
  property DragCursor;
  property DragMode;
  property Enabled;
  property Font;
  property ParentColor default False;
  property ParentCtl3D;
  property ParentFont;
  property ParentShowHint;
  property PopupMenu;
  property ShowHint;
  property TabOrder;
  property TabStop default True;
  property Visible;
  property OnClick;
  property OnDblClick;
  property OnDragDrop;
  property OnDragOver;
  property OnEndDrag;
  property OnEnter;
  property OnExit;
  property OnKeyDown;
  property OnKeyPress;
  property OnKeyUp;
  property OnMouseDown;
  property OnMouseMove;
  property OnMouseUp;
  property OnStartDrag;
end;

TAutoDBComboBoxFilter = class(TAutoCustomDBComboBox)
private
  FAutoFilter : TAutoFilter;

  function GetOnBeforeFilterChange : TNotifyEvent;
  function GetOnAfterFilterChange : TNotifyEvent;
  procedure SetOnBeforeFilterChange(Value : TNotifyEvent);
  procedure SetOnAfterFilterChange(Value : TNotifyEvent);
protected
  procedure Change; override;
  procedure Click; override;
public
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;
published
  property AutoFilter : TAutoFilter read FAutoFilter write FAutoFilter;
  property OnBeforeFilterChange: TNotifyEvent read GetOnBeforeFilterChange write SetOnBeforeFilterChange;
  property OnAfterFilterChange: TNotifyEvent read GetOnAfterFilterChange write SetOnAfterFilterChange;
end;

TDateControlFilter = class(TCustomAutoDateControl)
private
  FDateFilter : TAutoFilter;
  FBeginDateFilter : TAutoFilter;
  FEndDateFilter : TAutoFilter;

  function GetOnBeforeDateFilterChange : TNotifyEvent;
  function GetOnAfterDateFilterChange : TNotifyEvent;
  function GetOnBeforeBeginDateFilterChange : TNotifyEvent;
  function GetOnAfterBeginDateFilterChange : TNotifyEvent;
  function GetOnBeforeEndDateFilterChange : TNotifyEvent;
  function GetOnAfterEndDateFilterChange : TNotifyEvent;
  procedure SetOnBeforeDateFilterChange(Value : TNotifyEvent);
  procedure SetOnAfterDateFilterChange(Value : TNotifyEvent);
  procedure SetOnBeforeBeginDateFilterChange(Value : TNotifyEvent);
  procedure SetOnAfterBeginDateFilterChange(Value : TNotifyEvent);
  procedure SetOnBeforeEndDateFilterChange(Value : TNotifyEvent);
  procedure SetOnAfterEndDateFilterChange(Value : TNotifyEvent);
protected
  procedure DoDateChange; override;
  procedure DoBeginDateChange; override;
  procedure DoEndDateChange; override;
public
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;
published
  property DateFilter : TAutoFilter read FDateFilter write FDateFilter;
  property BeginDateFilter : TAutoFilter read FBeginDateFilter write FBeginDateFilter;
  property EndDateFilter : TAutoFilter read FEndDateFilter write FEndDateFilter;
  property OnBeforeDateFilterChange: TNotifyEvent read GetOnBeforeDateFilterChange
     write SetOnBeforeDateFilterChange;
  property OnAfterDateFilterChange: TNotifyEvent read GetOnAfterDateFilterChange
     write SetOnAfterDateFilterChange;
  property OnBeforeBeginDateFilterChange: TNotifyEvent read GetOnBeforeBeginDateFilterChange
     write SetOnBeforeBeginDateFilterChange;
  property OnAfterBeginDateFilterChange: TNotifyEvent read GetOnAfterBeginDateFilterChange
     write SetOnAfterBeginDateFilterChange;
  property OnBeforeEndDateFilterChange: TNotifyEvent read GetOnBeforeEndDateFilterChange
     write SetOnBeforeEndDateFilterChange;
  property OnEndAfterDateFilterChange: TNotifyEvent read GetOnAfterEndDateFilterChange
     write SetOnAfterEndDateFilterChange;
  { Property SelectPeriod must be first. }
  property SelectPeriod;
  property Align;
  property BeginDate;
  property Date;
  property DragCursor;
  property DragMode;
  property Enabled;
  property EndDate;
  property Font;
{$IFDEF DELPHI3_0}
  property ImeMode;
  property ImeName;
{$ENDIF}
  property ParentFont;
  property ParentShowHint;
  property PopupMenu;
  property ShowHint;
  property StartOfWeek;
  property TabOrder;
  property TabStop;
  property Visible;
  property OnDateChange;
  property OnBeginDateChange;
  property OnEndDateChange;
  property OnClick;
  property OnDblClick;
  property OnDragDrop;
  property OnDragOver;
  property OnEndDrag;
  property OnEnter;
  property OnExit;

⌨️ 快捷键说明

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