掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TStringGridで、gofixedrowclick=True のとき、cell[0,1]をクリックで沈み込まないようにするには (ID:41407)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
こんな感じですかね。 gridを置いてるformの定義の前に下記TStringGridの定義をコピペして使って下さい。 どうも、VCLのバグっぽい感じがしますね。元のソースだと下記の判定が<=とFixedRows、FixedCols以下と判定してるので2行目である(0,1)セルでクリック処理が走ってしまってるようです。 if ((goFixedRowClick in Options) and (CellHit.Y < FixedRows)) or ((goFixedColClick in Options) and (CellHit.X < FixedCols)) then 以下、ソース TStringGrid = class(Vcl.Grids.TStringGrid) protected procedure MouseMove(Shift: TShiftState; X, Y: Integer); override; end; { TStringGrid } procedure TStringGrid.MouseMove(Shift: TShiftState; X, Y: Integer); var CellHit: TGridCoord; begin inherited; if FGridState = gsNormal then begin if (csDesigning in ComponentState) then Exit; // Highlight "fixed" cell MouseToCell(X, Y, CellHit.X, CellHit.Y); if ((goFixedRowClick in Options) and (CellHit.Y < FixedRows)) or ((goFixedColClick in Options) and (CellHit.X < FixedCols)) then begin if (FHotTrackCell.Coord.X <> -1) or (FHotTrackCell.Coord.Y <> -1) then InvalidateCell(FHotTrackCell.Coord.X, FHotTrackCell.Coord.Y); if (CellHit.X <> FHotTrackCell.Coord.X) or (CellHit.Y <> FHotTrackCell.Coord.Y) then begin FHotTrackCell.Coord := CellHit; FHotTrackCell.Pressed := False; InvalidateCell(FHotTrackCell.Coord.X, FHotTrackCell.Coord.Y); end; end else if (FHotTrackCell.Coord.X <> -1) or (FHotTrackCell.Coord.Y <> -1) then begin InvalidateCell(FHotTrackCell.Coord.X, FHotTrackCell.Coord.Y); FHotTrackCell.Coord.X := -1; FHotTrackCell.Coord.Y := -1; FHotTrackCell.Pressed := False; end; end; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.