求救DBGridEh1中根据奇偶行来改变颜色

leoiv 2004-08-12 05:40:21
刚才发过贴了,可能写的模糊了,现在详细如下:
DBGridEh1中根据奇偶行来改变颜色,我写的程序如下:
procedure TFrmEditTR_stQuota.DBGridEh1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
if ((FDmdTranMaster as TDmdTR_stQuota).QrySecond.RecNo mod 2) = 1 then
begin
DBGridEh1.Canvas.Brush.Color := $00FF0000;
end
else
begin
DBGridEh1.Canvas.Brush.Color := $00FFFFC1;
end;
DBGridEh1.DefaultDrawColumnCell(rect, datacol, column, state);
end;

先在的问题是不管奇偶行都是一个颜色,怎么办啊???求救啊,不染不能下班拉
...全文
194 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghostone 2004-09-06
  • 打赏
  • 举报
回复
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
Var
Row : integer;
begin
Row := DBGrid1.DataSource.DataSet.RecNo;
If (Row mod 2)<>0 Then
DBGrid1.Canvas.Brush.Color:=$00FF0000;
Else
DBGrid1.Canvas.Brush.Color:=$00FFFFC1;
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
你看可以了吗?
ghostone 2004-09-06
  • 打赏
  • 举报
回复
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
Var
Row : integer;
begin
Row := DBGrid1.DataSource.DataSet.RecNo;
If (Row mod 2)<>0 Then
DBGrid1.Canvas.Brush.Color:=clMoneyGreen;
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
leoiv 2004-08-13
  • 打赏
  • 举报
回复
求救啊!!!!
leoiv 2004-08-12
  • 打赏
  • 举报
回复
楼上的,你这么该只是改动了字题的颜色,没有改变行的颜色啊
leoiv 2004-08-12
  • 打赏
  • 举报
回复
并不是鼠标移上去才改变颜色,而是本身就有的颜色,比如说增行的时候底色怎么变红色?
insert2003 2004-08-12
  • 打赏
  • 举报
回复
改动一句

if ((FDmdTranMaster as TDmdTR_stQuota).QrySecond.RecNo mod 2) = 1 then
改为
if (QrySecond.RecNo mod 2)=1 then
insert2003 2004-08-12
  • 打赏
  • 举报
回复
procedure TFrmEditTR_stQuota.DBGridEh1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
if (QrySecond.RecNo mod 2)=1 then
begin
DBGridEh1.Canvas.Brush.Color := $00FF0000;
end
else
begin
DBGridEh1.Canvas.Brush.Color := $00FFFFC1;
end;
DBGridEh1.DefaultDrawColumnCell(rect, datacol, column, state);
end;
leoiv 2004-08-12
  • 打赏
  • 举报
回复
有谁能在我原程序上做改动吗?这样我比较看得清楚,谢谢啊
insert2003 2004-08-12
  • 打赏
  • 举报
回复
if (ADOquery1.RecNo mod 2)=1 then
begin
with (Sender as TDbGrideh).Canvas do
begin
Brush.Color:=$00FFFFC1;
FillRect(Rect);
end;
end;
(Sender as TDbGrideh).DefaultDrawColumnCell(Rect,DataCol,Column,State);
楚人无衣 2004-08-12
  • 打赏
  • 举报
回复
aqStore为dgeStore.DataSource.DataSet;dgeStore为TDBGridEh:
procedure TfrmEhlib.dgeStoreDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
if Odd(aqStore.RecNo + 1) then
begin
dgeStore.Canvas.Brush.Color := clCream;
dgeStore.Canvas.Font.Color := clNavy;
end;
if (Rect.Top = (dgeStore.CellRect(dgeStore.Col, dgeStore.row).Top))
and not (gdFocused in State) then
dgeStore.Canvas.Brush.Color := $00FFBB95;

dgeStore.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧