现在stringgrid里面已经有数据了.
我需要选择一条记录,改变该行其颜色,
再选择一条记录,也改变其颜色.
这样我就可以来分辨那些已经选择过了。.
可是我遇到问题是1:怎么改变行的颜色.
2:怎么知道当前行是什么颜色
3:在第二次改变颜色的时候,原来已经改变的颜色不会消失
我需要选择一条记录,改变该行其颜色,
再选择一条记录,也改变其颜色.
这样我就可以来分辨那些已经选择过了。.
可是我遇到问题是1:怎么改变行的颜色.
2:怎么知道当前行是什么颜色
3:在第二次改变颜色的时候,原来已经改变的颜色不会消失
解决方案 »
- 关于二进制文件操作的问题
- 弹出窗体关闭后,主窗体跑到其他程序窗口后面去了???
- 做了一个基于MIDAS的DLL服务器,调试时遇到问题,每次用完服务器后,DLL好像还在内存中,导致无法重新编译
- 请问checkbox,radiobutton的ctl3d属性怎么无效?答对绝对给分
- 主从表的增加、删除、编辑问题,请帮手,在线等……
- 大家请帮我看看,这该如何做,一个小问题..
- 提问!
- 怎么利用代码调用webbrowser控件中右键菜单的查看源代码功能
- 小第有一个做向导的程序,可是有点问题,请大家帮忙. 附:源程序
- 网络方面请教
- 新手问路1:ADO连接ACCESS后,如何将记录显示在ListBox中??
- 作为程序员,在公司里面,有权保证自己的代码隐私吗?
ADvstringgrid.rowcolor[1]:=clRed
ondrawcell()
s := (Sender AS TStringGrid).Cells[acol,arow];
(Sender AS TStringGrid).Canvas.Font.Color := clBlack; If (Rect.Top<currenty) and (currenty<Rect.Bottom) Then
(Sender AS TStringGrid).Canvas.Brush.Color :=rgb(167,221,198);
else
(Sender AS TStringGrid).Canvas.Brush.Color := clWhite;
End; (Sender AS TStringGrid).Canvas.FillRect(Rect);
(Sender AS TStringGrid).Canvas.TextOut(0,0,s);
type TMyGrid=class(TStringGrid)
end;假设该grid叫 StringGrid1 ,它的DefaultDrawing属性必须为true
写它的OnDrawCell事件:if(ARow=2)and(ACol>0)then //将第2行的背景变成红色
begin
StringGrid1.Canvas.Brush.Color:=clRed;
StringGrid1.Canvas.FillRect(Rect); //画红色
StringGrid1.OnDrawCell:=nil; //设置为nil,下面就不会无限递归
try
TMyGrid(StringGrid1).DrawCell(ACol,ARow,Rect,State);
finally
StringGrid1.OnDrawCell:=StringGrid1DrawCell; //恢复事件的地址
end;
end;
void __fastcall Tfrm_Repaired::DBGrid1DrawColumnCell(TObject *Sender,
const TRect &Rect, int DataCol, TColumn *Column,
TGridDrawState State)
{if(qry_SBXFSQD->FieldByName("άÐÞÈËÔ±")->AsString == "")
{
DBGrid1->Canvas->Brush->Color = clSkyBlue;
DBGrid1->Canvas->FillRect(Rect);
}
else
{
DBGrid1->Canvas->Brush->Color = clMoneyGreen;
DBGrid1->Canvas->FillRect(Rect);
}
DrawText(DBGrid1->Canvas->Handle,
Column->Field->Text.c_str(),
-1,
(RECT*)&Rect,
DT_SINGLELINE | DT_VCENTER |DT_CENTER);
}