亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

關于DBGrid的分類顏色顯示

2019-11-18 18:06:33
字體:
來源:轉載
供稿:網友
 這兩天在csdn里轉轉,發現很多人問關于DBGRID或DBGRIDEH的分類顯示的問題,今天閑下來,就這個問題聊兩句。實際上對于DBGRID的自畫,delphi 提供了兩個事件供我們使用,
一個是畫行的:
OnDrawDataCell(Sender: TObject; const Rect: TRect;  Field: TField; State: TGridDrawState);
另一個是畫列的:
OnDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
這就給我們很大的方便。對于DBGRID的分類顏色顯示,明顯應該用第一個事件。那么怎么才能分類按顏色顯示呢,實際上聽起來很難,但實際上很簡單。
        首先定義一個類型為TColor的變長數組,然后在數據集的AfterOpen事件中,將數組的長度定義為數據集的記錄個數。然后根據你的分類計算出數組的每一個元素的顏色值,數組的每一個元素應該和數據集的一條記錄相對應。最后,在你的OnDrawColumnCell事件中寫下如下代碼。
        DBGRID1.Canvas.Brush.Color := C[Low(c)+DBgrid1.DataSource.Dataset.RecNo()-1];
        上面是設置行的背景色,如果你要設置字體色只需要用
         DBGRID1.Canvas.Font.Color := C[Low(c)+DBgrid1.DataSource.Dataset.RecNo()-1];
        最后不要忘記了還要加上一句
        DBGrid1.DefaultDrawDataCell(Rect, Field, State);
如此就可以隨心所欲的顯示你所喜歡的顏色。以上只是我的一點愚見,有心人會說了,你這樣做效率很低的
你需要將數據庫全都遍歷一遍。是的,你要想顯示,肯定要遍歷數據庫,只不過對于大型數據庫來說,你可以不一定在數據庫的AfterOpen后做,你也可一一次只遍歷數據庫的一部分,比如說你在別的事件比如說ClientDataset的AfterGetRecords中作。另外最好的方法是在服務器端用一個存儲過程計算此數組的值,這樣是最有效率的方法。當然這些都是原理,這里不做詳細討論。下面是一個簡單的DEMO將DBgrid的數據每10個
一組顯示紅綠兩色,在Delphi7.0下邊以通過。
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, DBGrids, DB, DBTables;

type
  TForm1 = class(TForm)
    DataSource1: TDataSource;
    Query1: TQuery;
    DBGrid1: TDBGrid;
    PRocedure DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
      Field: TField; State: TGridDrawState);
    procedure Query1AfterOpen(DataSet: TDataSet);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  clf:array of Tcolor;
implementation
{$R *.dfm}


procedure TForm1.FormCreate(Sender: TObject);
begin
  Query1.Active := False;
  Query1.DatabaseName := 'DBDEMOS';
  Query1.SQL.Add('select * from orders');
  DataSource1.DataSet := Query1;
  Dbgrid1.DataSource := DataSource1;
  Dbgrid1.Align := alClient;
  Query1.Active := True;
end;

procedure TForm1.Query1AfterOpen(DataSet: TDataSet);
var
  i,aa:integer;
  c:Tcolor;
begin
  query1.DisableControls;
  setlength(clf,query1.RecordCount);
  query1.First;
  i := Low(clf);
  clf[i] := clRed;
  c := clRed;
  aa:=1;
  while not query1.Eof do
  begin
    if (query1.RecNo - aa)>9 then
    begin
      aa := aa + 10;
      if c = clRed then c:= clGreen
      else c := clRed;
    end;
    clf[i] := c;
    Inc(i);
    query1.Next;
  end;
  query1.First;
  query1.EnableControls;
end;

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
begin
    DBGrid1.Canvas.Brush.Color := clf[Dbgrid1.DataSource.DataSet.RecNo-1+Low(clf)];
    DBGrid1.DefaultDrawDataCell(Rect, Field, State);
end;

end.


上一篇:模擬Nokia手機輸入的編輯框

下一篇:使TStringGrid自適應寬度

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97久久超碰福利国产精品…| 亚洲精品98久久久久久中文字幕| 这里只有精品久久| 97香蕉久久夜色精品国产| 国产a∨精品一区二区三区不卡| 成人午夜激情免费视频| 国自产精品手机在线观看视频| 欧美日韩免费一区| 亚洲色图五月天| 欧美激情2020午夜免费观看| 91国偷自产一区二区三区的观看方式| 2019中文字幕在线观看| 国产视频亚洲视频| 国产精品女主播视频| 欧美亚洲视频在线看网址| 亚洲欧美综合另类中字| 亚洲第一av在线| 亚洲精品美女在线观看| 国产精品444| 亚洲图中文字幕| 自拍偷拍免费精品| 国产国语刺激对白av不卡| 久久精品91久久香蕉加勒比| 中文字幕在线精品| 日韩在线视频导航| 国产视频在线一区二区| 久久精品99国产精品酒店日本| 高清视频欧美一级| 亚洲国产精品视频在线观看| 亚洲一区999| 精品久久久免费| 亚洲春色另类小说| 97婷婷大伊香蕉精品视频| 亚洲女人天堂色在线7777| 日韩精品丝袜在线| 欧洲成人午夜免费大片| 色老头一区二区三区| 91av在线不卡| 91亚洲国产成人久久精品网站| 欧美精品videosex性欧美| 奇米四色中文综合久久| 国产精品第2页| 国产精品高清在线观看| 国产精品成久久久久三级| 成人精品久久av网站| 北条麻妃在线一区二区| 欧美日韩亚洲精品一区二区三区| 96国产粉嫩美女| 色婷婷av一区二区三区久久| 日韩在线中文视频| 精品国内产的精品视频在线观看| 成人伊人精品色xxxx视频| 欧美另类极品videosbestfree| 55夜色66夜色国产精品视频| 亚洲精品国产精品国产自| 久久久久久网址| 亚洲国产第一页| 中文字幕在线国产精品| 欧美一区二区视频97| 国产午夜一区二区| 欧美精品福利视频| 一区二区三区国产在线观看| 欧美激情一区二区三级高清视频| 91精品国产91久久| xvideos国产精品| 国产精品久久久久久久久久久久| 国产成人精品久久二区二区91| 在线精品国产欧美| 成人日韩在线电影| 福利一区福利二区微拍刺激| 丰满岳妇乱一区二区三区| 国产日韩精品入口| 91久久嫩草影院一区二区| 日韩国产欧美精品在线| 精品中文字幕在线观看| 欧美贵妇videos办公室| 日韩精品免费电影| 高清亚洲成在人网站天堂| 91成人精品网站| 亚洲人成在线播放| 精品国产网站地址| 亚洲欧美日韩国产精品| 麻豆精品精华液| 日韩在线视频免费观看高清中文| 欧美精品电影免费在线观看| 亚洲视频精品在线| 国产精品久久久久久久久免费看| 国产丝袜一区二区三区| 4388成人网| 久久精品国产99国产精品澳门| 久热在线中文字幕色999舞| 国产精品久久久久久久久借妻| 一区二区福利视频| 91国在线精品国内播放| 欧美性猛交xxxx久久久| 久久777国产线看观看精品| 亚洲女人天堂网| 中文字幕一区二区精品| 欧美一级片免费在线| 69精品小视频| 亚洲日韩第一页| 欧美一级片久久久久久久| 高清欧美电影在线| 国产一区二区在线免费| 欧美高清视频免费观看| 91国内在线视频| 亚洲欧美在线免费| 亚洲一区二区三区视频播放| 亚洲国产美女久久久久| 国产精品久久久久久久app| 在线播放国产精品| 日韩欧美在线网址| 日韩av在线精品| 97视频色精品| 亚洲免费av片| 久久伊人91精品综合网站| 91综合免费在线| 亚洲国产精品大全| 久久久久久久成人| 国产精品青青在线观看爽香蕉| 亚洲欧洲国产一区| 久久久www成人免费精品张筱雨| 欧美成人精品在线播放| 欧美高清理论片| 91超碰中文字幕久久精品| 日韩中文字幕视频在线观看| 色悠悠久久88| 清纯唯美日韩制服另类| 国内精品小视频在线观看| 午夜精品久久久久久久白皮肤| 亚洲欧美日韩综合| 国产精品成人国产乱一区| 久久视频在线视频| 国产美女主播一区| 日韩av网址在线| 91精品国产高清| 日韩大胆人体377p| 久久频这里精品99香蕉| 中文字幕日本欧美| 亚洲欧洲美洲在线综合| 最近2019中文字幕mv免费看| 欧美激情xxxx| 国产亚洲视频中文字幕视频| www.久久草.com| 国产精品成av人在线视午夜片| 久久久久久久香蕉网| 亚洲另类xxxx| 欧美日韩国产成人在线| 欧美国产第二页| 久久99久久亚洲国产| 国产精品18久久久久久首页狼| 国产精品美女久久久久av超清| 亚洲天堂视频在线观看| 精品露脸国产偷人在视频| 色一情一乱一区二区| 日本三级韩国三级久久| 欧美一区二区大胆人体摄影专业网站| 亚洲天堂男人天堂| 久久久久国产精品免费网站| 欧美二区在线播放| 亚洲成人精品av| 在线观看日韩视频| 国产一区二区三区日韩欧美| 中文字幕9999|