程序如下,现在的问题是不管奇行还是偶行,背景色都一样,我需要奇行是一中颜色,偶行是另一中颜色,拜托了,最好在偶的程序上修改偶比较看得懂,拜托拉,有多少分都拿去!
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 := $00FFFFC2;
end;
DBGridEh1.DefaultDrawColumnCell(rect, datacol, column, state);
end;
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 := $00FFFFC2;
end;
DBGridEh1.DefaultDrawColumnCell(rect, datacol, column, state);
end;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if DBGrid1.DataSource.DataSet.RecNo mod 2 = 1 then
begin
DBGrid1.Canvas.Brush.Color := $00FF0000;
end
else
begin
DBGrid1.Canvas.Brush.Color := $00FFFFC2;
end;
DBGrid1.DefaultDrawColumnCell(rect, datacol, column, state);
end;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
if (FDmdTranMaster as TDmdTR_stQuota).QrySecond.RecNo mod 2 = 1 then
DBGridEh1.Canvas.Brush.Color := $00FF0000
else
DBGridEh1.Canvas.Brush.Color := $00FFFFC2;
end;
if (FDmdTranMaster as TDmdTR_stQuota).QrySecond.RecNo mod 2 = 1 then
有问题
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
if gdSelected in State then
Exit;
if TDBGridEh(Sender).DataSource.DataSet.RecNo mod 2 = 1 then
(Sender as TDBGridEh).Canvas.Brush.Color:=clwhite
else
(Sender as TDBGridEh).Canvas.Brush.Color:=$00F2F2F2;
(Sender as TDBGridEh).DefaultDrawColumnCell(Rect,Datacol,Column,State);
end;
____________________________________________________ 弱水三千,我只取一瓢饮
--------------------------------------------------
应该是DBGridEh1.Canvas.Font.Color
begin
DBGridEh1.Canvas.Brush.Color := $00FF0000;
問題就是上面用(FDmdTranMaster as TDmdTR_stQuota).QrySecond
而下面用的則是DBGriD驢唇對不上馬嘴
{ Private declarations }
FArray : Array of String;
FRecord_Str: String;
FDBGird: TDBGridEH;
Procedure MoveRecord(vDataSet : TDataSet ; vOption :TDBOption );
Function IsSaveState(vDataSet : TDataSet):Boolean;
Function GetDataDec :TStrings;
Function GetDataValue(vCBX : TCustomComboBox) : TStrings;
Function GetFieldName(vCBX : TCustomComboBox) : String;
Procedure SaveEvent;
Procedure EditEvent;
Procedure AddEvent;
Procedure CancelEvent;
Procedure DeleteEvent;
Procedure QueryEvent(vDataSet : TADOQuery; vSQLStr ,vFieldName ,
vFieldValue , vCon : String ; vInt : Integer = 0);
procedure DBGridDrawColumnCell(Sender: TObject; const Rect: TRect;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ public
{ Public declarations }
TempDataSet , FADOQuery : TADOQuery;
FSQLStr : String;
FDBGrid : TDBGridEH;
~~~~~~~~~~~~~~~~~~~~~
procedure TTemplteFrm.DBGridDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
if gdSelected in State then
Exit;
if TDBGridEh(Sender).DataSource.DataSet.RecNo mod 2 = 1 then
(Sender as TDBGridEh).Canvas.Brush.Color:=clwhite
else
(Sender as TDBGridEh).Canvas.Brush.Color:=$00F2F2F2;
(Sender as TDBGridEh).DefaultDrawColumnCell(Rect,Datacol,Column,State);
end;
调用:
procedure TDataOutputFrm.Link;
begin
inherited;
FADOQuery := DataModuleFrm.PTCLXSCKSet;
SetDBGrid(PTCLCKDBGrid,DataModuleFrm.PTCLXSCKDS);
SetSQLStr('Select * From CommonOutput where CoState = ''WB'' and CoType = ''PT''');PTCLCKDBGrid.ClassType Is TDBGridEH
____________________________________________________ 弱水三千,我只取一瓢饮
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
inherited;
if DBGridEH1.DataSource.DataSet.RecNo mod 2 = 1 then
begin
DBGridEh1.Canvas.Brush.Color := $00FF0000;
end
else
begin
DBGridEh1.Canvas.Brush.Color := $00FFFFC2;
end;
DBGridEh1.DefaultDrawColumnCell(rect, datacol, column, state);
end;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
if DBGridEH1.DataSource.DataSet.RecNo mod 2 = 1 then
begin
DBGridEh1.Canvas.Brush.Color := $00FF0000;
end
else
begin
DBGridEh1.Canvas.Brush.Color := $00FFFFC2;
end;
DBGridEh1.DefaultDrawColumnCell(rect, datacol, column, state);
end;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState)
var
oldcolor:tcolor;
oldpm:tpenmode;
begin
if DBGridEH1.DataSource.DataSet.RecNo mod 2 = 1 then
DBGridEh1.Canvas.Font.Style := [fsBold];
DBGridEh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
{上面是演示程序的原内容,以下是增加部分}
if DBGridEH1.DataSource.DataSet.RecNo mod 2 = 1 then
begin
oldpm:= MemberGrid.Canvas.pen.mode;
oldcolor:= MemberGrid.Canvas.Brush.color;
DBGridEh1.Canvas.Brush.color:=clyellow;
DBGridEh1.Canvas.pen.mode:=pmmask;
DBGridEh1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
DBGridEh1.Canvas.Brush.color:=oldcolor;
DBGridEh1.Canvas.pen.mode:=oldpm;
end;
,如果按照这个思路,着段程序应该怎么写?
if odd(icol1) = true then
StringGrid1.FloatingFooter.Color := clWhite;//奇
else
StringGrid1.FloatingFooter.Color := clRed;//偶
(Sender as TDBGridEh).Canvas.Brush.Color:=clRed
else
(Sender as TDBGridEh).Canvas.Brush.Color:=clGreen;
DBGridEh1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
这个可以的,我试过才发上来的