はじめまして。Stringgridで悪戦苦闘しています。どなたか教えて下さい。
上手く説明が出来ないと思いますので表として説明させて頂きます。
==============================================-
項目コード 項目名 分類
→行クリック 1 a 1a←1aの分類の背景塗りが実行
2 b 1a←同上
3 c 2b
4 d 2c
5 e 2e
Stringgridのレコードをクリックした時フィールド内に分類された全てのコードをBrush.Colorを利用して色を変更したいのですが…手法を教えて下さい。
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
IF NOT (gdfixed in state) THEN
begin
IF (Stringgrid1.Cells[5,ARow]=aa) THEN
begin
Stringgrid1.Canvas.Brush.Color := clBackground;
Stringgrid1.Canvas.Font.Color:=clBackground;
Stringgrid1.Canvas.TextRect(Rect,Rect.Left+1,Rect.Top,stringgrid1.Cells[aCol,aRow]);
下略
procedure TForm8.StringGrid1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
rc,cc:integer;
begin
Stringgrid1.MouseToCell(x,y,rc,cc);
IF (rc=-1)OR(cc=-1)OR(cc=0) THEN Exit;
aa:= Stringgrid1.Cells[5,CC];
下略
よろしくお願いします。
MouseDown の最後に、
Stringgrid1.Refresh;
DrawCell はちょっと変えてますが、以下のような感じで
with TStringGrid(Sender).Canvas do begin
if not (gdFixed in State) then begin
if (ACol = 5) and (TStringGrid(Sender).Cells[ACol, ARow] = aa) then begin
Brush.Color := clYellow;
Font.Color:=clRed;
end else begin
Brush.Color := clWhite;
Font.Color:=clBlack;
end;
end;
TextRect(Rect, Rect.Left + 4,Rect.Top + 4, TStringGrid(Sender).Cells[ACol, ARow]);
end;
deldelさん有難うございます。
自分で思い描いたようにできました。
今後ともよろしくお願いします。
ツイート | ![]() |