cxgridcardview.pas

来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 1,418 行 · 第 1/5 页

PAS
1,418
字号
    function DropDownWindowExists: Boolean; override;
    function GetDropDownWindow: TcxCustomGridPopup; override;
    function GetDropDownWindowOwnerBounds: TRect; override;
    function IsDropDownWindowOwner: Boolean; override;
    property DropDownWindow: TcxGridFilterPopup read GetDropDownWindowValue;
  public
    constructor Create(ARowCaptionViewInfo: TcxGridCardRowCaptionViewInfo); reintroduce; virtual;
    property Active: Boolean read GetActive;
    property Row: TcxGridCardViewRow read GetRow;
    property RowCaptionViewInfo: TcxGridCardRowCaptionViewInfo read FRowCaptionViewInfo;
  end;

  TcxGridCardRowCaptionViewInfoClass = class of TcxGridCardRowCaptionViewInfo;

  TcxGridCardRowCaptionViewInfo = class(TcxGridCardRowCellViewInfo)
  private
    FCalculatingRealWidth: Boolean;
    FFilterButtonViewInfo: TcxGridCardRowFilterButtonViewInfo;
    function GetRealWidth: Integer;
  protected
    function CalculateHeight: Integer; override;
    class function CalculateSimpleHeight(ARow: TcxGridCardViewRow;
      ACanvas: TcxCanvas; AFont: TFont): Integer; virtual;
    function CalculateRealWidth: Integer; virtual;
    function CalculateWidth: Integer; override;
    function CanFilter: Boolean; virtual;
    function CanShowAutoHint: Boolean; override;
    function CanShowCustomHint: Boolean; override;
    function CanShowEdit: Boolean; override;
    function GetAlignmentHorz: TAlignment; override;
    function GetAlignmentVert: TcxAlignmentVert; override;
    function GetAutoHeight: Boolean; override;
    function GetFilterButtonBounds: TRect; virtual;
    function GetFilterButtonViewInfoClass: TcxGridCardRowFilterButtonViewInfoClass; virtual;
    function GetHitTestClass: TcxCustomGridHitTestClass; override;
    function GetHotTrack: Boolean; override;
    function GetPainterClass: TcxCustomGridCellPainterClass; override;
    function GetShowEndEllipsis: Boolean; override;
    function GetText: string; override;
    function GetTextAreaBounds: TRect; override;
    procedure GetViewParams(var AParams: TcxViewParams); override;
    function GetVisible: Boolean; override;
    procedure InitHitTest(AHitTest: TcxCustomGridHitTest); override;
    function UseStandardNeedShowHint: Boolean; override;

    property CalculatingRealWidth: Boolean read FCalculatingRealWidth;
    property FilterButtonBounds: TRect read GetFilterButtonBounds;
  public
    constructor Create(ARowViewInfo: TcxGridCardRowViewInfo); override;
    destructor Destroy; override;
    procedure Calculate(ALeftBound, ATopBound: Integer; AWidth: Integer = -1;
      AHeight: Integer = -1); override;
    function GetHitTest(const P: TPoint): TcxCustomGridHitTest; override;
    
    property FilterButtonViewInfo: TcxGridCardRowFilterButtonViewInfo read FFilterButtonViewInfo;
    property RealWidth: Integer read GetRealWidth;
  end;

  TcxGridCardRowDataViewInfoClass = class of TcxGridCardRowDataViewInfo;

  TcxGridCardRowDataViewInfo = class(TcxGridCardRowCellViewInfo)
  protected
    function CalculateHeight: Integer; override;
    class function CalculateSimpleHeight(ARow: TcxGridCardViewRow;
      ACanvas: TcxCanvas; AFont: TFont): Integer; virtual;
    function CalculateWidth: Integer; override;
    function GetAutoHeight: Boolean; override;
    function GetHitTestClass: TcxCustomGridHitTestClass; override;
    function GetText: string; override;
    procedure GetViewParams(var AParams: TcxViewParams); override;
    function GetVisible: Boolean; override;
  end;

  TcxGridCardRowViewInfoClass = class of TcxGridCardRowViewInfo;

  TcxGridCardRowViewInfo = class(TcxCustomGridViewCellViewInfo)
  private
    FCaptionViewInfo: TcxGridCardRowCaptionViewInfo;
    FCardViewInfo: TcxGridCardViewInfo;
    FDataViewInfo: TcxGridCardRowDataViewInfo;
    FHeight: Integer;
    FIndex: Integer;
    FPartVisible: Boolean;
    function GetExpandButtonAreaSizeValue: Integer;
    function GetExpandButtonSizeValue: Integer;
    function GetExpanded: Boolean;
    function GetGridView: TcxGridCardView;
    function GetGridRecord: TcxGridCard;
    function GetGridViewInfo: TcxGridCardViewViewInfo;
    //function GetMaxHeight: Integer;
    function GetRow: TcxGridCardViewRow;
    procedure SetExpanded(Value: Boolean);
    function CalculatePartVisible: Boolean;
    function CalculateVisible: Boolean;
    procedure CreateViewInfos;
    procedure DestroyViewInfos;
  protected
    function CalculateContentBounds: TRect; override;
    function CalculateHeaderWidth: Integer; virtual;
    function CalculateHeight: Integer; override;
    class function CalculateSimpleHeight(ARow: TcxGridCardViewRow; ACanvas: TcxCanvas): Integer; virtual;
    function CalculateWidth: Integer; override;
    class procedure CheckHeight(ACardViewInfoClass: TcxGridCardViewInfoClass;
      ARow: TcxGridCardViewRow; ARowViewInfo: TcxGridCardRowViewInfo;
      ALookAndFeelPainter: TcxCustomLookAndFeelPainterClass; var AHeight: Integer); virtual;
    class function GetCaptionViewInfoClass: TcxGridCardRowCaptionViewInfoClass; virtual;
    function GetCaptionWidth: Integer; virtual;
    class function GetDataViewInfoClass: TcxGridCardRowDataViewInfoClass; virtual;
    function GetDataWidth: Integer; virtual;
    function GetDesignSelectionBounds: TRect; override;
    function GetExpandButtonAreaBounds: TRect; virtual;
    class function GetExpandButtonAreaSize(ALookAndFeelPainter: TcxCustomLookAndFeelPainterClass): Integer; virtual;
    function GetExpandButtonBounds: TRect; virtual;
    class function GetExpandButtonSize(ALookAndFeelPainter: TcxCustomLookAndFeelPainterClass): Integer; virtual;
    function GetHeaderWidth: Integer; virtual;
    function GetHeight: Integer; override;
    function GetHidden: Boolean; virtual;
    function GetHitTestClass: TcxCustomGridHitTestClass; override;
    function GetIndent: Integer; virtual;
    function GetIndentBounds: TRect; virtual;
    function GetIndentViewParams: TcxViewParams; virtual;
    function GetIsDesignSelected: Boolean; override;
    function GetIsVisibleForPainting: Boolean; override;
    function GetPainterClass: TcxCustomGridCellPainterClass; override;
    class function GetSimpleViewParams(ARow: TcxGridCardViewRow; AIsCaption: Boolean): TcxViewParams; virtual;
    function GetWidth: Integer; override;
    procedure InitHitTest(AHitTest: TcxCustomGridHitTest); override;

    procedure GetCaptionViewParams(var AParams: TcxViewParams; AIgnoreSelection: Boolean); virtual; abstract;
    procedure GetDataViewParams(var AParams: TcxViewParams); virtual; abstract;

    property CaptionWidth: Integer read GetCaptionWidth;
    property DataWidth: Integer read GetDataWidth;
    property ExpandButtonAreaSize: Integer read GetExpandButtonAreaSizeValue;
    property ExpandButtonSize: Integer read GetExpandButtonSizeValue;
    property Indent: Integer read GetIndent;
    //!!!property MaxHeight: Integer read GetMaxHeight;
  public
    constructor Create(ACardViewInfo: TcxGridCardViewInfo; AIndex: Integer); reintroduce; virtual;
    destructor Destroy; override;
    procedure BeforeRecalculation; override;
    procedure Calculate(const ABounds: TRect); override;
    function CalculateVisibleCounts(var AVisibleRowCount, APartVisibleRowCount: Integer): Boolean;
    procedure CalculateVisibles;
    function GetHitTest(const P: TPoint): TcxCustomGridHitTest; override;
    function HasExpandButton: Boolean; virtual;
    function HasIndent: Boolean; virtual;
    function HasLimitedHeaderSpace: Boolean; virtual;
    function MouseDown(AHitTest: TcxCustomGridHitTest; AButton: TMouseButton;
      AShift: TShiftState): Boolean; override;

    property CaptionViewInfo: TcxGridCardRowCaptionViewInfo read FCaptionViewInfo;
    property CardViewInfo: TcxGridCardViewInfo read FCardViewInfo;
    property DataViewInfo: TcxGridCardRowDataViewInfo read FDataViewInfo;
    property ExpandButtonAreaBounds: TRect read GetExpandButtonAreaBounds;
    property ExpandButtonBounds: TRect read GetExpandButtonBounds;
    property Expanded: Boolean read GetExpanded write SetExpanded;
    property GridRecord: TcxGridCard read GetGridRecord;
    property GridView: TcxGridCardView read GetGridView;
    property GridViewInfo: TcxGridCardViewViewInfo read GetGridViewInfo;
    property HeaderWidth: Integer read GetHeaderWidth;
    property Height: Integer read GetHeight write FHeight;
    property Hidden: Boolean read GetHidden;
    property IndentBounds: TRect read GetIndentBounds;
    property Index: Integer read FIndex;
    property PartVisible: Boolean read FPartVisible;
    property Row: TcxGridCardViewRow read GetRow;
  end;

  // data row

  TcxGridCardDataRowDataViewInfo = class(TcxGridCardRowDataViewInfo)
  protected
    function CalculateSelected: Boolean; override;
  end;

  TcxGridCardDataRowViewInfo = class(TcxGridCardRowViewInfo)
  protected
    procedure GetCaptionViewParams(var AParams: TcxViewParams; AIgnoreSelection: Boolean); override;
    class function GetDataViewInfoClass: TcxGridCardRowDataViewInfoClass; override;
    procedure GetDataViewParams(var AParams: TcxViewParams); override;
    class function GetSimpleViewParams(ARow: TcxGridCardViewRow; AIsCaption: Boolean): TcxViewParams; override;
  end;

  // caption row

  TcxGridCardCaptionRowCaptionViewInfo = class(TcxGridCardRowCaptionViewInfo)
  protected
    function GetTextAreaBounds: TRect; override;
  end;

  TcxGridCardCaptionRowDataViewInfo = class(TcxGridCardRowDataViewInfo)
  protected
    procedure GetEditViewDataContentOffsets(var R: TRect); override;
    function GetHitTestClass: TcxCustomGridHitTestClass; override;
    function GetTextAreaBounds: TRect; override;
  end;

  TcxGridCardCaptionRowViewInfo = class(TcxGridCardRowViewInfo)
  protected
    class function GetCaptionViewInfoClass: TcxGridCardRowCaptionViewInfoClass; override;
    procedure GetCaptionViewParams(var AParams: TcxViewParams; AIgnoreSelection: Boolean); override;
    class function GetDataViewInfoClass: TcxGridCardRowDataViewInfoClass; override;
    procedure GetDataViewParams(var AParams: TcxViewParams); override;
    procedure GetViewParams(var AParams: TcxViewParams); override;
  end;

  // category row

  TcxGridCardCategoryRowViewInfo = class(TcxGridCardCaptionRowViewInfo)
  protected
    class procedure CheckHeight(ACardViewInfoClass: TcxGridCardViewInfoClass;
      ARow: TcxGridCardViewRow; ARowViewInfo: TcxGridCardRowViewInfo;
      ALookAndFeelPainter: TcxCustomLookAndFeelPainterClass; var AHeight: Integer); override;
    function GetBorderColor(AIndex: TcxBorder): TColor; override;
    function GetBorders: TcxBorders; override;
    function GetBorderWidth(AIndex: TcxBorder): Integer; override;
    procedure GetDataViewParams(var AParams: TcxViewParams); override;
    function GetSeparatorColor: TColor; virtual;
    function HasSeparator: Boolean; overload;
    class function HasSeparator(ACardViewInfoClass: TcxGridCardViewInfoClass;
      ARow: TcxGridCardViewRow): Boolean; overload;
    property SeparatorColor: TColor read GetSeparatorColor;
  public
    function GetHitTest(const P: TPoint): TcxCustomGridHitTest; override;
  end;

  // card scroll buttons

  TcxCustomGridCardScrollButtonViewInfo = class(TcxCustomGridViewCellViewInfo)
  private
    FCardViewInfo: TcxGridCardViewInfo;
    FScrollTimer: TcxTimer;
    procedure ScrollTimerHandler(Sender: TObject);
  protected
    function CalculateHeight: Integer; override;
    function CalculateWidth: Integer; override;
    function CaptureMouseOnPress: Boolean; override;
    function GetHotTrack: Boolean; override;
    function GetIsDownButton: Boolean; virtual; abstract;
    function GetPainterClass: TcxCustomGridCellPainterClass; override;
    procedure InitHitTest(AHitTest: TcxCustomGridHitTest); override;
    procedure Scroll; virtual; abstract;
    procedure StateChanged(APrevState: TcxGridCellState); override;

    procedure StartAutoScrolling;
    procedure StopAutoScrolling;
    property ScrollTimer: TcxTimer read FScrollTimer;
  public
    constructor Create(ACardViewInfo: TcxGridCardViewInfo); reintroduce; virtual;
    property IsDownButton: Boolean read GetIsDownButton;
    property CardViewInfo: TcxGridCardViewInfo read FCardViewInfo;
  end;

  TcxGridCardScrollButtonDownViewInfoClass = class of TcxGridCardScrollButtonDownViewInfo;

  TcxGridCardScrollButtonDownViewInfo = class(TcxCustomGridCardScrollButtonViewInfo)
  protected
    function GetHitTestClass: TcxCustomGridHitTestClass; override;
    function GetIsDownButton: Boolean; override;
    function GetVisible: Boolean; override;
    procedure Scroll; override;
  end;

  TcxGridCardScrollButtonUpViewInfoClass = class of TcxGridCardScrollButtonUpViewInfo;

  TcxGridCardScrollButtonUpViewInfo = class(TcxCustomGridCardScrollButtonViewInfo)
  protected
    function GetHitTestClass: TcxCustomGridHitTestClass; override;
    function GetIsDownButton: Boolean; override;
    function GetVisible: Boolean; override;
    procedure Scroll; override;
  end;

  // card expand button

  TcxGridCardExpandButtonViewInfoClass = class of TcxGridCardExpandButtonViewInfo;

  TcxGridCardExpandButtonViewInfo = class(TcxCustomGridViewCellViewInfo)
  private
    FCardViewInfo: TcxGridCardViewInfo;
  protected
    function CalculateHeight: Integer; override;
    function CalculateWidth: Integer; override;

⌨️ 快捷键说明

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