TStringGridの固定セルをクリックしてOnFixedCellClickイベントを発生させるには?
概要
TStringGridの固定セルをクリックしてOnFixedCellClickイベントを発生させるには、OptionsプロパティにgoFixedRowClickまたはgoFixedColClick、あるいはその両方が選択されている必要があります。
またOnFixedCellClickイベントを発生させる条件は、Vcl.Grid.pasのコードでは以下のように実装されています。
procedure TCustomGrid.MouseUp(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer);
var
..
if (Button = mbLeft) and FHotTrackCell.Pressed and
(FHotTrackCell.Rect.Left <> -1) and (FHotTrackCell.Rect.Top <> -1) and
(((goFixedColClick in FOptions) and (Cell.X < FFixedCols) and (Cell.X >= 0)) or
((goFixedRowClick in FOptions) and (Cell.Y < FFixedRows) and (Cell.Y >= 0))) then
FixedCellClick(Cell.X, Cell.Y);
..
goFixedColClickあるいはgoFixedRowClickをOptionsとして設定する他に以下の条件も必要です。
- FixedCols < ColCount -1
- FixedRows < RowCount -1
例えば、goFixedRowClickのOptionsを有効、かつFixedRows = 1の場合、RowCount = 1に設定すると、OnFixedCellClickイベントは発生しません。この条件では、RowCount >= 2に設定する必要があります。