那就这样 if Column.Field.DataType = ftInteger then if DBGrid1.DataSource.DataSet.FieldByName(Column.FieldName).AsInteger in [02,12,23,24,29] then ....
我用的是字符型,我是这样写的:.....(Column.FieldName).Asstring in ['02','12','23','24','29']then ,if Column.Field.DataType = ftInteger then中的ftinteger 已改成ftstring, 但却不行,
字符串不能用作集合里的,只能是有序类型 而且这个有序类型的值还不能超过255 可以这样const cStrArray: array[0..4] of String = ('02', '12', '23', '24', '29');然后写一函数 function IsInStrArray(const S: string): Boolean; var I: Integer; begin Result := False; for I := Low(cStrArray) to High(cStrArray) do if S = cStrArray[I] then begin Result := True; Exit; end; end; 然后 if Column.Field.DataType = ftString then if IsInStrArray(DBGrid1.DataSource.DataSet.FieldByName(Column.FieldName).AsString) then ...
我是这样写的,但还不行,不知错在哪里,请指教!!! procedure Tfr_jjfenxi.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if Column.Field.DataType= ftstring then if IsInStrArray(DBGrid1.DataSource.DataSet.FieldByName(Column.FieldName).AsString) then DBGrid1.Canvas.Brush.Color := clRed; DBGrid1.Canvas.Font.Color:=clWhite; DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; function IsInStrArray(const S: string): Boolean; var I: Integer; const cStrArray: array[0..4] of String =('01','02','07','08','12'); begin Result := False; for I := Low(cStrArray) to High(cStrArray) do if S = cStrArray[I] then begin Result := True; Exit; end; end;
procedure Tfr_jjfenxi.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if Column.Field.DataType= ftstring then if IsInStrArray(DBGrid1.DataSource.DataSet.FieldByName(Column.FieldName).AsString) then begin DBGrid1.Canvas.Brush.Color := clRed; DBGrid1.Canvas.Font.Color:=clWhite; end; DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end;
原来是这样 function IsInStrArray(const S: string): Boolean; var I: Integer; const cStrArray: array[0..4] of String =('01','02','07','08','12'); begin Result := False; for I := Low(cStrArray) to High(cStrArray) do if S = cStrArray[I] then begin Result := True; Exit; end; end;放在 procedure Tfr_jjfenxi.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);的前面或function IsInStrArray(const S: string): Boolean;放在Interface部分
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if Column.Field.DataType = ftInteger then
if DBGrid1.DataSource.DataSet.FieldByName(Column.FieldName).AsInteger mod 2 <> 0 then
DBGrid1.Canvas.Brush.Color := clRed;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
在Implementation下加一
uses DB;
if Column.Field.DataType = ftInteger then
if DBGrid1.DataSource.DataSet.FieldByName(Column.FieldName).AsInteger
in [02,12,23,24,29] then
....
而且这个有序类型的值还不能超过255
可以这样const
cStrArray: array[0..4] of String =
('02', '12', '23', '24', '29');然后写一函数
function IsInStrArray(const S: string): Boolean;
var
I: Integer;
begin
Result := False;
for I := Low(cStrArray) to High(cStrArray) do
if S = cStrArray[I] then
begin
Result := True;
Exit;
end;
end;
然后
if Column.Field.DataType = ftString then
if IsInStrArray(DBGrid1.DataSource.DataSet.FieldByName(Column.FieldName).AsString) then
...
procedure Tfr_jjfenxi.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if Column.Field.DataType= ftstring then
if IsInStrArray(DBGrid1.DataSource.DataSet.FieldByName(Column.FieldName).AsString) then
DBGrid1.Canvas.Brush.Color := clRed;
DBGrid1.Canvas.Font.Color:=clWhite;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
function IsInStrArray(const S: string): Boolean;
var
I: Integer;
const
cStrArray: array[0..4] of String =('01','02','07','08','12');
begin
Result := False;
for I := Low(cStrArray) to High(cStrArray) do
if S = cStrArray[I] then
begin
Result := True;
Exit;
end;
end;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if Column.Field.DataType= ftstring then
if IsInStrArray(DBGrid1.DataSource.DataSet.FieldByName(Column.FieldName).AsString) then
begin
DBGrid1.Canvas.Brush.Color := clRed;
DBGrid1.Canvas.Font.Color:=clWhite;
end;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
function IsInStrArray(const S: string): Boolean;
var
I: Integer;
const
cStrArray: array[0..4] of String =('01','02','07','08','12');
begin
Result := False;
for I := Low(cStrArray) to High(cStrArray) do
if S = cStrArray[I] then
begin
Result := True;
Exit;
end;
end;放在
procedure Tfr_jjfenxi.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);的前面或function IsInStrArray(const S: string): Boolean;放在Interface部分
呵呵
不谢
oni兄
你也是
新年快乐