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

StringGrid控件 记录背景颜色动态改变解决办法

2012-02-27 
StringGrid控件 记录背景颜色动态改变有什么方法可以设置单记录的背景颜色除了自己画还有什么办法自己画的

StringGrid控件 记录背景颜色动态改变
有什么方法可以· 设置单记录的背景颜色·
除了自己画 还有什么办法
自己画的 点到记录 背景就变回去了·
而且 我这里还有点问题 很特殊的
记录位置初始值我设的是1 

我自己在 StringGrid控件的点击事件 
调用画背景函数 画记录的位置 
把位置记录下来

本来应该这样写就没什么问题了· 
 结果运行出来· 有点问题
比如第一次点击 记录3 
再点击 记录3以前的记录 他会把 记录3又画设置的背景
但是我点记录3下面的数据时 背景还是改变了· 就是 记录中的数据 没有了
我用的控件可能有点问题· 这个控件是公司 改过的· 只是和StringGrid控件差不多 但是多了点功能
具体情况我也不知道
这面是 这个画图方面的 代码
colored函数代码
  for(int i=beg;i<=end;i++){ //记录位置
  switch(colorfx){ //匹配方式
  case 0:
  if(WJStringGrid1->Cells[colorzd][i]==colorvc){
  textcolor(i); //调用画背景函数
  }
  break;
  case 1:
  if(WJStringGrid1->Cells[colorzd][i].Pos(colorvc)){
  textcolor(i);
  }
  break;
  case 2:
  if(WJStringGrid1->Cells[colorzd][i]>=colorvc){
  textcolor(i);
  }
  break;
  case 3:
  if(WJStringGrid1->Cells[colorzd][i]<=colorvc){
  textcolor(i);
  }
  break;
  }
  }
}


void TFrm_lq_test2::textcolor(int num) //记录位置
{//画记录背景
  TRect Rect;
  TColor color;
  switch(colorbj){ //选择的颜色
  case 0:color=clWindow;break;
  case 1:color=clRed;break;
  case 2:color=clYellow;break;
  case 3:color=clLime;break;
  case 4:color=clBlue;break;
  }

  for(int i=0;i <=6;i++){ //字段个数
  Rect=WJStringGrid1-> CellRect(i,num);
  // if(num/2*2==num) color=clBackground;
  WJStringGrid1-> Canvas-> Brush-> Color = color;
  WJStringGrid1-> Canvas-> Brush-> Style = bsSolid;
  WJStringGrid1-> Canvas-> FillRect(Rect);
  WJStringGrid1-> Canvas-> Brush-> Color = clBlack;
  WJStringGrid1-> Canvas-> Brush-> Style = bsClear;
  WJStringGrid1-> Canvas-> TextOut(Rect.left+1 ,Rect.top+1,WJStringGrid1->Cells[i][num]);
  }

}


这是StringGird单击事件代码
  if(WJStringGrid1->GetRows()>0){

  colored(wjbeg,wjend);

  wjbeg=WJStringGrid1->Selection.Top;
  wjend=WJStringGrid1->SelectionRowCount+wjbeg-1;
  }



[解决办法]

热点排行