日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

delphi 更改DBGrid 颜色技巧

發(fā)布時間:2023/12/18 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 delphi 更改DBGrid 颜色技巧 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、根據(jù)條件更改某一單元格的顏色

?

[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;??
  • //隔行改變網(wǎng)格背景色:??
  • ??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);?//定義背景顏色??
  • //定義網(wǎng)格線的顏色:??
  • 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;</span>??


  • ?

    ?

    ?

    3、縱向斑馬線效果:實現(xiàn)網(wǎng)格的奇數(shù)列和偶數(shù)列分別以不同的顏色顯示以區(qū)別相鄰的數(shù)據(jù)列。

    ?

    [delphi]?view plaincopy
  • Case?DataCol?Mod?2?=?0?of??
  • ??True:?DbGrid1.Canvas.Brush.Color:=?clBlue;?file://偶數(shù)列用藍色??
  • ?False:?DbGrid1.Canvas.Brush.Color:=?clAqua;?file://奇數(shù)列用淺綠色??
  • 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://偶數(shù)列用藍色??
  • False:?DbGrid1.Canvas.Brush.Color:=?clAqua;?file://奇數(shù)列用淺綠色??
  • 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、在數(shù)據(jù)網(wǎng)格中以紅色突出顯示當前選中的行。

    ?

    ?

    [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、行突顯的斑馬線效果:既突出當前行,又區(qū)分不同的列(字段)。

    ?

    ?

    [delphi]?view plaincopy
  • if?((State?=?[gdSelected])?or?(State=[gdSelectedgdFocused]))?then??
  • begin??
  • Case?DataCol?Mod?2?=?0?of??
  • True?:?DbGrid1.Canvas.Brush.color:=clRed;?file://當前選中行的偶數(shù)列顯示紅色??
  • False:?DbGrid1.Canvas.Brush.color:=clblue;?file://當前選中行的奇數(shù)列顯示藍色??
  • end;??
  • DbGrid1.Canvas.pen.mode:=pmmask;??
  • DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);??
  • ?


    7、橫向斑馬線, 同時以紅色突顯當前行效果。

    ?

    ?

    [delphi]?view plaincopy
  • Case?Table1.RecNo?mod?2?=?0?of?file://根據(jù)數(shù)據(jù)集的記錄號進行判斷??
  • True?:?DbGrid1.Canvas.Brush.color:=clAqua;?file://偶數(shù)行用淺綠色顯示??
  • False:?DbGrid1.Canvas.Brush.color:=clblue;?file://奇數(shù)行用藍色表示??
  • 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、雙向斑馬線效果:即行間用不同色區(qū)分,同時,選中行以縱向斑馬線效果區(qū)分不同的列。

    ?

    ?

    [delphi]?view plaincopy
  • Case?Table1.RecNo?mod?2?=?0?of?file://根據(jù)數(shù)據(jù)集的記錄號進行判斷??
  • True?:?DbGrid1.Canvas.Brush.color:=clAqua;?file://偶數(shù)行用淺綠色顯示??
  • False:?DbGrid1.Canvas.Brush.color:=?clblue;?file://奇數(shù)行用藍色表示??
  • end;??
  • If?((State?=?[gdSelected])?or?(State=[gdSelectedgdFocused]))?then??
  • Case?DataCol?mod?2?=?0?of??
  • True?:?DbGrid1.Canvas.Brush.color:=clRed;?file://當前選中行的偶數(shù)列用紅色??
  • False:?DbGrid1.Canvas.Brush.color:=?clGreen;?file://當前選中行的奇數(shù)列用綠色表示??
  • end;??
  • DbGrid1.Canvas.pen.mode:=pmMask;??
  • DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);??
  • ?

    一、根據(jù)條件更改某航

    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 颜色技巧的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。