注册 登录
编程论坛 C++ Builder

改变数据颜色

zkqbp 发布于 2007-07-08 15:01, 1760 次点击
请教各位高手
在DBGrid中某一单元格的数据如果达到一个定值,如何改变此单元格字体的颜色?
多谢各位高手能够指教。

[此贴子已经被作者于2007-7-8 15:14:46编辑过]

3 回复
#2
热情依然2007-07-29 16:03

好像就算响应那个 DrawColumnCell 还是只能改某一列的字体颜色

#3
zkqbp2007-08-06 20:22

斑竹,我长期出差在外,刚看到你的回帖,不好意思。

我只是想改变某一个单元格的颜色,不是一列的颜色。

DrawColumnCell是函数吗?在我的问题中如何用呢?多谢帮助

#4
热情依然2007-08-07 20:43

那个DrawColumnCell 都只是可以根据条件改一行的颜色

void __fastcall TSaleEditBillForm::dbgdDetailDrawColumnCell(
TObject *Sender, const TRect &Rect, int DataCol, TColumn *Column,
TGridDrawState State)
{
if (dm_Main->cdsSaleDRowKind->AsInteger != 0 &&
dm_Main->cdsSaleDRowKind->AsInteger != 1){
dbgdDetail->Canvas->Brush->Color = clMoneyGreen;
dbgdDetail->Canvas->FillRect(Rect);
}

dbgdDetail->DefaultDrawColumnCell(Rect, DataCol, Column, State);
}

所以要改某一单元格的好像不可能,因为这个是自动从第一行扫描到最后一行的
除非你可以获得某一单元格的焦点,然后获得其中的句柄,就可以用API来改

//以下是我开发中的部分代码(是找某一单元格的句柄)
HANDLE hMainForm = FindWindow("TMainForm",NULL);
HANDLE hMdiForm = FindWindowEx(hMainForm,NULL,"MDIClient",NULL);
HANDLE hSaleEditBill = FindWindowEx(hMdiForm,NULL,"TSaleEditBillForm","编辑销售单据");
HANDLE hDBGrid = FindWindowEx(hSaleEditBill,NULL,"TDBGrid",NULL);
HANDLE hDBGridCell = FindWindowEx(hDBGrid, NULL,"TDBGridInplaceEdit",NULL);


//该代码未进行测试

HDC hdc = GetDC(hDBGridCell );
SetTextColor(hdc,RGB(100,67,200));
ReleaseDC(hDBGridCell,hdc);

但是这个估计都不是楼主想要的

[此贴子已经被作者于2007-8-7 20:51:08编辑过]

1