diff options
-rw-r--r-- | examples/apps/uidesigner/vfdfile.pas | 2 | ||||
-rw-r--r-- | examples/apps/uidesigner/vfdpropeditgrid.pas | 5 | ||||
-rw-r--r-- | examples/gui/edits/edittest.lpi | 1 | ||||
-rw-r--r-- | examples/gui/gridtest/gridtest.lpr | 5 | ||||
-rw-r--r-- | src/gui/gui_basegrid.pas | 24 | ||||
-rw-r--r-- | src/gui/gui_grid.pas | 9 |
6 files changed, 30 insertions, 16 deletions
diff --git a/examples/apps/uidesigner/vfdfile.pas b/examples/apps/uidesigner/vfdfile.pas index 9162d3b0..1f0a96df 100644 --- a/examples/apps/uidesigner/vfdfile.pas +++ b/examples/apps/uidesigner/vfdfile.pas @@ -354,7 +354,7 @@ begin 'uses' + LineEnding + ' SysUtils, Classes, gfxbase, fpgfx, gui_edit, ' + LineEnding + ' gfx_widget, gui_form, gui_label, gui_button,' + LineEnding + - ' gui_listbox, gui_memo, gui_combobox, gui_grid, ' + LineEnding + + ' gui_listbox, gui_memo, gui_combobox, gui_basegrid, gui_grid, ' + LineEnding + ' gui_dialogs, gui_checkbox, gui_tree, gui_trackbar, ' + LineEnding + ' gui_progressbar, gui_radiobutton, gui_tab, gui_menu,' + LineEnding + ' gui_bevel, gui_popupcalendar, gui_gauge;' + LineEnding + LineEnding + diff --git a/examples/apps/uidesigner/vfdpropeditgrid.pas b/examples/apps/uidesigner/vfdpropeditgrid.pas index b14cb590..e469abec 100644 --- a/examples/apps/uidesigner/vfdpropeditgrid.pas +++ b/examples/apps/uidesigner/vfdpropeditgrid.pas @@ -34,6 +34,7 @@ uses gui_memo, gui_combobox, gui_customgrid, + gui_basegrid, gui_grid, gui_checkbox, vfdforms, @@ -56,7 +57,7 @@ type TColumnsGrid = class(TfpgCustomGrid) protected function GetRowCount: Longword; override; - procedure DrawCell(ARow, ACol: Longword; ARect: TfpgRect; AFlags: integer); override; + procedure DrawCell(ARow, ACol: Longword; ARect: TfpgRect; AFlags: TfpgGridDrawState); override; public dbgrid: TfpgStringGrid; constructor Create(AOwner: TComponent); override; @@ -385,7 +386,7 @@ begin end; end; -procedure TColumnsGrid.DrawCell(ARow, ACol: Longword; ARect: TfpgRect; AFlags: integer); +procedure TColumnsGrid.DrawCell(ARow, ACol: Longword; ARect: TfpgRect; AFlags: TfpgGridDrawState); var s: string; x: integer; diff --git a/examples/gui/edits/edittest.lpi b/examples/gui/edits/edittest.lpi index 302cd2c1..e9661391 100644 --- a/examples/gui/edits/edittest.lpi +++ b/examples/gui/edits/edittest.lpi @@ -9,6 +9,7 @@ </Flags> <SessionStorage Value="InProjectDir"/> <MainUnit Value="0"/> + <IconPath Value="./"/> <TargetFileExt Value=""/> </General> <VersionInfo> diff --git a/examples/gui/gridtest/gridtest.lpr b/examples/gui/gridtest/gridtest.lpr index 79ad595d..3209911e 100644 --- a/examples/gui/gridtest/gridtest.lpr +++ b/examples/gui/gridtest/gridtest.lpr @@ -11,6 +11,7 @@ uses gfxbase, fpgfx, gui_form, + gui_basegrid, gui_grid, gui_button, gui_checkbox, @@ -39,7 +40,7 @@ type procedure chkShowGridChange(Sender: TObject); procedure btnQuitClick(Sender: TObject); procedure stringgridDrawCell(Sender: TObject; const ARow, ACol: Longword; - const ARect: TfpgRect; AFlags: integer; var ADefaultDrawing: boolean); + const ARect: TfpgRect; const AFlags: TfpgGridDrawState; var ADefaultDrawing: boolean); protected procedure HandleShow; override; public @@ -78,7 +79,7 @@ begin end; procedure TMainForm.stringgridDrawCell(Sender: TObject; const ARow, - ACol: Longword; const ARect: TfpgRect; AFlags: integer; + ACol: Longword; const ARect: TfpgRect; const AFlags: TfpgGridDrawState; var ADefaultDrawing: boolean); begin if (ACol = 1) and (ARow = 3) then diff --git a/src/gui/gui_basegrid.pas b/src/gui/gui_basegrid.pas index ecccf8ef..cd75e132 100644 --- a/src/gui/gui_basegrid.pas +++ b/src/gui/gui_basegrid.pas @@ -33,10 +33,12 @@ uses type + TfpgGridDrawState = set of (gdSelected, gdFocused, gdFixed); + TfpgFocusChangeNotify = procedure(Sender: TObject; ARow, ACol: Longword) of object; TfpgRowChangeNotify = procedure(Sender: TObject; ARow: Longword) of object; TfpgCanSelectCellEvent = procedure(Sender: TObject; const ARow, ACol: Longword; var ACanSelect: boolean) of object; - TfpgDrawCellEvent = procedure(Sender: TObject; const ARow, ACol: Longword; const ARect: TfpgRect; AFlags: integer; var ADefaultDrawing: boolean) of object; + TfpgDrawCellEvent = procedure(Sender: TObject; const ARow, ACol: Longword; const ARect: TfpgRect; const AFlags: TfpgGridDrawState; var ADefaultDrawing: boolean) of object; // Column 2 is special just for testing purposes. Descendant classes will // override that special behavior anyway. @@ -103,9 +105,9 @@ type function GetColumnCount: Longword; virtual; function GetRowCount: Longword; virtual; function CanSelectCell(const ARow, ACol: Longword): boolean; - function DoDrawCellEvent(ARow, ACol: Longword; ARect: TfpgRect; AFlags: integer): boolean; virtual; + function DoDrawCellEvent(ARow, ACol: Longword; ARect: TfpgRect; AFlags: TfpgGridDrawState): boolean; virtual; procedure DoCanSelectCell(const ARow, ACol: integer; var ACanSelect: boolean); - procedure DrawCell(ARow, ACol: Longword; ARect: TfpgRect; AFlags: integer); virtual; + procedure DrawCell(ARow, ACol: Longword; ARect: TfpgRect; AFlags: TfpgGridDrawState); virtual; procedure DrawHeader(ACol: Longword; ARect: TfpgRect; AFlags: integer); virtual; procedure DrawGrid(ARow, ACol: Longword; ARect: TfpgRect; AFlags: integer); virtual; procedure HandlePaint; override; @@ -288,7 +290,7 @@ begin end; function TfpgBaseGrid.DoDrawCellEvent(ARow, ACol: Longword; ARect: TfpgRect; - AFlags: integer): boolean; + AFlags: TfpgGridDrawState): boolean; begin Result := True; if Assigned(OnDrawCell) then @@ -302,7 +304,7 @@ begin FOnCanSelectCell(self, ARow, ACol, ACanSelect); end; -procedure TfpgBaseGrid.DrawCell(ARow, ACol: Longword; ARect: TfpgRect; AFlags: integer); +procedure TfpgBaseGrid.DrawCell(ARow, ACol: Longword; ARect: TfpgRect; AFlags: TfpgGridDrawState); var s: string; begin @@ -544,7 +546,9 @@ var col: Longword; row: Longword; clipr: TfpgRect; // clip rectangle + drawstate: TfpgGridDrawState; begin + drawstate := []; Canvas.BeginDraw; // inherited HandlePaint; Canvas.ClearClipRect; @@ -613,8 +617,14 @@ begin end; Canvas.AddClipRect(r); Canvas.FillRectangle(r); - if DoDrawCellEvent(row, col, r, 0) then - DrawCell(row, col, r, 0); + // setup drawstate + if FFocused then + Include(drawstate, gdFocused); + if (row = FFocusRow) and (col = FFocusCol) then + Include(drawstate, gdSelected); + + if DoDrawCellEvent(row, col, r, drawstate) then + DrawCell(row, col, r, drawstate); // drawing grid lines if FShowGrid then diff --git a/src/gui/gui_grid.pas b/src/gui/gui_grid.pas index 7a869299..c5bd8bd3 100644 --- a/src/gui/gui_grid.pas +++ b/src/gui/gui_grid.pas @@ -35,6 +35,7 @@ uses SysUtils, gfxbase, fpgfx, + gui_basegrid, gui_customgrid; type @@ -74,7 +75,7 @@ type FFixedFont: TfpgFont; protected function GetRowCount: Longword; override; - procedure DrawCell(ARow, ACol: Longword; ARect: TfpgRect; AFlags: integer); override; + procedure DrawCell(ARow, ACol: Longword; ARect: TfpgRect; AFlags: TfpgGridDrawState); override; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; @@ -123,7 +124,7 @@ type procedure DoDeleteColumn(ACol: integer); override; procedure DoSetRowCount(AValue: integer); override; function DoCreateColumnClass: TfpgStringColumn; reintroduce; override; - procedure DrawCell(ARow, ACol: Longword; ARect: TfpgRect; AFlags: integer); override; + procedure DrawCell(ARow, ACol: Longword; ARect: TfpgRect; AFlags: TfpgGridDrawState); override; { AIndex is 1-based. } property Columns[AIndex: Longword]: TfpgStringColumn read GetColumns; public @@ -243,7 +244,7 @@ begin Result := FFileList.Count; end; -procedure TfpgFileGrid.DrawCell(ARow, ACol: Longword; ARect: TfpgRect; AFlags: integer); +procedure TfpgFileGrid.DrawCell(ARow, ACol: Longword; ARect: TfpgRect; AFlags: TfpgGridDrawState); const modestring: string[9] = 'xwrxwrxwr'; // must be in reverse order var @@ -519,7 +520,7 @@ begin end; procedure TfpgCustomStringGrid.DrawCell(ARow, ACol: Longword; ARect: TfpgRect; - AFlags: integer); + AFlags: TfpgGridDrawState); var x: TfpgCoord; begin |