请帮忙看一看(20分)

  • 主题发起人 主题发起人 fstao
  • 开始时间 开始时间
F

fstao

Unregistered / Unconfirmed
GUEST, unregistred user!
假如数据库是Paradox7,下面的代码:
procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
with DBGrideh1.Canvas do
begin
if (query1.RecNo mod 2)=0 then
Brush.Color := clwhite
else
Brush.Color:=clGreen;
end;
DBGridEh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

运行时,那么DBGrideh1里显示奇数行是绿色,偶数行是白色。

如果数据库是Mssql7,同样执行上面的代码,那么DBgrideh1显示全部是绿色
的,我知道可能是Query1.RecNo有问题,可能RecNo是识别本地数据库,不识
别SQL数据库,那么如何改上面的代码?
 
Create a TDataSetProvider and a TClientDataSet, then set DateSetProvider1.DataSet:=Query1;
CilentDataSet.ProviderName:=DataSetProvider1;
DataSource1.DataSet:=ClientDataSet1;
ClientDataSet1.Active:=True;

procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
with DBGridEh1.Canvas do
begin
if (ClientDataset1.RecNo mod 2)=0 then
Brush.Color := clwhite
else
Brush.Color:=clGreen;
end;
DBGridEh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
 
简单方法:(注意用在OnDrawColumCell事件上)
procedure TForm1.FormCreate(Sender: TObject);
var I: Integer;
begin
for I:=0 to DBGrid1.FieldCount-1 do
begin
if (I mod 2) = 0 then
DBGrid1.Columns.Color := clTeal
else DBGrid1.Columns.Color := clInfoBk;
end;
end;
 
对于 SQL 数据库, Recno 永远是 0
 
Schow:你这样做不行。
 
多人接受答案了。
 
后退
顶部