⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmoneydbgrids.~pas

📁 Delphi功能强的DBGRID构件,支持钱币网格,从DBGRIDEH中继承.比速达的网格构件功能更强大.
💻 ~PAS
📖 第 1 页 / 共 5 页
字号:
    procedure CMDeferLayout(var Message); message CM_DEFERLAYOUT;
    procedure CMDesignHitTest(var Msg: TCMDesignHitTest); message CM_DESIGNHITTEST;
    procedure WMSetCursor(var Msg: TWMSetCursor); message WM_SETCURSOR;
    procedure WMSize(var Message: TWMSize); message WM_SIZE;
    procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL;
    procedure WMHScroll(var Message: TWMHScroll); message WM_HSCROLL;
    procedure WMIMEStartComp(var Message: TMessage); message WM_IME_STARTCOMPOSITION;
    procedure WMSetFocus(var Message: TWMSetFocus); message WM_SetFOCUS;
    procedure WMKillFocus(var Message: TMessage); message WM_KILLFOCUS;
    procedure WMEraseBkgnd(var Message: TWmEraseBkgnd); message WM_ERASEBKGND;
    procedure SetHorzScrollBar(const Value: TCMoneyDBGridScrollBar);
    procedure SetVertScrollBar(const Value: TCMoneyDBGridScrollBar);
    procedure SetOptionsEx(const Value: TCMoneyDBGridOptions);
    procedure WMTimer(var Message: TMessage); message WM_TIMER;
    procedure ClearSelection;
    procedure DoSelection(Select: Boolean; Direction: Integer; MaxDirection, RowOnly: Boolean);
    function UpDownBitmap: TBitmap;
    procedure CMHintShow(var Message: TCMHintShow); message CM_HINTSHOW;  //属性ShowHint为True时触发
    procedure CMHintsShowPause(var Message: TCMHintShowPause); message CM_HINTSHOWPAUSE;
    procedure CMParentColorChanged(var Message: TMessage); message CM_PARENTCOLORCHANGED;
    procedure SetTitleImages(const Value: TCustomImageList);
    function GetCol: Longint;
    procedure SetCol(Value: Longint);
    procedure SetFooterFont(Value: TFont);
    procedure FooterFontChanged(Sender: TObject);
    procedure SetFooterColor(Value: TColor);

    procedure SetShowCalcRow(Value: Boolean);
    procedure SetRedWord(Value: Boolean);
    procedure SetRowSingleColor(Value: TColor);
    procedure SetRowDoubleColor(Value: TColor);
    procedure SetCheckGlyphs(Value: TCSCheckGlyphs);
    procedure SetIndicatorBarWidth(Value: Integer);

    //Raymond 2002-07-22
    procedure SetRowHighlight(Value: Boolean);
  protected
    FUpdateFields: Boolean;
    FAcquireFocus: Boolean;
    FUpdatingEditor: Boolean;
    FCMoneyDBGridState: TCMoneyDBGridState;
    FTitleHeight: Integer;
    FTitleLines: Integer;
    FTitleHeightFull: Integer;

    FMarginText: Boolean;
    FVTitleMargin: Integer;
    FHTitleMargin: Integer;
    FMultiTitle: Boolean;

    FAutoFitColWidths: Boolean;
    FMinAutoFitWidth: Integer;
    FInitColWidth: TList;

    FFooterRowCount: Integer;
    FOnDrawFooterCell: TCSDrawFooterCellEvent;

    FHeadTree: TCSHeadTreeNode;
    FLeafFieldArr: PTLeafCol;
    FNewRowHeight: Integer;
    FRowLines: Integer;
    FDefaultRowChanged: Boolean;
    FAllowWordWrap: Boolean; //如果(RowHeight + 3 > TextHeight)则为True(可以折行显示)
    FSortMarkerImages: TImageList;
    FPressedCol: Longint;
    FPressed: Boolean;
    FTracking: Boolean;
    FSwapButtons: Boolean;
    FOnCheckButton: TCSCheckTitleBtnEvent;
    FOnGetBtnParams: TCSGetBtnParamsEvent;
    FOnTitleBtnClick: TCSTitleBtnClickEvent;
    FInplaceEditorButtonWidth: Integer;
    FFrozenColCount: Integer;
    FVisibleColumns: TCSColumnsList;
    FPressedCell: TGridCoord;
    FIndicatorPressed: Boolean;
    FDownMousePos: TPoint;
    FMoveMousePos: TPoint;
    FMouseShift: TShiftState;
    FTimerActive: Boolean;
    FTimerInterval: Integer;
    FPresedRecord: TBookMarkStr;
    FSelectionAnchorSelected: Boolean;
    FAntiSelection: Boolean;
    FDataTracking: Boolean;
    FSortMarkedColumns: TCSColumnsList;
    FLockPaint: Boolean;
    FLockedBookmark: TBookmarkStr;
    FLookedOffset: Integer;
    FLockEditShow: Boolean;

    function BeginColumnDrag(var Origin, Destination: Integer;
      const MousePt: TPoint): Boolean; override;  //是否能够拖动网格列
    function CanEditShow: Boolean; override;  //是否显示网格列的编辑器
    function CanEditAcceptKey(Key: Char): Boolean; override;  //按键是否能够输入
    function CanEditModify: Boolean; override;  //是否能够修改数值
    function CreateEditor: TInplaceEdit; override;  //构造默认的编辑器
    function SelectCell(ACol, ARow: Longint): Boolean; override;
    procedure DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState); override;

    procedure UpdateText;
    procedure WMCommand(var Message: TWMCommand); message WM_COMMAND;
    procedure UpdateEdit; reintroduce;
    procedure ShowEditor;
    procedure InvalidateEditor;
    procedure WMChar(var Message: TWMChar); message WM_CHAR;  //触发CalcFieldInput事件
    procedure ShowEditorChar(Ch: Char);  //显示并传送数据
    procedure DrawPromptText(ACanvas: TCanvas; ARect: TRect; AColumn: TCSColumn);  //画提示文字

    procedure Paint; override;
    procedure SetFooterRowCount(Value: Integer);
    procedure ClearPainted(ANode: TCSHeadTreeNode);
    function SetChildTreeHeight(ANode: TCSHeadTreeNode): Integer;
    procedure SetTitleHeight(Value: Integer);
    procedure SetTitleLines(Value: Integer);
    procedure SetMarginText(IsMargin: Boolean);
    procedure SetVTitleMargin(Value: Integer);
    procedure SetHTitleMargin(Value: Integer);
    procedure SetMultiTitle(Value: Boolean);
    procedure SetAutoFitColWidths(Value: Boolean);
    procedure SetMinAutoFitWidth(Value: Integer);
    function GetColWidths(Index: Longint): Integer;
    procedure SetColWidths(Index: Longint; Value: Integer);
    procedure SetRowHeight(Value: Integer);
    procedure SetRowLines(Value: Integer);
    procedure RowHeightsChanged; override;
    function StdDefaultRowHeight: Integer;
    procedure StopTracking;
    procedure TrackButton(X, Y: Integer);
    procedure WMCancelMode(var Message: TMessage); message WM_CANCELMODE;
    procedure CMCancelMode(var Message: TCMCancelMode); message CM_CANCELMODE;
    procedure DoTitleClick(ACol: Longint; AColumn: TCSColumn); dynamic;
    procedure CheckTitleButton(ACol: Longint; var Enabled: Boolean); dynamic;
    procedure GetCellParams(Column: TCSColumn; AFont: TFont; var Background: TColor;
      var ReadOnly: Boolean; State: TGridDrawState); dynamic;
    procedure SetFrozenColCount(Value: Integer);
    procedure GetFooterParams(DataCol, Row: Longint; Column: TCSColumn; AFont: TFont;
      var Background: TColor; var Alignment: TAlignment; State: TGridDrawState; var Text: string); dynamic;
    function CanEditModifyText: Boolean;
    function VisibleDataRowCount: Integer;
    procedure TimerScroll;
    procedure StopTimer;
    procedure ResetTimer(Interval: Integer);
    procedure DoSortMarkingChanged; dynamic;
    function RawToDataColumn(ACol: Integer): Integer;
    function DataToRawColumn(ACol: Integer): Integer;
    function AcquireLayoutLock: Boolean;
    procedure BeginLayout;
    procedure BeginUpdate;
    procedure CancelLayout;
    procedure CellClick(Column: TCSColumn); dynamic;
    procedure ColumnMoved(FromIndex, ToIndex: Longint); override;
    procedure ColEnter; dynamic;
    procedure ColExit; dynamic;
    procedure ColWidthsChanged; override;
    function CreateColumns: TCMoneyDBGridColumns; dynamic;
    procedure CreateWnd; override;
    procedure DeferLayout;
    procedure WndProc(var Message: TMessage); override;
    procedure DefineFieldMap; virtual;
    procedure DefineProperties(Filer: TFiler); override;
    procedure TopLeftChanged; override;
    procedure DrawDataCell(const Rect: TRect; Field: TField; State: TGridDrawState); dynamic;
    procedure DrawColumnCell(const Rect: TRect; DataCol: Integer;
      Column: TCSColumn; State: TGridDrawState); dynamic;
    procedure EditButtonClick; dynamic;
    procedure ShowPopupEditor(Column: TCSColumn; X: Integer = Low(Integer);
      Y: Integer = Low(Integer)); dynamic;
    procedure EndLayout;
    procedure EndUpdate;
    function GetEditLimit: Integer; override;  //编辑器最多能够输入字符总数
    function GetEditMask(ACol, ARow: Longint): string; override;
    function GetEditText(ACol, ARow: Longint): string; override;
    function HighlightCell(DataCol, DataRow: Integer; const Value: string;
      var AState: TGridDrawState): Boolean; virtual;
    procedure KeyDown(var Key: Word; Shift: TShiftState); override;
    procedure KeyUp(var Key: Word; Shift: TShiftState); override;
    procedure KeyPress(var Key: Char); override;
    procedure LayoutChanged; virtual;
    procedure LinkActive(Value: Boolean); virtual;
    procedure Loaded; override;
    procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
    procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
    procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
    function DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean; override;
    function DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean; override;
    procedure CalcSizingState(X, Y: Integer; var State: TGridState;
      var Index: Longint; var SizingPos, SizingOfs: Integer; var FixedInfo: TGridDrawInfo); override;
    procedure CalcFrozenSizingState(X, Y: Integer; var State: TCMoneyDBGridState;
      var Index: Longint; var SizingPos, SizingOfs: Integer);
    function FrozenSizing(X, Y: Integer): Boolean;
    procedure DrawSizingLine(HorzGridBoundary, VertGridBoundary: Integer);
    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
    procedure Scroll(Distance: Integer); virtual;
    procedure SetColumnAttributes; virtual;
    procedure SetEditText(ACol, ARow: Longint; const Value: string); override;
    function StoreColumns: Boolean;
    procedure TimedScroll(Direction: TGridScrollDirection); override;
    procedure TitleClick(Column: TCSColumn); dynamic;

    //Raymond 2002-06-06 将该属性描述移动到Public中
    //property Columns: TCMoneyDBGridColumns read FColumns write SetColumns;
    //property DataSource: TDataSource read GetDataSource write SetDataSource;

    property DefaultDrawing: Boolean read FDefaultDrawing write FDefaultDrawing default True;
    property DataLink: TCSGridDataLink read FDataLink;
    property LayoutLock: Byte read FLayoutLock;
    property Options: TDBGridOptions read FOptions write SetOptions
      default [dgEditing, dgTitles, dgColumnResize, dgColLines,
      dgRowLines, dgTabs, dgConfirmDelete, dgCancelOnExit];
    property ParentColor default False;
    property ReadOnly: Boolean read FReadOnly write FReadOnly default False;
    property SelectedRows: TCSBookmarkList read FBookmarks;
    property TitleFont: TFont read FTitleFont write SetTitleFont;
    property UpdateLock: Byte read FUpdateLock;
    property OnColEnter: TNotifyEvent read FOnColEnter write FOnColEnter;
    property OnColExit: TNotifyEvent read FOnColExit write FOnColExit;
    property OnDrawDataCell: TDrawDataCellEvent read FOnDrawDataCell write FOnDrawDataCell;
    property OnDrawColumnCell: TCSDrawColumnCellEvent read FOnDrawColumnCell write FOnDrawColumnCell;
    property OnEditButtonClick: TCSEditButtonClickEvent read FOnEditButtonClick write FOnEditButtonClick;
    property OnColumnMoved: TMovedEvent read FOnColumnMoved write FOnColumnMoved;
    property OnCellClick: TCMoneyDBGridClickEvent read FOnCellClick write FOnCellClick;
    property OnTitleClick: TCMoneyDBGridClickEvent read FOnTitleClick write FOnTitleClick;
    procedure SaveColumnsLayoutProducer(ARegIni: TObject; Section: string; DeleteSection: Boolean);
    procedure RestoreColumnsLayoutProducer(ARegIni: TObject; Section: string; RestoreParams: TCSColumnRestoreParams);
    procedure SaveGridLayoutProducer(ARegIni: TObject; Section: string; DeleteSection: Boolean);
    procedure RestoreGridLayoutProducer(ARegIni: TObject; Section: string; RestoreParams: TCMoneyDBGridRestoreParams);
    function AllowedOperationUpdate: Boolean;
    property FooterFont: TFont read FFooterFont write SetFooterFont;
    property FooterColor: TColor read FFooterColor write SetFooterColor default $00EFEFE7;
    property FooterRowCount: Integer read FFooterRowCount write SetFooterRowCount default 1;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure DefaultDrawColumnCell(const Rect: TRect; DataCol: Integer;
      Column: TCSColumn; State: TGridDrawState);  //没有使用到的代码,供开发者使用
    procedure DefaultDrawFooterCell(const Rect: TRect; DataCol, Row: Integer;
      Column: TCSColumn; State: TGridDrawState);  //没有使用到的代码,供开发者使用
    function ValidFieldIndex(FieldIndex: Integer): Boolean;
    property HeadTree: TCSHeadTreeNode read FHeadTree;
    property LeafFieldArr: PTLeafCol read FLeafFieldArr;
    property EditorMode;
    property FieldCount: Integer read GetFieldCount;
    property Fields[FieldIndex: Integer]: TField read GetFields;
    property SelectedField: TField read GetSelectedField write SetSelectedField;
    property SelectedIndex: Integer read GetSelectedIndex write SetSelectedIndex;

    //Raymond 2002-07-08 完整的是否获得焦点的函数
    function InFocus: Boolean;

    function ExecuteAction(Action: TBasicAction): Boolean; override;
    function UpdateAction(Action: TBasicAction): Boolean; override;
    procedure DefaultHandler(var Msg); override;
    function DataRect: TRect;
    function DataRowCount: Integer;
    procedure InvalidateFooter;
    procedure SaveColumnsLayout(ARegIni: TRegIniFile);
    procedure RestoreColumnsLayout(ARegIni: TRegIniFile; RestoreParams: TCSColumnRestoreParams);
    procedure SaveColumnsLayoutIni(IniFileName: string; Section: string; DeleteSection: Boolean);
    procedure RestoreColumnsLayoutIni(IniFileName: string; Section: string; RestoreParams: TCSColumnRestoreParams);
    procedure SaveGridLayout(ARegIni: TRegIniFile);
    procedure RestoreGridLayout(ARegIni: TRegIniFile; RestoreParams: TCMoneyDBGridRestoreParams);
    procedure SaveGridLayoutIni(IniFileName: string; Section: string; DeleteSection: Boolean);
    procedure RestoreGridLayoutIni(IniFileName: string; Section: string; RestoreParams: TCMoneyDBGridRestoreParams);
    function CellRect(ACol, ARow: Longint): TRect;
    procedure SetSortMarkedColumns;
    procedure SaveBookmark;
    procedure RestoreBookmark;

    property Canvas;
    property Col read GetCol write SetCol;
    property FixedColor default $009CBECE;
    property InplaceEditor;
    property LeftCol;
    property Row;
    property VisibleRowCount;
    property VisibleColCount;
    property IndicatorOffset: Byte read FIndicatorOffset;
    property TitleOffset: Byte read FTitleOffset;
    //property FooterRowCount: Integer read FFooterRowCount write SetFooterRowCount default 0;
    property FrozenColCount: Integer read FFrozenColCount write SetFrozenColCount default 0;
    property OnDrawFooterCell: TCSDrawFooterCellEvent read FOnDrawFooterCell write FOnDrawFooterCell;

    property Columns: TCMoneyDBGridColumns read FColumns write SetColumns;
    property DataSource: TDataSource read GetDataSource write SetDataSource;

    property TitleHeight: Integer read FTitleHeight write SetTitleHeight default 0;
    property TitleLines: Integer read FTitleLines write SetTitleLines default 0;
    property VTitleMargin: Integer read FVTitleMargin write SetVTitleMargin default 10;
    property MultiTitle: Boolean read FMultiTitle write SetMultiTitle default False;
    property AutoFitColWidths: Boolean read FAutoFitColWidths write SetAutoFitColWidths default False;
    property MinAutoFitWidth: Integer read FMinAutoFitWidth write SetMinAutoFitWidth default 0;
    property RowHeight: Integer read FNewRowHeight write SetRowHeight default 0;
    property RowLines: Integer read FRowLines write SetRowLines default 0;
    property OnCheckButton: TCSCheckTitleBtnEvent read FOnCheckButton write FOnCheckButton;
    property OnGetBtnParams: TCSGetBtnParamsEvent read FOnGetBtnParams write FOnGetBtnParams;
    property OnTitleBtnClick: TCSTitleBtnClickEvent read FOnTitleBtnClick write FOnTitleBtnClick;
    property OnGetCellParams: TCSGetCellParamsEvent read FOnGetCellParams write FOnGetCellParams;
    property OnGetFooterParams: TCSGetFooterParamsEvent read FOnGetFooterParams write FOnGetFooterParams;
    property VisibleColumns: TCSColumnsList read FVisibleColumns write FVisibleColumns;
    property HorzScrollBar: TCMoneyDBGridScrollBar read FHorzScrollBar write SetHorzScrollBar;

⌨️ 快捷键说明

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