diff options
-rw-r--r-- | src/corelib/fpgfx.pas | 8 | ||||
-rw-r--r-- | src/gui/gui_basegrid.pas | 16 | ||||
-rw-r--r-- | src/gui/gui_grid.pas | 1 |
3 files changed, 19 insertions, 6 deletions
diff --git a/src/corelib/fpgfx.pas b/src/corelib/fpgfx.pas index dd9a6d28..cb6c0092 100644 --- a/src/corelib/fpgfx.pas +++ b/src/corelib/fpgfx.pas @@ -311,8 +311,8 @@ function CenterPoint(const Rect: TfpgRect): TPoint; function fpgRect(ALeft, ATop, AWidth, AHeight: integer): TfpgRect; // Debug rountines -procedure PrintRect(var Rect: TRect); -procedure PrintRect(var Rect: TfpgRect); +procedure PrintRect(const Rect: TRect); +procedure PrintRect(const Rect: TfpgRect); procedure PrintCoord(const x, y: TfpgCoord); function PrintCallTrace(const AClassName, AMethodName: string): IInterface; procedure PrintCallTraceDbgLn(const AMessage: string); @@ -489,13 +489,13 @@ begin Result.SetRect(ALeft, ATop, AWidth, AHeight); end; -procedure PrintRect(var Rect: TRect); +procedure PrintRect(const Rect: TRect); begin writeln('Rect left=', Rect.Left, ' top=', Rect.Top, ' right=', Rect.Right, ' bottom=', Rect.Bottom); end; -procedure PrintRect(var Rect: TfpgRect); +procedure PrintRect(const Rect: TfpgRect); begin writeln('Rect left=', Rect.Left, ' top=', Rect.Top, ' right=', Rect.Right, ' bottom=', Rect.Bottom, ' width=', Rect.Width, ' height=', Rect.Height); diff --git a/src/gui/gui_basegrid.pas b/src/gui/gui_basegrid.pas index 90961d09..b18c7673 100644 --- a/src/gui/gui_basegrid.pas +++ b/src/gui/gui_basegrid.pas @@ -42,7 +42,7 @@ type TfpgFocusChangeNotify = procedure(Sender: TObject; ARow, ACol: integer) of object; TfpgRowChangeNotify = procedure(Sender: TObject; ARow: integer) of object; TfpgCanSelectCellEvent = procedure(Sender: TObject; const ARow, ACol: integer; var ACanSelect: boolean) of object; - + TfpgDrawCellEvent = procedure(Sender: TObject; const ARow, ACol: integer; const ARect: TfpgRect; AFlags: integer; var ADefaultDrawing: boolean) of object; // Column 2 is special just for testing purposes. Descendant classes will // override that special behavior anyway. @@ -50,6 +50,7 @@ type private FColResizing: boolean; FDragPos: integer; // used for column resizing + FOnDrawCell: TfpgDrawCellEvent; FResizedCol: integer; // used for column resizing FDefaultColWidth: integer; FDefaultRowHeight: integer; @@ -100,6 +101,7 @@ type function GetColumnCount: integer; virtual; function GetRowCount: integer; virtual; function CanSelectCell(const ARow, ACol: integer): boolean; + function DoDrawCellEvent(ARow, ACol: integer; ARect: TfpgRect; AFlags: integer): boolean; virtual; procedure DoCanSelectCell(const ARow, ACol: integer; var ACanSelect: boolean); procedure DrawCell(ARow, ACol: integer; ARect: TfpgRect; AFlags: integer); virtual; procedure DrawHeader(ACol: integer; ARect: TfpgRect; AFlags: integer); virtual; @@ -131,6 +133,7 @@ type // property ColResizing: boolean read FColResizing write FColResizing; property ColumnWidth[ACol: integer]: integer read GetColumnWidth write SetColumnWidth; property TopRow: integer read FFirstRow write SetFirstRow; + property OnDrawCell: TfpgDrawCellEvent read FOnDrawCell write FOnDrawCell; property OnFocusChange: TfpgFocusChangeNotify read FOnFocusChange write FOnFocusChange; property OnRowChange: TfpgRowChangeNotify read FOnRowChange write FOnRowChange; property OnCanSelectCell: TfpgCanSelectCellEvent read FOnCanSelectCell write FOnCanSelectCell; @@ -264,6 +267,14 @@ begin DoCanSelectCell(ARow, ACol, Result); end; +function TfpgBaseGrid.DoDrawCellEvent(ARow, ACol: integer; ARect: TfpgRect; + AFlags: integer): boolean; +begin + Result := True; + if Assigned(OnDrawCell) then + FOnDrawCell(self, ARow, ACol, ARect, AFlags, Result); +end; + procedure TfpgBaseGrid.DoCanSelectCell(const ARow, ACol: integer; var ACanSelect: boolean); begin @@ -571,7 +582,8 @@ begin end; Canvas.AddClipRect(r); Canvas.FillRectangle(r); - DrawCell(row, col, r, 0); + if DoDrawCellEvent(row, col, r, 0) then + DrawCell(row, col, r, 0); // drawing grid lines if FShowGrid then diff --git a/src/gui/gui_grid.pas b/src/gui/gui_grid.pas index 0f1f0999..326789e3 100644 --- a/src/gui/gui_grid.pas +++ b/src/gui/gui_grid.pas @@ -160,6 +160,7 @@ type property TabOrder; property TopRow; property OnCanSelectCell; + property OnDrawCell; property OnDoubleClick; property OnFocusChange; property OnKeyPress; |