adefctrl.pas

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

PAS
1,755
字号
           ACaseInsensitive : Boolean) : TWinControl; override;
  procedure DrawOnGridCanvas(ACanvas : TCanvas; AFont : TFont; ARect : TRect;
      AAlignment : TAlignment; AField : TField; Selected : Boolean); override;
published
  property DropDownRows : Integer read FDropDownRows write SetDropDownRows;
  property KeyField: String read FKeyFieldName write SetKeyFieldName;
  property ListField: String read FListFieldName write SetListFieldName;
  property ListFieldIndex: Integer read FListFieldIndex write SetListFieldIndex default 0;
  property ListSource: TDataSource read GetListSource write SetListSource;
end;

TAutoDBDefLookupListBox = class(TCustomAutoDBDefLookup)
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;
end;

TAutoDBDefLookupComboBox = class(TCustomAutoDBDefLookup)
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;
end;

TAutoDBDefReference = class(TCustomAutoDBDefControl)
private
  FAlignText : TAlignReferenceText;
  FGridLayout : TAutoGridLayout;
  FEditColor : TColor;
  FEditWidth : Integer;
  FFont : TFont;
  FFontText : TFont;
  FGlyph : TBitmap;
  FAssignFieldName : String;
  FKeyFieldName  : String;
  FLabelColor : TColor;
  FNumGlyphs : Integer;
  FPatternText : String;
  FUseQuery : Boolean;
  FReferencePanel : TReferencePanel;
  FTableName : TFileName;
  FTextOnError : String;
  FVisibleText : Boolean;
  FWinHeight : Integer;
  FWinWidth : Integer;
  FOnChange : TNotifyEvent;
  FReferencePanelAlign : TReferenceAlign;

  procedure SetAlignText(Value : TAlignReferenceText);
  procedure SetAssignField(Value : String);
  procedure SetEditColor(Value : TColor);
  procedure SetEditWidth(Value : Integer);
  procedure SetFont(Value : TFont);
  procedure SetFontText(Value : TFont);
  procedure SetGlyph(Value : TBitmap);
  procedure SetGridLayout(Value : TAutoGridLayout);
  procedure SetKeyField(Value : String);
  procedure SetLabelColor(Value : TColor);
  procedure SetNumGlyphs(Value : Integer);
  procedure SetPatternText(value : String);
  procedure SetReferencePanel(Value : TReferencePanel);
  procedure SetTableName(Value : TFileName);
  procedure SetTextOnError(Value : String);
  procedure SetVisibleText(Value : Boolean);
  procedure SetWinHeight(Value : Integer);
  procedure SetWinWidth(Value : Integer);
  procedure SetUseQuery(Value : Boolean);
  procedure SetOnChange(Value : TNotifyEvent);  
public
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;
  procedure SetControlProperties(AControl : TWinControl); override;  
  function CreateDBControl(AParent : TWinControl; ADataSource : TDataSource;
           AField : String) : TWinControl; override;
  function CreateGridInplaceControl(AParent : TWinControl; ADataSource : TDataSource;
           AField : String) : TWinControl; override;
  function CreateLocateControl(AParent : TWinControl; AField : TField;
           ACaseInsensitive : Boolean) : 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 AlignText : TAlignReferenceText read FAlignText write SetAlignText;
  property AssignField : String read FAssignFieldName write SetAssignField;
  {VisibleText should be declare before EditWidth}
  property VisibleText : Boolean read FVisibleText write SetVisibleText;
  property EditColor : TColor read FEditColor write SetEditColor;
  property EditWidth : Integer read FEditWidth write SetEditWidth;
  property Font : TFont read FFont write SetFont;
  property FontText : TFont read FFontText write SetFontText;
  property GridLayout : TAutoGridLayout read FGridLayout write SetGridLayout;
  property Glyph : TBitmap read FGlyph write SetGlyph;
  property KeyField  : String read FKeyFieldName write SetKeyField;
  property LabelColor : TColor read FLabelColor write SetLabelColor;
  property NumGlyphs : Integer read FNumGlyphs write SetNumGlyphs;
  property PatternText : String read FPatternText write SetPatternText;
  property ReferencePanel : TReferencePanel read FReferencePanel
                                 write SetReferencePanel;
  property ReferencePanelAlign : TReferenceAlign read FReferencePanelAlign
           write FReferencePanelAlign;                               
  property TableName : TFileName read FTableName write SetTableName;
  property TextOnError : String read FTextOnError write SetTextOnError;
  property UseQuery : Boolean read FUseQuery write SetUseQuery;
  property WinHeight : Integer read FWinHeight write SetWinHeight;
  property WinWidth : Integer read FWinWidth write SetWinWidth;
  property OnChange : TNotifyEvent read FOnChange write SetOnChange;
end;

TAutoDBDefDate = class(TCustomAutoDBDefControl)
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 CreateLocateControl(AParent : TWinControl; AField : TField;
           ACaseInsensitive : Boolean) : TWinControl; override;
  function CreateFilterControl(AParent : TWinControl; AField : TField) : TWinControl; override;
  function GetFilterControlValue(AControl : TWinControl) : Variant; override;
  procedure SetFilterControlValue(AControl : TWinControl; Value : Variant); override;
end;

{
TAutoDBDefDateTime = class(TCustomAutoDBDefControl)
public
  constructor Create(AOwner: TComponent); override;
end;
}

TAutoDBDefTime = class(TCustomAutoDBDefControl)
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 CreateLocateControl(AParent : TWinControl; AField : TField;
           ACaseInsensitive : Boolean) : TWinControl; override;
  function CreateFilterControl(AParent : TWinControl; AField : TField) : TWinControl; override;
  function GetFilterControlValue(AControl : TWinControl) : Variant; override;
  procedure SetFilterControlValue(AControl : TWinControl; Value : Variant); override;
end;

TAutoDBDefSpinImage = class(TCustomAutoDBDefControl)
private
  FAutoSize : Boolean;
  FDefaultImages : Boolean;
  FBorderStyle: TBorderStyle;
  FImageList : TImageList;
  FImageHAlign : TAutoHSpinImageAlign;
  FImageVAlign : TAutoVSpinImageAlign;
  FItems : TAutoSpinImageItems;
  FOnChange : TASIChange;
  FUseDblClick : Boolean;
  FStretch : Boolean;
  FUpDownAlign : TAutoUpDownAlign;
  FUpDownOrientation: TUDOrientation;
  FUpDownWidth : Integer;

  procedure SetAutoSize(Value : Boolean);
  procedure SetBorderStyle(Value : TBorderStyle);
  procedure SetDefaultImages(Value : Boolean);
  procedure SetImageList(Value : TImageList);
  procedure SetImageHAlign(Value : TAutoHSpinImageAlign);
  procedure SetImageVAlign(Value : TAutoVSpinImageAlign);
  procedure SetItems(Value : TAutoSpinImageItems);
  procedure SetStretch(Value : Boolean);
  procedure SetUpDownAlign(Value : TAutoUpDownAlign);
  procedure SetUpDownOrientation(Value : TUDOrientation);
  procedure SetUpDownWidth(Value : Integer);
protected
  procedure SetControlProperties(AControl : TWinControl); override;
public
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;
  procedure Notification(AComponent: TComponent;
    Operation: TOperation); override;
  function CreateDBControl(AParent : TWinControl; ADataSource : TDataSource;
           AField : String) : TWinControl; override;
  function CreateGridInplaceControl(AParent : TWinControl; ADataSource : TDataSource;
           AField : String) : TWinControl; override;
  function CreateLocateControl(AParent : TWinControl; AField : TField;
           ACaseInsensitive : Boolean) : TWinControl; override;
  procedure DrawOnGridCanvas(ACanvas : TCanvas; AFont : TFont; ARect : TRect;
      AAlignment : TAlignment; AField : TField; Selected : Boolean); override;
  function CreateFilterControl(AParent : TWinControl; AField : TField) : TWinControl; override;
  function GetFilterControlValue(AControl : TWinControl) : Variant; override;
  procedure SetFilterControlValue(AControl : TWinControl; Value : Variant); override;
  function UseMaxGridHeight : Boolean; override;
published
  property AutoSize : Boolean read FAutoSize write SetAutoSize;
  property BorderStyle: TBorderStyle read FBorderStyle write SetBorderStyle;
  property DefaultImages : Boolean read FDefaultImages write SetDefaultImages;
  property ImageList : TImageList read FImageList write SetImageList;
  property ImageHAlign : TAutoHSpinImageAlign read FImageHAlign write SetImageHAlign;
  property ImageVAlign : TAutoVSpinImageAlign read FImageVAlign write SetImageVAlign;
  property Items : TAutoSpinImageItems read FItems write SetItems;
  property Stretch : Boolean read FStretch write SetStretch;
  property UpDownAlign : TAutoUpDownAlign read FUpDownAlign write SetUpDownAlign;
  property UpDownOrientation: TUDOrientation read FUpDownOrientation
                              write SetUpDownOrientation;
  property UpDownWidth : Integer read FUpDownWidth write SetUpDownWidth;
  property UseDblClick : Boolean read FUseDblClick write FUseDblClick;
  property OnChange : TASIChange read FOnChange write FOnChange;
end;

TCustomAutoDBDefImageCombo = class(TCustomAutoDBDefControl)
private
  FImageList : TImageList;
  FAlignment : TAlignment;
  FVertAlignment : TVertAlignment;
  FImageAlign : TAutoImageAlign;
  FMultiLines : Boolean;
  FItemHeight : Integer;
  FStrings : TStrings;
  FUseValues : Boolean;

  function GetImageIndex(Index : Integer) : Integer;
  function GetItem(Index : Integer) : String;
  function GetValue(Index : Integer) : String;
  procedure SetImageList(Value : TImageList);
  procedure SetAlignment(Value : TAlignment);
  procedure SetImageAlign(Value : TAutoImageAlign);
  procedure SetItemHeight(Value : Integer);
  procedure SetMultiLines(Value : Boolean);
  procedure SetStrings(Value : TStrings);
  procedure SetVertAlignment(Value : TVertAlignment);
  procedure SetUseValues(Value : Boolean);
protected
  procedure SetControlProperties(AControl : TWinControl); override;
public
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;
  procedure Notification(AComponent: TComponent;
    Operation: TOperation); override;
  procedure DrawOnGridCanvas(ACanvas : TCanvas; AFont : TFont; ARect : TRect;
      AAlignment : TAlignment; AField : TField; Selected : Boolean); override;
  function CreateGridInplaceControl(AParent : TWinControl; ADataSource : TDataSource;
           AField : String) : TWinControl; override;
  function CreateLocateControl(AParent : TWinControl; AField : TField;
           ACaseInsensitive : Boolean) : TWinControl; override;
  procedure AddItem(St :String; ImageIndex : Integer; Value : String);
  procedure InsertItem(Index: Integer; St :String; ImageIndex : Integer; Value : String);

  property ImageIndexes[Index : Integer] : Integer read GetImageIndex;
  property Values[Index : Integer] : String read GetValue;
  property Items[Index : Integer] : String read GetItem;
published
  property Alignment : TAlignment read FAlignment write SetAlignment;
  property ImageAlign : TAutoImageAlign read FImageAlign write SetImageAlign;
  property ItemHeight : Integer read FItemHeight write SetItemHeight;
  property ImageList : TImageList read FImageList write SetImageList;
  property MultiLines : Boolean read FMultiLines write SetMultiLines;
  property Strings : TStrings read FStrings write SetStrings;
  property VertAlignment : TVertAlignment read FVertAlignment write SetVertAlignment;
  property UseValues : Boolean read FUseValues write SetUseValues;
end;

TAutoDBDefImageCombo = class(TCustomAutoDBDefImageCombo)
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;
end;

TAutoDBDefImageList = class(TCustomAutoDBDefImageCombo)
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;
end;


TOnCreateDBDefCustomControl = procedure(AParent : TWincontrol;
         ADataSource : TDataSource; AField : String; Var ANewDBControl : TWinControl) of object;
TOnDBDefCustomControlDrawOnGridCanvas = procedure(ACanvas : TCanvas; AFont : TFont;
         ARect : TRect; AAlignment : TAlignment; AField : TField; ASelected : Boolean) of object;
TOnDBDefCustomControlGetGridDisplayText = procedure(AField : TField;
         ASelected : Boolean; Var ADisplayText : String) of object;


TAutoDBDefCustomControl = class(TAutoDBDefMaskEdit)
private
  FControl : TWinControl;
  FUseMaxGridHeight : Boolean;
  FOnCreateInplaceEditor : TOnCreateDBDefCustomControl;
  FOnCreateDBControl : TOnCreateDBDefCustomControl;
  FOnDrawOnGridCanvas : TOnDBDefCustomControlDrawOnGridCanvas;
  FOnGetGridDisplayText : TOnDBDefCustomControlGetGridDisplayText;  

  procedure SetControl(Value : TWinControl);

  function CreateNewControl : TWinControl;  
  procedure SetDBProperties(AControl : TWinControl; ADataSource : TDataSource; AField : String);
protected
  procedure Notification(AComponent: TComponent;
    Operation: TOperation); 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;
  procedure DrawOnGridCanvas(ACanvas : TCanvas; AFont : TFont; ARect : TRect;
      AAlignment : TAlignment; AField : TField; Selected : Boolean); override;
  function UseMaxGridHeight : Boolean; override;
published
  property Control : TWinControl read FControl write SetControl;
  property MaxGridHeight : Boolean read FUseMaxGridHeight write FUseMaxGridHeight;
  property OnCreateDBControl : TOnCreateDBDefCustomControl read FOnCreateDBControl
           write FOnCreateDBControl;
  property OnCreateInplaceEditor : TOnCreateDBDefCustomControl read FOnCreateInplaceEditor
           write FOnCreateInplaceEditor;
  property OnDrawOnGridCanvas : TOnDBDefCustomControlDrawOnGridCanvas read FOnDrawOnGridCanvas
           write FOnDrawOnGridCanvas;
  property OnGetGridDisplayText : TOnDBDefCustomControlGetGridDisplayText read FOnGetGridDisplayText
           write FOnGetGridDisplayText;
end;

function GetDBDefControlClass(AControlType : TAutoDBDefControlType) : TAutoDBDefControlClass;
function GetDBDefControl(ATemplate : TAutoRepository; AField : TField) : TAutoDBDefControl;
function GetStdDBDefControl(AControlType : TAutoDBDefControlType) : TAutoDBDefControl;
function GetDBDefControlParentType(WinControl : TWinControl) : TAutoDBDefParentType;

implementation

uses agraphic, dbctrls, adbpanel, Mask,  adbimctr, aflookup, extctrls,
  ADateCtl, adbdate, aTimeCtl, adbtimct, TypInfo, afforms, abtnedit;

Const
  SdtDBDefControlCount = 7; //8

Var
 SdtDBDefControlList : TList;
 SdtDBDefControlType : Array[0..SdtDBDefControlCount - 1] of TAutoDBDefControlType =
     (adctMaskEdit, adctMemo,  adctImage, adctCheckBox,
      adctLookupComboBox, adctDate{, adctDateTime}, adctTime);

⌨️ 快捷键说明

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