StringGridで選択されたセルの背景色を変えるには

解決


よらん  2005-09-19 22:46:21  No: 17626

はじめまして。よらんと申します。
さて件名の件ですが、
StringGrid内で選択されたセルの背景色を変えたいと思っています。
現状では、Onclickで現在の位置を取得しDrowイベントで描写を行う
といった感じでやってますが、これだとマウスクリック時では色が
かわりません。矢印キーで移動させたときのみ変更されます。

これをマウスでクリックしたときでも同じように描写したいと
思っています。

よろしくお願いいたします。

[現状のソース]
var
  GCol              :Integer;    //グローバルStringGrid位置判定用
  GRow              :Integer;    //グローバルStringGrid位置判定用

procedure TfmMenu.StringGrid1Click(Sender: TObject);
begin
  GCol:=TStringgrid(Sender).Col;
  GRow:=TStringgrid(Sender).Row;
end;

procedure TfmMenu.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);

var
  x:integer;
  y:integer;

begin
  x := 2;
  y := 2;

  if ( Arow =GRow ) and  ( Acol = GCol ) then begin
    with Stringgrid1.canvas do begin
      Brush.Color :=clHighlight;
      FillRect(Rect);
      Font.color:=clWhite;
      Font.Size:=16;
      TextOut(Rect.Left + y,Rect.Top + x, Stringgrid1.Cells[ACol,ARow]);
    end;
  end;

end;


よらん  2005-09-19 22:54:54  No: 17627

投稿してから検索して気がつきました。
https://www.petitmonte.com/bbs/answers?question_id=65

ここに記載されている内容と同じ内容でした。
申し訳ありません。


|」`)  2005-09-19 22:56:21  No: 17628

選択されたセルって言うくらいだから、
StringGrid.Col, StringGrid.Row の各プロパティがそのまま選択されたセル

だから、グローバルに宣言する必要なしぢゃありませんかぃのぅ。

  if ( Arow =GRow ) and  ( Acol = GCol ) then begin
    ↓
  if ( Arow =Stringgrid1.Row ) and  ( Acol = Stringgrid1.Col ) then begin


|.・`) ガックシ  2005-09-19 22:58:52  No: 17629

解決済みになった


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

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






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