stinggrid的问题(50分)

  • 主题发起人 主题发起人 qiusy
  • 开始时间 开始时间
Q

qiusy

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么来改变stringgrid一行的颜色,控制某一列不能被修改?
 
//加入如下代码,实现StringGrid的第四列.其他列非只读
procedure TForm1.StringGrid1SelectCell(Sender: TObject;
ACol,
ARow: Integer;
var CanSelect: Boolean);
begin
// showmessage(IntToStr(ARow)+':'+IntToStr(ACol));
with StringGrid1 do
begin
if ACol = 4 then
Options := Options - [goEditing]
else
Options := Options + [goEditing];
end;
end;
 
////加入如下代码,实现StringGrid的第二行为黄色
procedure TForm1.StringGrid1DrawCell(Sender: TObject;
ACol, ARow: Integer;
Rect: TRect;
State: TGridDrawState);
var
dx, dy, i: byte;
begin
if (arow = 2) and not (acol = 0) then
with stringgrid1 do
begin
canvas.Brush.color := clYellow;
canvas.FillRect(Rect);
canvas.font.color := clblue;
dx := 2;
//调整此值,控制字在网格中显示的水平位置
dy := 2;
//调整此值,控制字在网格中显示的垂直位置
canvas.TextOut(rect.left + dx, rect.top + dy, cells[acol, arow]);
end;
end;
 
你这样控制的只是一个单元格不是整行!
 
你试过吗?
我已试过,没问题!!!
 
我是根据一个cell的值来确定整行的颜色的
if stringgrid1.Cells[Acol,Arow]<>'1' then
with stringgrid1 do
begin
canvas.Brush.color := clYellow;
canvas.FillRect(Rect);
canvas.font.color := clblue;
dx := 2;
//调整此值,控制字在网格中显示的水平位置
dy := 2;
//调整此值,控制字在网格中显示的垂直位置
canvas.TextOut(rect.left + dx, rect.top + dy, cells[acol, arow]);
end
else
begin
canvas.Brush.Color:=clwhite;
canvas.FillRect(rect);
end;

我这样做得到的效果是整个stringgrid的颜色都是黄色的了 (除了单元格的值为1的
单元格的颜色为白色)怎么样才能实现根据一个cell值来确定一行的颜色为黄,
 
你没读懂我给你的代码。
if (arow = 2) and not (acol = 0) then
实现StringGrid的第二行为黄色
 

怎么来改变stringgrid的背景色,白色太难看了,(不是单元格的背景色)
 
设置StringGrid1.Color.
该结贴了!!
 
接受答案了.
 
后退
顶部