在DBGrid中某一单元格的数据如果达到一个定值,如何改变此单元格字体的颜色?
多谢各位高手能够指教。
[此贴子已经被作者于2007-7-8 15:14:46编辑过]
那个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编辑过]