はじめまして。よらんと申します。
さて件名の件ですが、
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;
投稿してから検索して気がつきました。
https://www.petitmonte.com/bbs/answers?question_id=65
ここに記載されている内容と同じ内容でした。
申し訳ありません。
選択されたセルって言うくらいだから、
StringGrid.Col, StringGrid.Row の各プロパティがそのまま選択されたセル
だから、グローバルに宣言する必要なしぢゃありませんかぃのぅ。
if ( Arow =GRow ) and ( Acol = GCol ) then begin
↓
if ( Arow =Stringgrid1.Row ) and ( Acol = Stringgrid1.Col ) then begin
解決済みになった
ツイート | ![]() |