掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TStringGridの固定行のみDefaultDrawingをFalseにした時の選択セルの描画について (ID:23727)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
HOta さん、文字 さん、ご指摘ありがとうございます。 https://www.petitmonte.com/bbs/answers?question_id=1861 に紹介されているサンプルコードでは、固定セルの場合のみDefaultDrawingをFalseにしているようなので、なんとかなるか!?と思ったのですが・・・やはり難しいようです。 根本的に考え方を変えて、DefaultDrawingをTrueにしたまま、固定セルの結合ができないものか試してみました。 StringGrid1の設定は以下のようにしています。 DefaultDrawing := True; Ctl3D := False; procedure TForm2.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin Text := StringGrid1.Cells[ACol, ARow]; // 固定セルのみ if gdFixed in State then begin 結合対象セルの描画Rectを計算 // Rect := StringGrid1.Canvas.Brush.Color := StringGrid1.FixedColor; StringGrid1.Canvas.Font.Color := clWhite StringGrid1.Canvas.FillRect(Rect); DrawEdge(StringGrid1.Canvas.Handle, Rect, BDR_RAISEDINNER, BF_RECT); // 文字列描画 DrawText(FGrid.Canvas.Handle, PChar(Text), -1, Rect, DT_SINGLELINE or DT_CENTER or DT_VCENTER); end; end; かなり強引ですが、これでほぼ期待した状態が得られました。 ただCtl3DプロパティをFalseにした影響で、グリッドの表示が従来と異なってしまうので、もう少し検討してみます。 DefaultDrawingをFalseにして、自前でOnDrawCellをコーディングすることも検討したのですが、現在のプロジェクトでは基本的にTStringGridの使用にあたっては「True」にしているので、準じることにしました。 当初の表題の件とは異なってしまいますが、固定セルの結合方法やDefaultDrawingについて、アドバイスいただければと思います。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.