首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

怎么根据动态创建的两个字段进行比较,改变cxGrid整行的颜色

2012-12-29 
如何根据动态创建的两个字段进行比较,改变cxGrid整行的颜色?字段为动态产生的并且字段所处位置也不固定,如

如何根据动态创建的两个字段进行比较,改变cxGrid整行的颜色?
字段为动态产生的并且字段所处位置也不固定,如何根据两个字段进行比较,改变整行的颜色呢?
下面的方法,填充了第二个字段的颜色,而不是整行。

void __fastcall TPInvSelForm::tvPartCustomDrawCell(
  TcxCustomGridTableView *Sender, TcxCanvas *ACanvas,
  TcxGridTableDataCellViewInfo *AViewInfo, bool &ADone)
{
  float m,n;
  if(AViewInfo->Item->Caption=="数量")
  {
      m=AViewInfo->GridRecord->Values[AViewInfo->Item->Index];
  }
  if(AViewInfo->Item->Caption=="安全存量")
  {
      n=AViewInfo->GridRecord->Values[AViewInfo->Item->Index];
  }
  if(m<=n)
  {
      ACanvas->Brush->Color=clRed;
      ACanvas->Font->Style = TFontStyles() << fsBold;
  }
}
[解决办法]
这个cxGrid还有没有其他的自画事件?比如DrawColumn之类的?
[解决办法]
delphi代码供参考


12. 如何使满足条件的数据显示不同的颜色?
解决:
var
AYellowStyle: TcxStyle;
procedure TForm1.FormCreate(Sender: TObject);
begin
//行颜色
AYellowStyle := TcxStyle.Create(Self);
AYellowStyle.Color := $0080FFFF;
AYellowStyle.TextColor := clMaroon;
end;
procedure TForm1.cxGrid1DBBandedTableView1StylesGetContentStyle(
Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
begin
if ARecord.Values[cxGrid1DBBandedTableView1Lengthcm.Index] < 81 then
AStyle := AYellowStyle;
end;
这里cxGrid1DBBandedTableView1Lengthcm.Index小于81时就显示黄色
****************************************************************************
14 如何改变列的颜色?
解决:
var
AFirstColumnStyle: TcxStyle;
procedure TForm1.FormCreate(Sender: TObject);
begin
//列颜色
AFirstColumnStyle := TcxStyle.Create(Self);
AFirstColumnStyle.Color := clAqua;
AFirstColumnStyle.TextColor := clBlue;
cxGrid1TableView1.Columns[1].Styles.Content := AFirstColumnStyle;
end;

16. 怎样使鼠标移动时,相应的单元里的文字变色?
解决:
var
FTrackItem: TcxCustomGridTableItem;
FTrackRec: TcxCustomGridRecord;
procedure TForm1.cxGrid1DBTableView1CustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
if (AViewInfo.GridRecord = FTrackRec) and (AViewInfo.Item = FTrackItem) then
begin
ACanvas.Font.Color := clred; //红色字体
ACanvas.Font.Style := [fsUnderline];//带下划线
end;
end;
procedure TForm1.cxGrid1DBTableView1MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
var
AHitTest: TcxCustomGridHitTest;
ATrackItem: TcxCustomGridTableItem;
ATrackRec: TcxCustomGridRecord;
begin
ATrackItem := FTrackItem;
ATrackRec := FTrackRec;
AHitTest := (Sender as TcxGridSite).GridView.ViewInfo.GetHitTest(X, Y);
if AHitTest is TcxGridRecordCellHitTest then
begin
FTrackItem := TcxGridRecordCellHitTest(AHitTest).Item;
FTrackRec := TcxGridRecordCellHitTest(AHitTest).GridRecord;
end


else
begin
FTrackItem := nil;
FTrackRec := nil;
end;
if (ATrackItem <> FTrackItem) or (ATrackRec <> FTrackRec) then
begin
// Invalidate old cell
if ATrackRec <> nil then
ATrackRec.Invalidate(ATrackItem);
// Invalidate new cell
if FTrackRec <> nil then
FTrackRec.Invalidate(FTrackItem);
end;
end;
****************************************************************************


热点排行