DBGRID的菜鸟问题???

wumaojie 2004-10-26 09:01:18
在DELHPI中用DBGRID如何用颜色显示满足特定条件记录??
...全文
122 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhushudo 2004-10-27
  • 打赏
  • 举报
回复
1.为DBGrid1构件OnDrawDataCell事件编写响应程序:

  procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;Field: TField; State: TGridDrawState);

  begin

   if Table1.Fieldbyname(′Salary′).value<=SpinEdit1.value then

   DBGrid1.Canvas.Brush.Color:=ColorGrid1.ForeGroundColor

   else

   DBGrid1.Canvas.Brush.Color:=ColorGrid1.BackGroundColor;

   DBGrid1.Canvas.FillRect(Rect);

   DBGrid1.Canvas.TextOut(Rect.left+2,Rect.top+2,Field.AsString);

  end;

  这个过程的作用是当SpinEdit1给定的条件得以满足时,如′salary′变量低于或等于SpinEdit1.Value时,DBGrid1记录以ColorGrid1的前景颜色来显示,否则以ColorGrid1的背景颜色来显示。然后调用DBGrid的Canvas的填充过程FillRect和文本输出过程重新绘制DBGrid的画面。

 2.为SpinEdit1构件的OnChange事件编写响应代码:

  procedure TForm1.SpinEdit1Change(Sender: TObject);

  begin

   DBGrid1.refresh;

  end;

  当SpinEdit1构件的值有所改变时,重新刷新DBGrid1。

 3.为ColorGrid1的OnChange事件编写响应代码:

  procedure TForm1.ColorGrid1Change(Sender: TObject);

  begin

   DBGrid1.refresh;

 end;

  当ColorGrid1的值有所改变时,即鼠标的右键或左键单击ColorGrid1重新刷新DBGrid1。

 4.为Form1窗体(主窗体)的OnCreate事件编写响应代码:

  procedure TForm1.FormCreate(Sender: TObject);

  begin

   ColorGrid1.ForeGroundIndex:=9;

   ColorGrid1.BackGroundIndex:=15;

  end;

兵兵 2004-10-27
  • 打赏
  • 举报
回复
在DBGrid的DrawColumnCell事件中:
if 满足某个条件 then
begin
DBGrid1.Canvas.Font.Color:=clRed; //改变字体颜色
DBGrid1.Canvas.Brush.Color:=clRed; //改变背景颜色
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧