StringGridで文字を入力する際に、表示列がある程度多くなると
現在入力している行が何行目なのかわかりづらくなるので、
フォーカスのある行のFixed列の色を他の行と別な色にして
わかりやすくしたいと思っていますがどのように実現したら
良いでしょうか?
OnDrawCellで色々試してみているのですが、うまく行きません。
おわかりになる方がいらっしゃいましたらご教示願います。
シンプルにこんな感じでどうですか。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;
Kennyさん こんばんわ
解決しました。
StringGrid1SelectCellでRowを保存するのがミソでしたか・・・(^^;
全部DrawCell内で処理しようとしていました・・・(^^;
AROWとROWを比較したりして・・・
ありがとうございました。m(_ _)m
ツイート | ![]() |