adefctrl.pas

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

PAS
1,755
字号
unit adefctrl;
(*
 COPYRIGHT (c) RSD Software 1997 - 98
 All Rights Reserved.
*)

interface
{$I aclver.inc}
uses Classes, SysUtils, Windows, Controls, Messages, Forms, Menus, Graphics,
  ComCtrls, DB, DBTables, adbtempl, adbgrid, aimctrls, refer, stdctrls;

type
TCustomAutoDBDefControl = class(TAutoDBDefControl)
private
  List : TList;

  FColor : TColor;
  FCtl3D : Boolean;
  FCursor : TCursor;
  FDragCursor : TCursor;
  FDragMode : TDragMode;
  FHint : String;
  FFont : TFont;
  FHeight : Integer;
  FPopupMenu : TPopupMenu;
  FShowHint : Boolean;
  FWidth : Integer;
  FReadOnly : Boolean;

  FOnClick : TNotifyEvent;
  FOnDblClick : TNotifyEvent;
  FOnDragDrop : TDragDropEvent;
  FOnDragOver : TDragOverEvent;
  FOnEndDrag : TEndDragEvent;
  FOnMouseDown : TMouseEvent;
  FOnMouseMove : TMouseMoveEvent;
  FOnMouseUp : TMouseEvent;
  FOnStartDrag : TStartDragEvent;
  FOnEnter : TNotifyEvent;
  FOnExit : TNotifyEvent;
  FOnKeyDown : TKeyEvent;
  FOnKeyPress : TKeyPressEvent;
  FOnKeyUp : TKeyEvent;

  procedure SetColor(Value : TColor);
  procedure SetCtl3D(Value : Boolean);
  procedure SetCursor(Value : TCursor);
  procedure SetDragCursor(Value : TCursor);
  procedure SetDragMode(Value : TDragMode);
  procedure SetHeight(Value : Integer);
  procedure SetHint(Value : String);
  procedure SetPopupMenu(Value : TPopupMenu);
  procedure SetReadOnly(Value : Boolean);
  procedure SetShowHint(Value : Boolean);
  procedure SetWidth(Value : Integer);
  procedure SetFont(Value : TFont);

  procedure SetOnClick(Value : TNotifyEvent);
  procedure SetOnDblClick(Value : TNotifyEvent);
  procedure SetOnDragDrop(Value : TDragDropEvent);
  procedure SetOnDragOver(Value : TDragOverEvent);
  procedure SetOnEndDrag(Value : TEndDragEvent);
  procedure SetOnMouseDown(Value : TMouseEvent);
  procedure SetOnMouseMove(Value : TMouseMoveEvent);
  procedure SetOnMouseUp(Value : TMouseEvent);
  procedure SetOnStartDrag(Value : TStartDragEvent);
  procedure SetOnEnter(Value : TNotifyEvent);
  procedure SetOnKeyDown(Value : TKeyEvent);
  procedure SetOnKeyPress(Value : TKeyPressEvent);
  procedure SetOnKeyUp(Value : TKeyEvent);
protected
  procedure SetControlProperties(AControl : TWinControl); virtual;

  procedure OnDoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  procedure OnDoKeyPress(Sender: TObject; var Key: Char);
  procedure OnDoExit(Sender: TObject);

  procedure KeyDown(WinControl : TWinControl; var Key: Word; Shift: TShiftState); virtual;
  procedure KeyPress(WinControl : TWinControl; var Key: Char); virtual;
  procedure DoExit(WinControl : TWinControl); virtual;
public
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;

  procedure AddDBControlToList(AControl : TWinControl);
  procedure DestroyControl(Value : TWinControl); override;
  procedure DrawOnGridCanvas(ACanvas : TCanvas; AFont : TFont; ARect : TRect;
      AAlignment : TAlignment; AField : TField; Selected : Boolean); override;
  function GetParentType(WinControl : TWinControl) : TAutoDBDefParentType;      
published
  property Color : TColor read FColor write SetColor;
  property Ctl3D : Boolean read FCtl3D write SetCtl3D;
  property Cursor : TCursor read FCursor write SetCursor;
  property DragCursor : TCursor read FDragCursor write SetDragCursor;
  property DragMode : TDragMode read FDragMode write SetDragMode;
  property Font : TFont read FFont write SetFont;
  property Height : Integer read FHeight write SetHeight;
  property Hint : String read FHint write SetHint;
  property PopupMenu : TPopupMenu read FPopupMenu write SetPopupMenu;
  property ReadOnly : Boolean read FReadOnly write SetReadOnly;
  property ShowHint : Boolean read FShowHint write SetShowHint;
  property Width : Integer read FWidth write SetWidth;
  property OnClick: TNotifyEvent read FOnClick write SetOnClick;
  property OnDblClick: TNotifyEvent read FOnDblClick write SetOnDblClick;
  property OnDragDrop: TDragDropEvent read FOnDragDrop write SetOnDragDrop;
  property OnDragOver: TDragOverEvent read FOnDragOver write SetOnDragOver;
  property OnEndDrag: TEndDragEvent read FOnEndDrag write SetOnEndDrag;
  property OnMouseDown: TMouseEvent read FOnMouseDown write SetOnMouseDown;
  property OnMouseMove: TMouseMoveEvent read FOnMouseMove write SetOnMouseMove;
  property OnMouseUp: TMouseEvent read FOnMouseUp write SetOnMouseUp;
  property OnStartDrag: TStartDragEvent read FOnStartDrag write SetOnStartDrag;
  property OnEnter: TNotifyEvent read FOnEnter write SetOnEnter;
  property OnExit: TNotifyEvent read FOnExit write FOnExit;
  property OnKeyDown: TKeyEvent read FOnKeyDown write SetOnKeyDown;
  property OnKeyPress: TKeyPressEvent read FOnKeyPress write SetOnKeyPress;
  property OnKeyUp: TKeyEvent read FOnKeyUp write SetOnKeyUp;
end;

TAutoDBDefMaskEdit = class(TCustomAutoDBDefControl)
private
  FAutoSelect : Boolean;
  FEditMask : String;

  procedure SetAutoSelect(Value : Boolean);
  procedure SetEditMask(Value : String);  
protected
  procedure SetControlProperties(AControl : TWinControl); override;
public
  constructor Create(AOwner: TComponent); override;
  function CreateDBControl(AParent : TWinControl; ADataSource : TDataSource;
           AField : String) : TWinControl; override;
  function CreateGridInplaceControl(AParent : TWinControl; ADataSource : TDataSource;
           AField : String) : TWinControl; override;
  function CreateFilterControl(AParent : TWinControl; AField : TField) : TWinControl; override;
  function CreateLocateControl(AParent : TWinControl; AField : TField;
           ACaseInsensitive : Boolean) : TWinControl; override;
  function GetFilterControlValue(AControl : TWinControl) : Variant; override;
  procedure SetFilterControlValue(AControl : TWinControl; Value : Variant); override;
published
  property AutoSelect : Boolean read FAutoSelect write SetAutoSelect;
  property EditMask : String read FEditMask write SetEditMask;
end;

TAutoDBDefBtnEdit = class(TCustomAutoDBDefControl)
private
  FAutoSelect : Boolean;
  FBtnTabStop : Boolean;  
  FEditMask : String;
  FGlyph : TBitmap;
  FNumGlyphs : Integer;

  FOnBtnClick : TNotifyEvent;

  procedure SetAutoSelect(Value : Boolean);
  procedure SetBtnTabStop(Value : Boolean);
  procedure SetEditMask(Value : String);
  procedure SetGlyph(Value : TBitmap);
  procedure SetNumGlyphs(Value : Integer);
  procedure SetOnBtnClick(Value : TNotifyEvent);
protected
  procedure SetControlProperties(AControl : TWinControl); override;
public
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;
  function CreateDBControl(AParent : TWinControl; ADataSource : TDataSource;
           AField : String) : TWinControl; override;
  function CreateGridInplaceControl(AParent : TWinControl; ADataSource : TDataSource;
           AField : String) : TWinControl; override;
  function CreateFilterControl(AParent : TWinControl; AField : TField) : TWinControl; override;
  function CreateLocateControl(AParent : TWinControl; AField : TField;
           ACaseInsensitive : Boolean) : TWinControl; override;
  function GetFilterControlValue(AControl : TWinControl) : Variant; override;
  procedure SetFilterControlValue(AControl : TWinControl; Value : Variant); override;
published
  property AutoSelect : Boolean read FAutoSelect write SetAutoSelect;
  property BtnTabStop : Boolean read FBtnTabStop write SetBtnTabStop;
  property EditMask : String read FEditMask write SetEditMask;
  property Glyph : TBitmap read FGlyph write SetGlyph;
  property NumGlyphs : Integer read FNumGlyphs write SetNumGlyphs;
  property OnBtnClick : TNotifyEvent read FOnBtnClick write SetOnBtnClick;
end;

TAutoDBDefMemo = class(TCustomAutoDBDefControl)
private
  FScrollBars: TScrollStyle;

  procedure SetScrollBars(Value : TScrollStyle);
protected
  procedure SetControlProperties(AControl : TWinControl); override; 
public
  constructor Create(AOwner: TComponent); override;

  function CreateDBControl(AParent : TWinControl; ADataSource : TDataSource;
           AField : String) : TWinControl; override;
  function CreateGridInplaceControl(AParent : TWinControl; ADataSource : TDataSource;
           AField : String) : TWinControl; override;
  function UseMaxGridHeight : Boolean; override;
  procedure DrawOnGridCanvas(ACanvas : TCanvas; AFont : TFont; ARect : TRect;
      AAlignment : TAlignment; AField : TField; Selected : Boolean); override;
published
  property ScrollBars : TScrollStyle read FScrollBars write SetScrollBars;    
end;

TAutoDBDefImage = class(TCustomAutoDBDefControl)
public
  constructor Create(AOwner: TComponent); override;
  function CreateDBControl(AParent : TWinControl; ADataSource : TDataSource;
           AField : String) : TWinControl; override;
  function UseMaxGridHeight : Boolean; override;
  procedure DrawOnGridCanvas(ACanvas : TCanvas; AFont : TFont; ARect : TRect;
      AAlignment : TAlignment; AField : TField; Selected : Boolean); override;
end;

TCustomAutoDBDefComboBox = class(TCustomAutoDBDefControl)
private
  FItems : TStrings;

  FDropDownCount : Integer;
  FSorted : Boolean;
  FStyle : TComboBoxStyle;

  procedure SetDropDownCount(Value : Integer);
  procedure SetSorted(Value : Boolean);
  procedure SetStyle(Value : TComboBoxStyle);
  procedure SetItems(Value : TStrings);
protected
  procedure SetControlProperties(AControl : TWinControl); override;

  property DropDownCount : Integer read FDropDownCount write SetDropDownCount;
  property Sorted : Boolean read FSorted write SetSorted;
  property Style : TComboBoxStyle read FStyle write SetStyle;
public
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;
  function CreateGridInplaceControl(AParent : TWinControl; ADataSource : TDataSource;
          AField : String) : TWinControl; override;
  function CreateLocateControl(AParent : TWinControl; AField : TField;
           ACaseInsensitive : Boolean) : TWinControl; override;
end;

TAutoDBDefListBox = class(TCustomAutoDBDefComboBox)
private
public
  constructor Create(AOwner: TComponent); override;
  function CreateDBControl(AParent : TWinControl; ADataSource : TDataSource;
           AField : String) : TWinControl; override;
  function CreateFilterControl(AParent : TWinControl; AField : TField) : TWinControl; override;
  function GetFilterControlValue(AControl : TWinControl) : Variant; override;
  procedure SetFilterControlValue(AControl : TWinControl; Value : Variant); override;
published
  property Items : TStrings read FItems write SetItems;
  property DropDownCount;
  property Sorted;
end;

TAutoDBDefComboBox = class(TCustomAutoDBDefComboBox)
public
  constructor Create(AOwner: TComponent); override;
  function CreateDBControl(AParent : TWinControl; ADataSource : TDataSource;
           AField : String) : TWinControl; override;
  function CreateFilterControl(AParent : TWinControl; AField : TField) : TWinControl; override;
  function GetFilterControlValue(AControl : TWinControl) : Variant; override;
  procedure SetFilterControlValue(AControl : TWinControl; Value : Variant); override;
published
  property Items : TStrings read FItems write SetItems;
  property DropDownCount;
  property Sorted;
  property Style;
end;

TAutoDBDefCheckBox = class(TCustomAutoDBDefControl)
private
  FValueChecked : String;
  FValueUnchecked : String;
protected
  procedure SetControlProperties(AControl : TWinControl); override;
public
  constructor Create(AOwner: TComponent); override;
  function CreateDBControl(AParent : TWinControl; ADataSource : TDataSource;
           AField : String) : TWinControl; override;
  function CreateGridInplaceControl(AParent : TWinControl; ADataSource : TDataSource;
           AField : String) : TWinControl; override;
  function CreateFilterControl(AParent : TWinControl; AField : TField) : TWinControl; override;           
  function GetFilterControlValue(AControl : TWinControl) : Variant; override;
  procedure SetFilterControlValue(AControl : TWinControl; Value : Variant); override;
  procedure DrawOnGridCanvas(ACanvas : TCanvas; AFont : TFont; ARect : TRect;
      AAlignment : TAlignment; AField : TField; Selected : Boolean); override;
published
  property ValueChecked : String read FValueChecked write FValueChecked;
  property ValueUnchecked : String read FValueUnchecked write FValueUnchecked;
end;

TAutoDBDefRadioGroup = class(TCustomAutoDBDefControl)
private
  FCaption : String;
  FColumns : Integer;
  FItems : TStrings;
  FValues : TStrings;

  procedure SetCaption(Value : String);
  procedure SetColumns(Value : Integer);
  procedure SetItems(Value : TStrings);
  procedure SetValues(Value : TStrings);
protected
  procedure SetControlProperties(AControl : TWinControl); override;
public
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;
  function CreateDBControl(AParent : TWinControl; ADataSource : TDataSource;
           AField : String) : TWinControl; override;
  function CreateLocateControl(AParent : TWinControl; AField : TField;
           ACaseInsensitive : Boolean) : TWinControl; override;
  function CreateGridInplaceControl(AParent : TWinControl; ADataSource : TDataSource;
           AField : String) : TWinControl; override;
  function CreateFilterControl(AParent : TWinControl; AField : TField) : TWinControl; override;           
  function GetFilterControlValue(AControl : TWinControl) : Variant; override;
  procedure SetFilterControlValue(AControl : TWinControl; Value : Variant); override;
  procedure DrawOnGridCanvas(ACanvas : TCanvas; AFont : TFont; ARect : TRect;
      AAlignment : TAlignment; AField : TField; Selected : Boolean); override;
published
  property Caption : String read FCaption write SetCaption;
  property Columns : Integer read FColumns write SetColumns;
  property Items : TStrings read FItems write SetItems;
  property Values : TStrings read FValues write SetValues;
end;

TCustomAutoDBDefLookup = class(TCustomAutoDBDefControl)
private
  FListLink : TDataLink;
  FKeyFieldName: String;
  FListFieldName : String;
  FListFieldIndex : Integer;
  FDropDownRows : Integer;
  FLookupDataSource : TDataSource;

  function GetListSource: TDataSource;
  procedure SetDropDownRows(Value : Integer);
  procedure SetKeyFieldName(const Value: String);
  procedure SetListFieldIndex(Value : Integer);
  procedure SetListFieldName(const Value: String);
  procedure SetListSource(Value: TDataSource);
protected
  procedure SetControlProperties(AControl : TWinControl); override;
public
  constructor Create(AOwner : TComponent); override;
  destructor Destroy; override;
  procedure Notification(AComponent: TComponent;
    Operation: TOperation); override;
  function CreateGridInplaceControl(AParent : TWinControl; ADataSource : TDataSource;
           AField : String) : TWinControl; override;
  function CreateLocateControl(AParent : TWinControl; AField : TField;

⌨️ 快捷键说明

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