我对DBGRID进行改造,怎样使他的奇数行为白色,偶数行为黄色。我要写成控件的形式 (30分)

  • 主题发起人 主题发起人 small pig
  • 开始时间 开始时间
S

small pig

Unregistered / Unconfirmed
GUEST, unregistred user!
[red]我对DBGRID进行改造,怎样使他的奇数行为白色,偶数行为黄色。[[/red]8D][8D][8D][8D][8D]
 
参考
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1060338
这个问题旧贴子里有很多,可以自己再去找找
 
给你一段代码试试:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
with dbgrid1 do
begin
if Datasource.dataset.Recno mod 2<>0 then
canvas.brush.color:=clwhite;
else canvas.brush.color:=clyellow;
if(state=[gdSelected,gdFocused])or(state=[gdSelected]) then
canvas.Brush.Color:=clBlue;
DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
end;
 
[brown]我要写成控件的形式[/brown]
 
我没有看过:DBGRID 他的 VCl 原码,估计也是在
Paint 事件那里做的吧!
 
BDE 的 Recno 有时候是不正确的 ADO还不清楚 CLIENTDATASET 就绝对没有问题
 
我们公司不用DBGrid,感觉还不如StringGrid好控制。下面是我对StringGrid控件的
颜色控制,希望对你有帮助。

procedure TMainFrm.StringGridDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
Tmp: Integer;
begin
if (ACol <> 0) and (ARow <> 0) then
begin
Tmp := ARow mod 2;
case Tmp of
0:
begin
StringGrid.Canvas.Brush.Color := clWhite;
Rect.Top := Rect.Top + 1;
Rect.Bottom := Rect.Bottom - 1;
StringGrid.Canvas.FillRect(Rect);
end;
1:
begin
StringGrid.Canvas.Brush.Color := clYellow;
Rect.Top := Rect.Top + 1;
Rect.Bottom := Rect.Bottom - 1;
StringGrid.Canvas.FillRect(Rect);
end;
end;
StringGrid.Canvas.TextOut(Rect.Left + 6, Rect.Top+2,
StringGrid.Cells[ACol, ARow]);
end;
end;
 
我只能说这个:怎么不翻翻以前得笔记啊

算了

作者?: archonwang
标题?: DBGrid 应用全书(全面修订正在进行时)
关键字:
分类?: 开发经验
密级?: 公开
http://www.delphibbs.com/keylife/iblog_show.asp?xid=4091


在这里需要得功能基本上都有了。
 
后退
顶部