DBGRIDのテーブルのある項目に、「成功」と文字が入っているところの行に色をつけたいと思っています。
DRAWCOLUMNのところに
IF FIELDBYNAME('EXAM').ASSTRING = '成功' THEN
BEGIN
CANVAS.BRUSH.COLOR := CLYELLOW;
DEFAULTDRAWCOLUMNCELL(RECT,DATACOL, COLUMN,STATE;
END;
と書き、実行しても色が変わりません。アドバイスいただけないでしょうか?
これでどうですか? DBGridの名前はそちらに合わせてくださいね。
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Column.Field.AsString= '成功' then
DBGrid1.Canvas.Brush.Color:= clYellow;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
ちょいと訂正。
「成功」が入っているセルだけの色を変えるなら
begin
if Column.Field.AsString= '成功' then begin
DBGrid1.Canvas.Brush.Color:= clYellow;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State)
end
end;
「成功」が特定のセルに入っている場合、行全部の色を変えるなら
begin
if Column.Field.DataSet.Fields[どこか].AsString ='成功' then begin
DBGrid1.Canvas.Brush.Color:=clYellow;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end
end;
ですね。この場合の「Fields[どこか]」は、値「成功」を納めているFieldを指定してください。
助かります。
ちなみに、DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);は何を意味しているのでしょうか?参考書などにも載っていたのですが。
>ちなみに、DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);は何を意味しているのでしょうか
DefaultDrawColumnCellイベントは、セルを描くときに発生するのですが、そのタイミングで
Brushの色を変えてももう描いた後なので、もう一度DefaultDrawColumnCellを呼び出して描き直す
訳です。たぶん(^^;。
試しにその行をコメントアウトすると何も起きなくなりますね。
記述どおりに実行したら、うまくいきました。ありがとうございました。
ツイート | ![]() |