📄 easygrid_0811.pas
字号:
procedure WMGetDlgCode(var Message: TWMGetDlgCode); message WM_GETDLGCODE;
procedure WMPaste(var Message); message WM_PASTE;
procedure WMCut(var Message); message WM_CUT;
procedure WMClear(var Message); message WM_CLEAR;
protected
procedure CreateParams(var Params: TCreateParams); override;
procedure DblClick; override;
function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer;
MousePos: TPoint): Boolean; override;
function EditCanModify: Boolean; override;
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
procedure KeyPress(var Key: Char); override;
procedure KeyUp(var Key: Word; Shift: TShiftState); override;
procedure ValidateError; override;
procedure BoundsChanged; virtual;
procedure UpdateContents; virtual;
procedure WndProc(var Message: TMessage); override;
public
constructor Create(AOwner: TComponent); override;
procedure Deselect;
procedure Hide;
procedure Invalidate; reintroduce;
procedure Move(const Loc: TRect);
function PosEqual(const Rect: TRect): Boolean;
procedure SetFocus; reintroduce;
procedure UpdateLoc(const Loc: TRect);
function Visible: Boolean;
property ParentGrid: TCustomEasyGrid read FGrid write FGrid;
property Grid: TCustomEasyGrid read FGrid;
property Cell: PCellInfo read FCell write FCell;
end;
TPopupListbox = class(TCustomListbox)
private
FSearchText: String;
FSearchTickCount: Longint;
protected
procedure CreateParams(var Params: TCreateParams); override;
procedure CreateWnd; override;
procedure KeyPress(var Key: Char); override;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
end;
TOnGetPickListItems = procedure(ACol, ARow: Integer; Items: TStrings) of Object;
TInplaceEditList = class(TInPlaceEdit)
private
FButtonWidth: Integer;
FPickList: TCustomListbox;
FActiveList: TWinControl;
FEditStyle: TEditStyle;
FDropDownRows: Integer;
FListVisible: Boolean;
FTracking: Boolean;
FPressed: Boolean;
FPickListLoaded: Boolean;
FOnGetPickListitems: TOnGetPickListItems;
FOnEditButtonClick: TNotifyEvent;
function GetPickList: TCustomListbox;
procedure CMCancelMode(var Message: TCMCancelMode); message CM_CancelMode;
procedure WMCancelMode(var Message: TMessage); message WM_CancelMode;
procedure WMKillFocus(var Message: TMessage); message WM_KillFocus;
procedure WMLButtonDblClk(var Message: TWMLButtonDblClk); message wm_LButtonDblClk;
procedure WMPaint(var Message: TWMPaint); message wm_Paint;
procedure WMSetCursor(var Message: TWMSetCursor); message WM_SetCursor;
protected
procedure BoundsChanged; override;
function ButtonRect: TRect;
procedure CloseUp(Accept: Boolean); dynamic;
procedure DblClick; override;
procedure DoDropDownKeys(var Key: Word; Shift: TShiftState); virtual;
procedure DoEditButtonClick; virtual;
procedure DoGetPickListItems; dynamic;
procedure DropDown; dynamic;
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
procedure ListMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
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 OverButton(const P: TPoint): Boolean;
procedure PaintWindow(DC: HDC); override;
procedure StopTracking;
procedure TrackButton(X,Y: Integer);
procedure UpdateContents; override;
procedure WndProc(var Message: TMessage); override;
public
constructor Create(Owner: TComponent); override;
procedure RestoreContents;
property ActiveList: TWinControl read FActiveList write FActiveList;
property ButtonWidth: Integer read FButtonWidth write FButtonWidth;
property DropDownRows: Integer read FDropDownRows write FDropDownRows;
property EditStyle: TEditStyle read FEditStyle;
property ListVisible: Boolean read FListVisible write FListVisible;
property PickList: TCustomListbox read GetPickList;
property PickListLoaded: Boolean read FPickListLoaded write FPickListLoaded;
property Pressed: Boolean read FPressed;
property OnEditButtonClick: TNotifyEvent read FOnEditButtonClick
write FOnEditButtonClick;
property OnGetPickListitems: TOnGetPickListItems read FOnGetPickListitems
write FOnGetPickListitems;
end;
TInplaceDBEdit = class(TInplaceEditList)
private
FDataList: TDBLookupListBox;
FUseDataList: Boolean;
FLookupSource: TDatasource;
protected
procedure CloseUp(Accept: Boolean); override;
procedure DoEditButtonClick; override;
procedure DropDown; override;
procedure UpdateContents; override;
public
constructor Create(Owner: TComponent); override;
property DataList: TDBLookupListBox read FDataList;
end;
TEasyGridDataLink = class(TDataLink)
private
FGrid: TCustomEasyGrid;
FFieldCount: Integer;
FFieldMap: array of Integer;
FModified: Boolean;
FDataChanged: Boolean;
FInUpdateData: Boolean;
FSparseMap: Boolean;
function GetDefaultFields: Boolean;
function GetFields(I: Integer): TField;
protected
procedure ActiveChanged; override;
procedure DataEvent(Event: TDataEvent; Info: Longint);override;
procedure BuildAggMap;
procedure DataSetChanged; override;
procedure DataSetScrolled(Distance: Integer); override;
procedure FocusControl(Field: TFieldRef); override;
procedure EditingChanged; override;
function IsAggRow(Value: Integer): Boolean; virtual;
procedure RecordChanged(Field: TField); override;
procedure UpdateData; override;
function GetMappedIndex(ColIndex: Integer): Integer;
public
constructor Create(AGrid: TCustomEasyGrid);
destructor Destroy; override;
//function AddMapping(const FieldName: string): Boolean;
procedure ClearMapping;
procedure Modified;
procedure Reset;
property DefaultFields: Boolean read GetDefaultFields;
property FieldCount: Integer read FFieldCount;
property Fields[I: Integer]: TField read GetFields;
property SparseMap: Boolean read FSparseMap write FSparseMap;
property Grid: TCustomEasyGrid read FGrid;
end;
TDrawDBGrid = class(TDBGrid)
private
FCellCol,FCellRow:Integer;
protected
procedure Paint; override;
procedure CMDesignHitTest(var Message:TCMDesignHitTest);message CM_DESIGNHITTEST;
public
published
property CellCol:Integer read FCellCol write FCellCol;
property CellRow:Integer read FCellRow write FCellRow;
//property Columns;
end;
TRunMode = (rmDesignMode,rmLinkDataSet,rmPrint);
TCustomEasyGrid = class(TCustomControl)
private
FRunMode:TRunMode; // add by liuzhigang in 2004.07.29
FDatalink:TEasyGridDataLink;
FDBGridsCount:Integer;
//FSelectedField:TField;
//---------------------------------------------------
FAnchor: TGridCoord; // 鼠标释放坐标
FSelStart, FSelEnd: TGridCoord; // 选择区域起止坐标
FBorderStyle: TBorderStyle; // 边框风格
FCanEditModify: Boolean;
FColCount: Longint;
FColWidths: Pointer;
FTabStops: Pointer;
FColCanSizes: Pointer;
FRowCanSizes: Pointer;
FCurrent: TGridCoord; // 当前网格坐标
FDefaultColWidth: Integer;
FDefaultRowHeight: Integer;
FFixedCols: Integer;
FFixedRows: Integer;
FFixedLineColor: TColor; // 固定区线条颜色
FClientLineColor: TColor; // 活动区线条颜色
FGridLineWidth: Integer;
FOptions: TEasyGridOptions;
FRowCount: Longint;
FRowHeights: Pointer;
FScrollBars: TScrollStyle;
FTopLeft: TGridCoord; // 当前左上角网格坐标
FSizingIndex: Longint; // 被 Sizing 的行(列)号
FSizingPos, FSizingOfs: Integer; // Sizing前鼠标位置与偏移量
FHitTest: TPoint; // 鼠标点击位置
FInplaceEdit: TInplaceEdit;
//FDBGrid: TDrawDBGrid;
FListDBGrid:TList;
//----------------------------------------------------
FInplaceCol, FInplaceRow: Longint;// InplaceEditor 所在行列( -1 隐藏)
FColOffset: Integer; // 只有一个活动列时,该列左边被隐藏部分的宽度
FDefaultDrawing: Boolean;
FEditorMode: Boolean; // InplaceEditor 是否可见
FEditText:String;
//User Define
FCells: TCells; // TList(TList1,TList2,...)
FShowColTitle: Boolean; // 是否显示行列标题
FShowRowTitle: Boolean;
FTitleColor: TColor; // 标题栏颜色
FHighLightColor: TColor; // 高亮度背景颜色
FHighLightTextColor: TColor; // 高亮度文本颜色
FFocusedTitleColor: TColor; // 当前标题栏文本颜色
FDataStyle : TDataStyle;
FAlignMode : TAlignMode;
FShowForeText : Boolean;
FReadOnly : Boolean;
FCellLock : Boolean;
FAutoWordBreak : Boolean;
FCellLineWidth : Integer;
FCellPenStyle : TPenStyle;
FAllowNegative : Boolean;
FTrailingZero : Boolean;
FZeroNull : Boolean;
FThousandSep : Boolean;
FMaxLength : Integer;
FIntLength : Integer;
FDecLength : Integer;
FColor : TColor;
FFontName : string;
FFontSize : Integer;
FFontColor : TColor;
FFontStyle : TFontStyles;
FEditUpdate: Integer;
FAlwaysDrawFocus: Boolean; // 是否总是显示粗焦点框
FClientSizeable: Boolean; // 活动区域能否 Size
FCopyMoveRect: TGridRect; // CopyMove 的范围
FCopyMoveCell: TGridCoord; // CopyMove 开始 Cell
FCopyMoveOffset: TGridCoord; // CopyMove 偏移量
FFillStyle: TFillStyle; // Fill 的方式
FFillRect: TGridRect; // Fill 的范围
FFillCell: TGridCoord; // Fill 开始 Cell
FFillOffset: TGridCoord; // Fill 偏移量
FGridCanCopyMove: Boolean; // 网格是否可以拖动
FGridCanFill: Boolean; // 网格是否可以填充
FShowPopup: Boolean; // 是否显示右键菜单
FAutoUpdate: Boolean; // 修改数据时是否自动更新
FCellPropPageIndex: Integer; // 属性设置窗口的页号
FPageSetupPageIndex: Integer; // 页面设置窗口的页号
FPreviewZoomIndex: Integer; // 预览窗口的缩放比例编号
// *************************************************************************
NewRgn, OldRgn: HRGN; // 剪裁区域
HaveClip: Integer; // 剪裁标志
MainBuffer: array of Char; // 剪贴缓冲区
// *************************************************************************
FOnDrawCell: TDrawCellEvent;
FOnGetEditMask: TGetEditEvent;
FOnGetEditText: TGetEditEvent;
FOnSelectCell: TSelectCellEvent;
FOnSetEditText: TSetEditEvent;
FOnHideEdit: TSetEditEvent;
FOnSetForeText: TSetCellTextEvent;
FOnSetBackText: TSetCellTextEvent;
FBeforeSetCellProp: TBeforeSetCellPropEvent;
FAfterSetCellProp: TAfterSetCellPropEvent;
FOnTopLeftChanged: TNotifyEvent;
FOnInsertCol: TInsertColEvent;
FOnInsertRow: TInsertRowEvent;
FOnDeleteCol: TDeleteColEvent;
FOnDeleteRow: TDeleteRowEvent;
FOnInsertCellRight: TInsertCellRightEvent;
FOnInsertCellDown: TInsertCellDownEvent;
FOnDeleteCellRight: TDeleteCellRightEvent;
FOnDeleteCellDown: TDeleteCellDownEvent;
FOnPasteCells: TPasteCellsEvent;
FOnCutCells: TCutCellsEvent;
FOnCopyMoveCells: TCopyMoveCellsEvent;
FOnFillCells: TFillCellsEvent;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -