delphi更改DBGrid没个单元格颜色和显示内容修改格式(编码解码或其他显示格式)

delphi 更改DBGrid 颜色技巧procedure TfrmMain.dgbTagsDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh; State: TGridDrawSt

delphi 更改DBGrid 颜色技巧

procedure TfrmMain.dgbTagsDrawColumnCell(Sender: TObject;

  const Rect: TRect; DataCol: Integer; Column: TColumnEh;

  State: TGridDrawState);

var

  s: string;

  i: Integer;

begin

  if DataCol = 1 then

  begin

    dgbTags.Canvas.Font.Color:=clBlack;//clRed; //设置显示颜色

    //i:=dgbTags.DataSource.DataSet.recno;

    s:=dgbTags.DataSource.DataSet.FieldByName('tagName').AsString; //当前字段值

    s:=UTF8Decode(s); //转码

    dgbTags.Canvas.FillRect(Rect);

    dgbTags.Canvas.TextOut(Rect.Left+2, Rect.Top+2, s);

  end

  else

    dgbTags.DefaultDrawColumnCell(Rect, DataCol, Column, State); //其他按默认

end;

========================================================

定义网格背景颜色

procedure TMainForm.DBGrid1DrawColumnCell(Sender:TObject; 

   const Rect: TRect; DataCol: Integer;Column: TColumn;State: TGridDrawState); 

var i :integer; 

begin 

   if gdSelected in State then Exit; 

// 定义表头的字体和背景颜色: 

      for i :=0to (Sender as TDBGrid).Columns.Count-1 do 

      begin 

         (Sender asTDBGrid).Columns[i].Title.Font.Name :='宋体'; // 字体 

         (Sender asTDBGrid).Columns[i].Title.Font.Size :=9; // 字体大小 

         (Sender as TDBGrid).Columns[i].Title.Font.Color :=$000000ff; // 字体颜色( 红色)  

         (Sender as TDBGrid).Columns[i].Title.Color :=$0000ff00; // 背景色( 绿色) 

      end; 

// 隔行改变网格背景色: 

   if Query1.RecNo mod 2 = 0 then 

      (Sender asTDBGrid).Can vas.Brush.Color := clInfoBk //定义背景颜色 

   else 

      (Sender asTDBGrid).Canvas. Brush.Color := RGB(191, 255, 223); // 定义背景颜色 

// 定义网格线的颜色: 

     DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State); 

   with (Sender as TDBGrid).Canvas do // 画 cell  的边框 

   begin 

      Pen.Color:= $00ff0000; //定义画笔颜色( 蓝色) 

     MoveTo(Rect.Left, Rect.Bottom); // 画笔定位 

     LineTo(Rect.Right, Rect.Bottom); // 画蓝色的横线 

      Pen.Color:= $0000ff00; //定义画笔颜色( 绿色) 

     MoveTo(Rect.Right, Rect.Top); // 画笔定位 

     LineTo(Rect.Right, Rect.Bottom); // 画绿色的竖线 

   end; 

end;

----------------------------------------------------------------------
纵向斑马线效果:实现网格的奇数列和偶数列分别以不同的颜色显示以区别相邻的数据列。

  1. Case DataCol Mod 2 = 0 of  

  2.   True: DbGrid1.Canvas.Brush.Color:= clBlue; file://偶数列用蓝色  

  3.  False: DbGrid1.Canvas.Brush.Color:= clAqua; file://奇数列用浅绿色  

  4. End;  

  5. DbGrid1.Canvas.Pen.Mode:=pmMask;  

  6. DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State); 

--------------------------------------------------------------------

纵向斑马线,同时以红色突出显示当前单元格效果:以突出显示当前选中的字段

  1. Case DataCol Mod 2 = 0 of  

  2. True: DbGrid1.Canvas.Brush.Color:= clBlue; file://偶数列用蓝色  

  3. False: DbGrid1.Canvas.Brush.Color:= clAqua; file://奇数列用浅绿色  

  4. End;  

  5. If ((State = [gdSelected]) or (State=[gdSelectedgdFocused])) then  

  6. If Not DbGrid1.SelectedRows.CurrentRowSelected then  

  7. DbGrid1.Canvas.Brush.Color:=clRed; file://当前选中单元格显示红色  

  8. DbGrid1.Canvas.Pen.Mode:=pmMask;  

  9. DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);  

--------------------------------------------------------------------
在数据网格中以红色突出显示当前选中的行

  1. 设置DbGrid控件的Options属性中的dgRowSelect属性为真,Color属性为clAqua(背景色)  

  2. 在DbGrid的DrawColumnCell事件中编写如下代码:  

  3.   

  4. if ((State = [gdSelected]) or (State=[gdSelected gdFocused])) then  

  5. DbGrid1.Canvas.Brush.color:=clRed; file://当前行以红色显示,其它行使用背景的浅绿色  

  6. DbGrid1.Canvas.pen.mode:=pmmask;  

  7. DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State); 

----------------------------------------------------------------------
行突显的斑马线效果:既突出当前行,又区分不同的列(字段)

  1. if ((State = [gdSelected]) or (State=[gdSelectedgdFocused])) then  

  2. begin  

  3. Case DataCol Mod 2 = 0 of  

  4. True : DbGrid1.Canvas.Brush.color:=clRed; file://当前选中行的偶数列显示红色  

  5. False: DbGrid1.Canvas.Brush.color:=clblue; file://当前选中行的奇数列显示蓝色  

  6. end;  

  7. DbGrid1.Canvas.pen.mode:=pmmask;  

  8. DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);  

---------------------------------------------------------------------
横向斑马线, 同时以红色突显当前行效果

  1. Case Table1.RecNo mod 2 = 0 of file://根据数据集的记录号进行判断  

  2. True : DbGrid1.Canvas.Brush.color:=clAqua; file://偶数行用浅绿色显示  

  3. False: DbGrid1.Canvas.Brush.color:=clblue; file://奇数行用蓝色表示  

  4. end;  

  5. if ((State = [gdSelected]) or (State=[gdSelectedgdFocused])) then file://选中行用红色显示  

  6. DbGrid1.Canvas.Brush.color:=clRed;  

  7. DbGrid1.Canvas.pen.mode:=pmMask;  

  8. DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);  

-----------------------------------------------------------------------
双向斑马线效果:即行间用不同色区分,同时,选中行以纵向斑马线效果区分不同的列

  1. Case Table1.RecNo mod 2 = 0 of file://根据数据集的记录号进行判断  

  2. True : DbGrid1.Canvas.Brush.color:=clAqua; file://偶数行用浅绿色显示  

  3. False: DbGrid1.Canvas.Brush.color:= clblue; file://奇数行用蓝色表示  

  4. end;  

  5. If ((State = [gdSelected]) or (State=[gdSelectedgdFocused])) then  

  6. Case DataCol mod 2 = 0 of  

  7. True : DbGrid1.Canvas.Brush.color:=clRed; file://当前选中行的偶数列用红色  

  8. False: DbGrid1.Canvas.Brush.color:= clGreen; file://当前选中行的奇数列用绿色表示  

  9. end;  

  10. DbGrid1.Canvas.pen.mode:=pmMask;  

  11. DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State); 

--------------------------------------------------------------------------
DELPHI的DBGrid组件属性介绍
DBGrid.是以表格方式显示、编辑数据表中数据的组件,是Delphi中最常用的数据编辑组件, 其常用属性与方法如下: 

    1.常用属性 

    (1)Columns属性 

    该属性用于设置DBGrid组件的列属性。如设置每列的颜色、标题、字体等。单击Columns 属性栏中的省略按钮,打开图6.6所示编辑对话框。该对话框由编辑框与工具栏组成。 

    ①单击工具栏中Add按钮可在编辑框增加一行,同时在DBGrid表中增加新的一列。 

    ②单击工具栏中i Delete Selectecd按钮可删除编辑框中的当前行,同时在DBGrid表中删除对应列。 

    ③单击工具栏畔Add All Fields按钮可将数据集中所有字段都加入编辑框与DBGrid表格中。 

    ④单击工具栏中Restore Default按钮可恢复DBGrid表格列属性的默认值。 

    在编辑框中选择一行,对象监视器窗体就会出现与之对应列的属性,用户可通过对象监视器中的Title属性设置列的颜色、标题、字体。例如,若要将’FB060 1字段名改为“系部编码”,只需将属性Title.Caption改为“系部编码"即可。 

    (2)Fields属性 

    Fields属性用于表示表格当前记录的一维数组,即一维数组元素Fields[O]、Fields[1]、…、Fields[n—1]分别表示当前记录的第1到第n个字段。在例6.2中,DBGrid一FB06的Fields[O]、Fields[1]、Fields[2]属性分别表示FB060 1、TB0602、rB0603字段的内容。 

    (3)FieldCount属性 

    该属性用于表示DBGrid的字段个数,在例6.2中:DBGrid—TB06表格字段数为4,所以DB—Grid—TB06.FieldC ount为4 o

    (4)SelectedField属性

    SelectedField属性用于设置或返回当前选择的字段,如果当前没有选择字段,该属性值为Nil。

    (5)SelectedIndex属性

    SelectedIndex属性用于设置或返回当前选择字段在表格中的索引(即列号)值,索引值从0开始到n一1为止,n为字段总数。Fields[SelectedIndex]表示当前选择字段值。 


相关推荐

[!--temp.pl--]