假设用一个DBctrlgrid连接到一个数据集上,在它的上面放置一个DBEDIT控件,和数据集某个字段连接,大家知道程序运行起来,DBctrlGRID控件将在上面根据记录的多少动态创建DBEIDT,将数据依次排列其中,但是我想根据记录的值作为判断条件,指定某个DBEDIT中的字体颜色,就是因为它是动态创建的,所以我也不知道让程序如何找到对应的DBEDIT,我在属性中设置颜色,全都变了,我就是要找到某个动态创建的DBEDIT,然后单独它的字体赋上颜色,怎么办?我折腾了半天,还不行。这几天没有哪个人的回答能够解决问题,郁闷,难道我的运气不好,高手没看到我的帖子?
then
....
不就可以了
應變不象你說的, 有几個記錄, 就創建多少個 在它上面的DbEdit!只是創建你設置的多少行而已!!!所以, 你要轉個思路!在dataSet的 afterscroll 之類的事件中判斷, 處理
这是一个奇偶行设置颜色的代码。你把条件换成你的条件。就行了。好吧。我没有什么时间帮你就只能这样。有空与我联系。搞不定时再帮你。呵呵。我不要你的分
with dbgrid1 do
begin
if ((state=[gdselected]) or (state=[gdselected,gdfocused])) then
begin
canvas.Font.Color:=clyellow;
canvas.Brush.Color:=clnavy;
end
else
begin
if datasource1.DataSet.RecNo mod 2<>0 then
canvas.Brush.Color:=clwhite
else
canvas.Brush.Color:=$00eaeaea;
end;
defaultdrawcolumncell(rect,datacol,column,state);
end;
最好是改DBctrlGRID中,每一格的背景色,DBctrlGRID里面可以使用DBctrlGRID的Canvas特性
只是不能直接用
procedure TForm1.DBCtrlGrid1PaintPanel(DBCtrlGrid: TDBCtrlGrid;
Index: Integer);
begin if DBCtrlGrid.DataSource.DataSet.FieldByName('stor_id').AsInteger>7067 then
begin
DBCtrlGrid.Canvas.Brush.Color:=clPurple;
DBCtrlGrid.Canvas.Rectangle(DBCtrlGrid.Canvas.ClipRect)
end
else
begin
DBCtrlGrid.Canvas.Brush.Color:=clred;
DBCtrlGrid.Canvas.Rectangle(DBCtrlGrid.Canvas.ClipRect)
end;end;
begin
if DBEdit1.DataSource.DataSet.FieldByName('custno').AsInteger=1231 //换成你的判断条件
then
DBEdit1.Font.Color:=clRed else DBEdit1.Font.Color:=clblue;
end;procedure TForm1.DBCtrlGrid1PaintPanel(DBCtrlGrid: TDBCtrlGrid;
Index: Integer);
begin
if DBCtrlGrid.DataSource.DataSet.FieldByName('custno').AsInteger=1231 //换成你的判断条件
then
DBEdit1.Font.Color:=clRed else DBEdit1.Font.Color:=clblue;
end;看看上面得代码吧,终于有人启发我了,不过也谢谢你们,分还是要散的