stringgrid 共10多列,NNN行,单元格里面的数据是的字符串是0,1,2,根据数字不同单元格显示不同的颜色。比如0的单元格是红色,1的是绿色,当然0,1的颜色都是黑色,如何处理?procedure TForm_gltjxx.StringGrid1DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var i,j :integer;
begin for i:=0 to stringgrid1.RowCount do
begin
for j :=0 to stringgrid1.ColCount do
begin
if stringgrid1.Cells[j,i] = '0' then
begin
//Tstringgrid(sender).Canvas.Brush.Color := cllime;
stringgrid1.Canvas.Brush.Color := cllime;
stringgrid1.Canvas.Font.Color := clred;
//TStringGrid(Sender).Canvas.FillRect(Rect);//补充这一句,否则cell中将会显示一部分旧的数据
//DrawText(TStringGrid(Sender).Canvas.Handle, PChar(stringgrid1.Cells[j,i]), Length(stringgrid1.Cells[j,i]), Rect, DT_CENTER);
end;
if stringgrid1.Cells[j,i] = '1' then
begin
//Tstringgrid(sender).Canvas.Brush.Color := clred;
//TStringGrid(Sender).Canvas.FillRect(Rect);//补充这一句,否则cell中将会显示一部分旧的数据
//DrawText(TStringGrid(Sender).Canvas.Handle, PChar(s), Length(s), Rect, DT_CENTER);
end; end;
end;
end;上面是论坛里面收出来的结果,但是无论怎么弄,都达不到我要的效果。
ARow: Integer; Rect: TRect; State: TGridDrawState);
var i,j :integer;
begin for i:=0 to stringgrid1.RowCount do
begin
for j :=0 to stringgrid1.ColCount do
begin
if stringgrid1.Cells[j,i] = '0' then
begin
//Tstringgrid(sender).Canvas.Brush.Color := cllime;
stringgrid1.Canvas.Brush.Color := cllime;
stringgrid1.Canvas.Font.Color := clred;
//TStringGrid(Sender).Canvas.FillRect(Rect);//补充这一句,否则cell中将会显示一部分旧的数据
//DrawText(TStringGrid(Sender).Canvas.Handle, PChar(stringgrid1.Cells[j,i]), Length(stringgrid1.Cells[j,i]), Rect, DT_CENTER);
end;
if stringgrid1.Cells[j,i] = '1' then
begin
//Tstringgrid(sender).Canvas.Brush.Color := clred;
//TStringGrid(Sender).Canvas.FillRect(Rect);//补充这一句,否则cell中将会显示一部分旧的数据
//DrawText(TStringGrid(Sender).Canvas.Handle, PChar(s), Length(s), Rect, DT_CENTER);
end; end;
end;
end;上面是论坛里面收出来的结果,但是无论怎么弄,都达不到我要的效果。
解决方案 »
- [Fatal Error] AACtrls.pas(1): Program or unit 'AACtrls.pas' recursively uses itself
- 各位朋友,我知道你们只关心技术,其实我也一样
- dbexpress怎样用windows身份验证的方式连接到SQL Server
- 怎么样判别一个字符串里的东西是否是数字(或整数)?
- 有没有wm_Mouseup消息啊?
- 工作丢了,散分
- 我想修改dialogs的系统unit!怎么生效?
- 流文件只能够用一次么?是不是用了一次以后要“归位”- reset?
- ODAC DLL 问题
- 窗口释放问题,高手请进
- Delphi+SPCOMM开发串口通信程序,为什么读取串口数据的速度这么慢呢?
- 有个很少的C++源码急着需要翻译成其它源码,版主、高手请进。
Rect: TRect; State: TGridDrawState);
begin
If (ACol > 0) and (ARow>0) then
begin
if StringGrid1.Cells[ACol, ARow] = '0' then
StringGrid1.Canvas.Brush.color := clRed;
if StringGrid1.Cells[ACol, ARow] = '1' then
StringGrid1.Canvas.Brush.color := clBlue;
StringGrid1.canvas.fillRect(Rect);
StringGrid1.canvas.TextOut(Rect.Left,Rect.Top,StringGrid1.Cells[ACol,ARow]);
end;
end;procedure TForm1.BitBtn1Click(Sender: TObject);
begin
StringGrid1.Cells[1, 1] := '0';
StringGrid1.Cells[1, 2] := '1';
end;