有列字段,名为累计额。我想当些字段中负数的单元格在显示时为红色,正数的就为黑色,我在此事件里写:
procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
if (adoquery2.FieldValues['addupSum']<0) and (adoquery2.State<>dsEdit) then
begin
dbgridEh1.Columns[3].font.color:=clred;
dbgridEh1.DefaultDrawColumnCell(rect,DataCol,Column,State);
end
else
begin
dbgridEh1.Canvas.Font.Color:=clblack;
dbgridEh1.DefaultDrawColumnCell(rect,DataCol,Column,State);
end;end;但是问题来了,当有记录是负数的时,我修改任意一条记录的“累计额”这一单元格的值都会是输入红色的字,但按回车后又恢复黑字。谁能告诉怎么不让它变红字呢?
procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
if (adoquery2.FieldValues['addupSum']<0) and (adoquery2.State<>dsEdit) then
begin
dbgridEh1.Columns[3].font.color:=clred;
dbgridEh1.DefaultDrawColumnCell(rect,DataCol,Column,State);
end
else
begin
dbgridEh1.Canvas.Font.Color:=clblack;
dbgridEh1.DefaultDrawColumnCell(rect,DataCol,Column,State);
end;end;但是问题来了,当有记录是负数的时,我修改任意一条记录的“累计额”这一单元格的值都会是输入红色的字,但按回车后又恢复黑字。谁能告诉怎么不让它变红字呢?
解决方案 »
- 郁闷
- [求助]如何将以下C语言中的声明转换成DELPHI中的声明?
- 这个问题在这儿我都问了三次了,有没有人知呀(关于Chart LineSeries的问题)
- 如何在程序中使dbgrid进入编辑状态?
- 一个主细表问题
- 为什么把控件放在groupbox上时,控件变成不可见?
- 在DELPHI中,怎样发送消息?怎样截获自己发送的消息?
- 安装了一个局域网, 可以编网络程序了?
- 如何用delphi程序将一个文件做为电子邮件的附件发送到指定的信箱?
- 如何解决RXrichedit 的selstart,sellength 不能正常工作的问题?
- 谁有漂亮的按钮或者换肤控件,发一个给我好吗?
- ★★★最后一搏,提供源代码,求高手救我!!
if (gdSelected in State) then dbgridEh1.Canvas.Font.Color := clblack;
dbgridEh1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
begin
dbgridEh1.Columns[3].font.color:=clred;
dbgridEh1.DefaultDrawColumnCell(rect,DataCol,Column,State);
end
else
begin
dbgridEh1.Canvas.Font.Color:=clblack;
dbgridEh1.DefaultDrawColumnCell(rect,DataCol,Column,State);
end;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
if (adoquery2.FieldValues['addupSum']<0) and (adoquery2.State<>dsEdit) then
dbgridEh1.Columns[3].font.color:=clred;
else
dbgridEh1.Canvas.Font.Color:=clblack; if (gdSelected in State) then
Column.Font.Color := clblack;
dbgridEh1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;这样看看行不行吧!
if (adoquery2.FieldValues['addupSum']<0) and (adoquery2.State<>dsEdit) then
begin
dbgridEh1.Columns[3].font.color:=clred;
dbgridEh1.DefaultDrawColumnCell(rect,DataCol,Column,State);
end
else
begin
dbgridEh1.Canvas.Font.Color:=clblack;
dbgridEh1.DefaultDrawColumnCell(rect,DataCol,Column,State);
end;if DBGridEh1.DataSource.DataSet.State in [dsEdit, dsInsert] then
begin
dbgridEh1.Canvas.Font.Color:=clGrean;
dbgridEh1.InplaceEditor.Brush.Color:=clGrean;
dbgridEh1.DefaultDrawColumnCell(rect,DataCol,Column,State);
end;//这样行吗?
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
if (adoquery2.FieldValues['addupSum']<0) and (adoquery2.State=dsBrowse) then
begin
dbgridEh1.Columns[3].font.color:=clred;
dbgridEh1.DefaultDrawColumnCell(rect,DataCol,Column,State);
end
else
begin
dbgridEh1.Canvas.Font.Color:=clblack;
dbgridEh1.DefaultDrawColumnCell(rect,DataCol,Column,State);
end;end;
if (adoquery2.FieldValues['addupSum']<0) and (adoquery2.State<>dsEdit) then
begin
dbgridEh1.Columns[3].font.color:=clred;
dbgridEh1.DefaultDrawColumnCell(rect,DataCol,Column,State);
end
else
begin
dbgridEh1.Canvas.Font.Color:=clblack;
dbgridEh1.DefaultDrawColumnCell(rect,DataCol,Column,State);
end;