summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/corelib/fpgfx.pas8
-rw-r--r--src/gui/gui_basegrid.pas16
-rw-r--r--src/gui/gui_grid.pas1
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;