请教高手,如何在DBGRID中对某一Column进行重画,其内容包括用不同颜色表示的分隔线?主要是想实现类似于会计帐本里的对金额的分隔一样。
解决方案 »
- fastReport中RichView中个别字加下划线
- delphi 写的ocx文件 放到asp.net里面是灰色的
- 动态分配控件的方法!!!!!!!!!!!!!
- image 显示为图闪动问题
- 如何编程拦截80端口的所有数据包?
- 如何取得桌面客户区的高?(不包括下面的开始菜单/任务栏的高度)
- delphi6 and delphi2005能否同时安装到一台电脑上?
- datamodule中DataModuleCreate为什么不执行?
- 用DBMAGINGE怎么存取ACCESS里的图片(BMP,JPG),急,几天没解决的问题
- 利用pagecontrol实现多页面后的快捷键问题
- 关于websnap+intraweb+apache的问题,确实很需要帮助
- 请教这个sql语句有没有错,错了应该怎样写
procedure Tfrm_main.dbgmainDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if ((sender as Tdbgrid).DataSource.DataSet.IsEmpty) or (not (sender as Tdbgrid).DataSource.DataSet.Active) then exit;
if Column.FieldName = 'RecNo' then
begin
with Sender as TDBGrid do
begin
Canvas.Font.Color:=clRed;
canvas.Brush.Color:=clwhite;
canvas.fillrect(rect);
Canvas.TextRect(Rect,rect.Left+17,Rect.Top+2,inttostr(qry_main.RecNo));
end;
end;
if Column.FieldName = 'RWSWJM' then
begin
with Sender as TDBGrid do
begin
Canvas.Font.Color:=clblue;
canvas.Brush.Color:=clwhite;
canvas.fillrect(rect);
if qry_main.FieldByName('RWSWJM').AsString<>'' then
Canvas.TextRect(Rect,rect.Left+8,Rect.Top+2,'★');
end;
end;
end;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
beginif gdSelected in State then
exit;if SQLClientDataSet.RecNo mod 2 = 0 then
DBGrid1.Canvas.Brush.Color := clRed;
else
DBGrid1.Canvas.Brush.Color := clBlue;DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
DBGRID的DrawColumnCell事件都能达到你的目的
单元格
某行
某列
分隔线
等等
都可以的
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
beginif gdSelected in State then
exit;if SQLClientDataSet.RecNo mod 2 = 0 then
DBGrid1.Canvas.Brush.Color := clRed;
else
DBGrid1.Canvas.Brush.Color := clBlue;DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
==========================================
正确,这里多了