想让TStringGrid的某一列的底色以红色显示?(100分)

  • 主题发起人 主题发起人 Drastic
  • 开始时间 开始时间
D

Drastic

Unregistered / Unconfirmed
GUEST, unregistred user!
我想让TStringGrid的某一列的底色以红色显示,就写OnDrawCell事件,可是底色填充后整个一列就是一条红色彩带了,也看不到分割线,在上面写字时,字的排列也与其它列的字排列不一致,不知如何是好?请大虾快快帮忙。
 
试试看用控件,CoolControl的Grid可以实现的,而且可以对某一格进行操作
自己写,先让我研究研究,以前写了一个,但是忘记了:(
 
注意传递过来的参数(Rect: TRect; State: TGridDrawState),可以用来控制
画画的动作和效果。
 
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if ((ARow=2) and (ACol=3)) or ((ARow=3) and (ACol=4)) then
with TStringGrid(Sender).Canvas do
begin
Brush.Color := clRed;
FillRect(Rect);
TextOut(Rect.Left, Rect.Top, TStringGrid(Sender).Cells[ACol, ARow]); //自己算算位置吧
end;
end;
 
无情说的对只要(ACol=3)则第3列变红
若对dbgrid,则可如下处理:

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
begin
//if (state.=2) and (acol<>0) then
if (field.FieldNo=2) then//and (table1.RecNo=2)
with TStringGrid(Sender).Canvas do
begin
Brush.Color := clRed;
FillRect(Rect);
TextOut(Rect.Left, Rect.Top, field.AsString); //×&amp;Ocirc;&amp;frac14;&amp;ordm;&amp;Euml;&amp;atilde;&amp;Euml;&amp;atilde;&amp;Icirc;&amp;raquo;&amp;Ouml;&amp;Atilde;°&amp;Eacute;
end;
end;

 
接受答案了.
 
后退
顶部