生活随笔
收集整理的這篇文章主要介紹了
delphi 更改DBGrid 颜色技巧
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、根據條件更改某一單元格的顏色
?
[delphi]?view plaincopy
procedure?TMainFrm.First_DGDrawColumnCell(Sender:?TObject;????const?Rect:?TRect;?DataCol:?Integer;?Column:?TColumn;????State:?TGridDrawState);??begin????if?DM.FirstListStatus.AsString='生產'?then?begin???????First_DG.Canvas.Font.Color:=clGreen?????end????else?begin???????First_DG.Canvas.Font.Color:=clRed;????end;????if?DataCol?=?4?then???????First_DG.DefaultDrawColumnCell(Rect,DataCol,Column,State);??end;?? ?
2、多種改變方式
?
[delphi]?view plaincopy
<span?style="color:#000000;">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?:=0?to?(Sender?as?TDBGrid).Columns.Count-1?do??????begin????????(Sender?as?TDBGrid).Columns[i].Title.Font.Name?:='宋體';???????(Sender?as?TDBGrid).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?as?TDBGrid).Canvas.Brush.Color?:=?clInfoBk???else??????(Sender?as?TDBGrid).Canvas.Brush.Color?:=?RGB(191,?255,?223);?DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);????with?(Sender?as?TDBGrid).Canvas?do???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;</span>??
?
?
?
3、縱向斑馬線效果:實現網格的奇數列和偶數列分別以不同的顏色顯示以區別相鄰的數據列。
?
[delphi]?view plaincopy
Case?DataCol?Mod?2?=?0?of????True:?DbGrid1.Canvas.Brush.Color:=?clBlue;?file:?False:?DbGrid1.Canvas.Brush.Color:=?clAqua;?file:End;??DbGrid1.Canvas.Pen.Mode:=pmMask;??DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);?? ?
4、縱向斑馬線,同時以紅色突出顯示當前單元格效果:以突出顯示當前選中的字段。
[delphi]?view plaincopy
Case?DataCol?Mod?2?=?0?of??True:?DbGrid1.Canvas.Brush.Color:=?clBlue;?file:False:?DbGrid1.Canvas.Brush.Color:=?clAqua;?file:End;??If?((State?=?[gdSelected])?or?(State=[gdSelectedgdFocused]))?then??If?Not?DbGrid1.SelectedRows.CurrentRowSelected?then??DbGrid1.Canvas.Brush.Color:=clRed;?file:DbGrid1.Canvas.Pen.Mode:=pmMask;??DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);?? ?
5、在數據網格中以紅色突出顯示當前選中的行。
?
?
[delphi]?view plaincopy
設置DbGrid控件的Options屬性中的dgRowSelect屬性為真,Color屬性為clAqua(背景色)??在DbGrid的DrawColumnCell事件中編寫如下代碼:????if?((State?=?[gdSelected])?or?(State=[gdSelected?gdFocused]))?then??DbGrid1.Canvas.Brush.color:=clRed;?file:DbGrid1.Canvas.pen.mode:=pmmask;??DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);?? ?
6、行突顯的斑馬線效果:既突出當前行,又區分不同的列(字段)。
?
?
[delphi]?view plaincopy
if?((State?=?[gdSelected])?or?(State=[gdSelectedgdFocused]))?then??begin??Case?DataCol?Mod?2?=?0?of??True?:?DbGrid1.Canvas.Brush.color:=clRed;?file:False:?DbGrid1.Canvas.Brush.color:=clblue;?file:end;??DbGrid1.Canvas.pen.mode:=pmmask;??DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);?? ?
7、橫向斑馬線, 同時以紅色突顯當前行效果。
?
?
[delphi]?view plaincopy
Case?Table1.RecNo?mod?2?=?0?of?file:True?:?DbGrid1.Canvas.Brush.color:=clAqua;?file:False:?DbGrid1.Canvas.Brush.color:=clblue;?file:end;??if?((State?=?[gdSelected])?or?(State=[gdSelectedgdFocused]))?then?file:DbGrid1.Canvas.Brush.color:=clRed;??DbGrid1.Canvas.pen.mode:=pmMask;??DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);?? ?
8、雙向斑馬線效果:即行間用不同色區分,同時,選中行以縱向斑馬線效果區分不同的列。
?
?
[delphi]?view plaincopy
Case?Table1.RecNo?mod?2?=?0?of?file:True?:?DbGrid1.Canvas.Brush.color:=clAqua;?file:False:?DbGrid1.Canvas.Brush.color:=?clblue;?file:end;??If?((State?=?[gdSelected])?or?(State=[gdSelectedgdFocused]))?then??Case?DataCol?mod?2?=?0?of??True?:?DbGrid1.Canvas.Brush.color:=clRed;?file:False:?DbGrid1.Canvas.Brush.color:=?clGreen;?file:end;??DbGrid1.Canvas.pen.mode:=pmMask;??DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);?? ?
一、根據條件更改某航
procedure Tfrm_TicketGet.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if (ADOQuery1.FieldByName('kind_name').asstring = '合計' )or( ADOQuery1.FieldByName('kind_name').asstring = '總合計') then
begin
DBGrid1.Canvas.Font.Color:=clred;
dbgrid1.Canvas.Brush.color:=clyellow;
end ;
dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);
end;
?
轉載于:https://www.cnblogs.com/qi123/p/5087128.html
總結
以上是生活随笔為你收集整理的delphi 更改DBGrid 颜色技巧的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。