StringGridでフォーカスのある行の強調

解決


Saki  2010-11-07 10:17:12  No: 39500

StringGridで文字を入力する際に、表示列がある程度多くなると
現在入力している行が何行目なのかわかりづらくなるので、
フォーカスのある行のFixed列の色を他の行と別な色にして
わかりやすくしたいと思っていますがどのように実現したら
良いでしょうか?
OnDrawCellで色々試してみているのですが、うまく行きません。

おわかりになる方がいらっしゃいましたらご教示願います。


Kenny  2010-11-07 18:43:18  No: 39501

シンプルにこんな感じでどうですか。D7+WinXPで確認。

  private
    { Private 宣言 }
    TargetRow: integer;   //行位置を記憶する変数

//途中省略/////////////////////////////

procedure TForm1.FormCreate(Sender: TObject);
begin
  TargetRow:=1                                  //初期位置の設定
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var i: integer;
begin
  if (ACol=0) and (ARow=TargetRow) then begin   //ACol=0は固定列の位置
    Stringgrid1.Canvas.Brush.Color:=clRed;      //色はお好みで
    StringGrid1.Canvas.FillRect(Rect);
  end;
end;

procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
  TargetRow:=ARow;                              //セルを選んだときに行位置を記憶
  StringGrid1.Repaint                           //再描画
end;


Saki  2010-11-08 05:26:39  No: 39502

Kennyさん  こんばんわ

解決しました。

StringGrid1SelectCellでRowを保存するのがミソでしたか・・・(^^;

全部DrawCell内で処理しようとしていました・・・(^^;
AROWとROWを比較したりして・・・

ありがとうございました。m(_ _)m


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加