📄 dbgrideh.pas
字号:
FooterExtent:Integer;
FrozenExtent:Integer;
FullVisBoundary: Integer;
GetExtent: TGetExtentsFunc;
GridBoundary: Integer;
GridCellCount: Integer;
GridExtent: Integer;
LastFullVisibleCell: Longint;
end;
TGridDrawInfoEh = record
Horz, Vert: TGridAxisDrawInfoEh;
end;
TCustomDBGridEh = class(TCustomGrid)
private
FAllowedOperations: TDBGridEhAllowedOperations;
FAllowedSelections: TDBGridEhAllowedSelections;
FAutoDrag, FSelectedCellPressed:Boolean;
FBookmarks: TBookmarkListEh;
FBorderWidth:Integer;
FColumnDefValues: TColumnDefValuesEh;
FColumns: TDBGridColumnsEh;
FDataLink: TGridDataLinkEh;
FDefaultDrawing: Boolean;
FEditActions: TDBGridEhEditActions;
FEditKeyValue: Variant; // For lookup fields and KeyList based column
FEditText: string;
FFlat: Boolean;
FFooterColor: TColor;
FFooterFont: TFont;
FHintFont:TFont;
FHorzScrollBar: TDBGridEhScrollBar;
FInColExit: Boolean;
FIndicators: TImageList;
FInterlinear:Integer;
FLayoutFromDataset: Boolean;
FLayoutLock: Byte;
FOnCellClick: TDBGridEhClickEvent;
FOnColEnter: TNotifyEvent;
FOnColExit: TNotifyEvent;
FOnColumnMoved: TMovedEvent;
FOnColWidthsChanged: TNotifyEvent;
FOnDrawColumnCell: TDrawColumnEhCellEvent;
FOnDrawDataCell: TDrawDataCellEvent;
FOnEditButtonClick: TNotifyEvent;
FOnGetCellParams: TGetCellEhParamsEvent;
FOnGetFooterParams: TGetFooterParamsEvent;
FOnSortMarkingChanged: TNotifyEvent;
FOnSumListRecalcAll: TNotifyEvent;
FOnTitleClick:TDBGridEhClickEvent;
FOptions: TDBGridOptions;
FOptionsEh: TDBGridEhOptions;
FOriginalImeMode: TImeMode;
FOriginalImeName: TImeName;
FReadOnly: Boolean;
FSelecting: Boolean;
FSelection: TDBGridEhSelection;
FSelectionAnchor: TBookmarkStr;
FSelfChangingFooterFont: Boolean;
FSelfChangingTitleFont: Boolean;
FSelRow: Integer;
FSizingIndex: Longint;
FSizingPos, FSizingOfs: Integer;
FSortMarking:Boolean;
FSumListRecalcing:Boolean;
FTitleFont: TFont;
FTitleImages: TCustomImageList;
FTitleOffset, FIndicatorOffset: Byte;
FTopLeftVisible:Boolean;
FUpdateLock: Byte;
FUserChange: Boolean;
FVertScrollBar: TDBGridEhScrollBar;
ThumbTracked: Boolean;
FCompleteKeyPress: String;
function GetCol: Longint;
function AcquireFocus: Boolean;
function GetDataSource: TDataSource;
function GetFieldColumns(const FieldName: String): TColumnEh;
function GetFieldCount: Integer;
function GetFields(FieldIndex: Integer): TField;
function GetRowHeights(Index: Longint): Integer;
function GetSelectedField: TField;
function GetSelectedIndex: Integer;
function IsActiveControl: Boolean;
procedure CalcDrawInfoXYEh(var DrawInfo: TGridDrawInfoEh; UseWidth, UseHeight: Integer);
procedure ChangeGridOrientation(RightToLeftOrientation: Boolean);
procedure ClearSelection;
procedure CMDeferLayout(var Message); message cm_DeferLayout;
procedure CMDesignHitTest(var Msg: TCMDesignHitTest); message CM_DESIGNHITTEST;
procedure CMExit(var Message: TMessage); message CM_EXIT;
procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED;
procedure CMHintShow(var Message: TCMHintShow); message CM_HINTSHOW;
procedure CMHintsShowPause(var Message: TCMHintShowPause); message CM_HINTSHOWPAUSE;
procedure CMParentColorChanged(var Message: TMessage); message CM_PARENTCOLORCHANGED;
procedure CMParentFontChanged(var Message: TMessage); message CM_PARENTFONTCHANGED;
procedure CMSysColorChange(var Message: TMessage); message CM_SYSCOLORCHANGE;
procedure DataChanged;
procedure DoSelection(Select: Boolean; Direction: Integer; MaxDirection,RowOnly: Boolean);
procedure DrawEdgeEh(ACanvas:TCanvas; qrc: TRect; IsDown,IsSelected:Boolean; NeedLeft,NeedRight:Boolean);
procedure EditingChanged;
procedure FooterFontChanged(Sender: TObject);
procedure InternalLayout;
procedure MoveCol(RawCol, Direction: Integer; Select:Boolean);
procedure ReadColumns(Reader: TReader);
procedure RecordChanged(Field: TField);
procedure SetAllowedSelections(const Value: TDBGridEhAllowedSelections);
procedure SetCol(Value: Longint);
procedure SetColumnDefValues(const Value: TColumnDefValuesEh);
procedure SetColumns(Value: TDBGridColumnsEh);
procedure SetDataSource(Value: TDataSource);
procedure SetDrawMemoText(const Value: Boolean);
procedure SetFlat(const Value: Boolean);
procedure SetFooterColor(Value: TColor);
procedure SetFooterFont(Value: TFont);
procedure SetHorzScrollBar(const Value: TDBGridEhScrollBar);
procedure SetIme;
procedure SetOptions(Value: TDBGridOptions);
procedure SetOptionsEh(const Value: TDBGridEhOptions);
procedure SetReadOnly(const Value: Boolean);
procedure SetSelectedField(Value: TField);
procedure SetSelectedIndex(Value: Integer);
procedure SetSumList(const Value: TDBGridEhSumList);
procedure SetTitleFont(Value: TFont);
procedure SetTitleImages(const Value: TCustomImageList);
procedure SetVertScrollBar(const Value: TDBGridEhScrollBar);
procedure TitleFontChanged(Sender: TObject);
procedure UpdateActive;
procedure UpdateData;
procedure UpdateIme;
procedure UpdateRowCount;
procedure UpdateScrollBar;
procedure WMChar(var Message: TWMChar); message WM_CHAR;
procedure WMEraseBkgnd(var Message: TWmEraseBkgnd); message WM_ERASEBKGND; //tmp
procedure WMHScroll(var Message: TWMHScroll); message WM_HSCROLL;
procedure WMIMEStartComp(var Message: TMessage); message WM_IME_STARTCOMPOSITION;
procedure WMKillFocus(var Message: TMessage); message WM_KillFocus;
procedure WMNCCalcSize(var Message: TWMNCCalcSize); message WM_NCCALCSIZE;
procedure WMNCPaint(var Message: TMessage); message WM_NCPAINT;
procedure WMSetCursor(var Msg: TWMSetCursor); message WM_SETCURSOR;
procedure WMSetFocus(var Message: TWMSetFocus); message WM_SetFOCUS;
procedure WMSize(var Message: TWMSize); message WM_SIZE;
procedure WMTimer(var Message: TWMTimer); message WM_TIMER;
procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL;
procedure WriteColumns(Writer: TWriter);
protected
FAcquireFocus: Boolean;
FAllowWordWrap: Boolean; // True if RowHeight + 3 > TextHeight
FAntiSelection:Boolean;
FAutoFitColWidths:Boolean;
FColCellParamsEh: TColCellParamsEh;
FDataTracking:Boolean;
FDBGridEhState: TDBGridEhState;
FDefaultRowChanged: Boolean;
FDownMousePos: TPoint;
FDrawMemoText: Boolean;
FFooterRowCount: Integer;
FFrozenCol:Integer;
FFrozenCols: Integer;
FHeadTree:THeadTreeNode;
FHTitleMargin: Integer;
FIndicatorPressed:Boolean;
FInitColWidth:TList;
FInplaceEditorButtonHeight: Integer;
FInplaceEditorButtonWidth: Integer;
FInplaceSearching:Boolean;
FInplaceSearchingInProcess:Boolean;
FInplaceSearchText:String;
FInplaceSearchTimeOut:Integer;
FInplaceSearchTimerActive:Boolean;
FLeafFieldArr:PTLeafCol;
FLockedBookmark:TBookmarkStr;
FLockPaint:Boolean;
FLookedOffset:Integer;
FMarginText:Boolean;
FMinAutoFitWidth:Integer;
FMouseShift:TShiftState;
FMoveMousePos: TPoint;
FNewRowHeight: Integer;
FOnCheckButton: TCheckTitleEhBtnEvent;
FOnDrawFooterCell:TDrawFooterCellEvent;
FOnGetBtnParams: TGetBtnEhParamsEvent;
FOnTitleBtnClick: TTitleEhClickEvent;
FPresedRecord:TBookMarkStr;
FPressed: Boolean;
FPressedCell:TGridCoord;
FPressedCol: Longint;
FRowLines: Integer;
FRowSizingAllowed : Boolean;
FSelectionAnchorSelected:Boolean;
FSortMarkedColumns:TColumnsEhList;
FSortMarkerImages:TImageList;
FSumList:TDBGridEhSumList;
FSwapButtons: Boolean;
FTimerActive:Boolean;
FTimerInterval:Integer;
FTitleHeight: Integer;
FTitleHeightFull: Integer;
FTitleLines: Integer;
FTracking: Boolean;
FUpdateFields: Boolean;
FUpdatingEditor: Boolean;
FUseMultiTitle: Boolean;
FVisibleColumns:TColumnsEhList;
FVTitleMargin: Integer;
function AcquireLayoutLock: Boolean;
function AllowedOperationUpdate:Boolean;
function CanEditAcceptKey(Key: Char): Boolean; override;
function CanEditModify: Boolean; override;
function CanEditModifyColumn(Index:Integer):Boolean;
function CanEditModifyText: Boolean;
function CanEditShow: Boolean; override;
function CanSelectType(const Value: TDBGridEhSelectionType):Boolean;
function CreateColumns: TDBGridColumnsEh; dynamic;
function CreateEditor: TInplaceEdit; override;
function DataToRawColumn(ACol: Integer): Integer;
function DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean; override;
function DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean; override;
function FrozenSizing(X, Y: Integer): Boolean;
function GetColField(DataCol: Integer): TField;
function GetColWidths(Index: Longint): Integer;
function GetEditLimit: Integer; override;
function GetEditMask(ACol, ARow: Longint): string; override;
function GetEditText(ACol, ARow: Longint): string; override;
function GetFieldValue(ACol: Integer): string;
function GetFooterRowCount: Integer;
function GetRowHeight: Integer;
function GetRowLines: Integer;
function HighlightCell(DataCol, DataRow: Integer; const Value: string;
AState: TGridDrawState): Boolean; virtual;
function InplaceEditorVisible:Boolean;
function RawToDataColumn(ACol: Integer): Integer;
function ReadTitleHeight: Integer;
function ReadTitleLines: Integer;
function SetChildTreeHeight(ANode:THeadTreeNode):Integer;
function StdDefaultRowHeight: Integer;
function StoreColumns: Boolean;
function VisibleDataRowCount: Integer;
procedure BeginLayout;
procedure BeginUpdate;
procedure CalcDrawInfoEh(var DrawInfo: TGridDrawInfoEh);
procedure CalcFixedInfoEh(var DrawInfo: TGridDrawInfoEh);
procedure CalcFrozenSizingState(X, Y: Integer; var State: TDBGridEhState;
var Index: Longint; var SizingPos, SizingOfs: Integer);
procedure CalcSizingState(X, Y: Integer; var State: TGridState;
var Index: Longint; var SizingPos, SizingOfs: Integer;
var FixedInfo: TGridDrawInfo); override;
procedure CancelLayout;
procedure CellClick(Column: TColumnEh); dynamic;
procedure ChangeScale(M, D: Integer); override;
procedure CheckTitleButton(ACol: Longint; var Enabled: Boolean); dynamic;
procedure ClearPainted(node:THeadTreeNode);
procedure CMCancelMode(var Message: TCMCancelMode); message CM_CancelMode;
procedure ColEnter; dynamic;
procedure ColExit; dynamic;
procedure ColumnMoved(FromIndex, ToIndex: Longint); override;
procedure ColWidthsChanged; override;
procedure CreateParams(var Params: TCreateParams); override;
procedure CreateWnd; override;
procedure DeferLayout;
procedure DefineFieldMap; virtual;
procedure DefineProperties(Filer: TFiler); override;
procedure DoSortMarkingChanged; dynamic;
procedure DoTitleClick(ACol: Longint; AColumn: TColumnEh); dynamic;
procedure DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState); override;
procedure DrawColumnCell(const Rect: TRect; DataCol: Integer;
Column: TColumnEh; State: TGridDrawState); dynamic;
procedure DrawDataCell(const Rect: TRect; Field: TField; State: TGridDrawState); dynamic; { obsolete }
procedure DrawSizingLine(HorzGridBoundary, VertGridBoundary: Integer);
procedure EditButtonClick; dynamic;
procedure EndLayout;
procedure EndUpdate;
procedure GetCellParams(Column: TColumnEh; AFont: TFont;
var Background: TColor; State: TGridDrawState ); dynamic;
procedure GetFooterParams(DataCol, Row: Longint; Column: TColumnEh; AFont: TFont;
var Background: TColor; var Alignment : TAlignment; State: TGridDrawState; var Text:String); dynamic;
procedure InvalidateEditor;
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
procedure KeyPress(var Key: Char); override;
procedure KeyUp(var Key: Word; Shift: TShiftState); 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;
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
procedure Paint; override;
procedure PaintButtonControl(DC: HDC; ARect:TRect;ParentColor:TColor;
Style:TDrawButtonControlStyleEh; DownButton:Integer;
Flat,Active,Enabled:Boolean; State: TCheckBoxState);
procedure RecreateInplaceSearchIndicator;
procedure ResetTimer(Interval: Integer);
procedure RestoreColumnsLayoutProducer(ARegIni: TObject; Section: String;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -