請問 DBGrid1 特定欄位顏色問題 |
答題得分者是:kevin2004
|
james2mac
一般會員 發表:11 回覆:11 積分:4 註冊:2008-02-01 發送簡訊給我 |
|
cobraliu
中階會員 發表:15 回覆:75 積分:83 註冊:2007-11-22 發送簡訊給我 |
http://delphi.ktop.com.tw/board.php?cid=168&fid=913&tid=93602
===================引 用 james2mac 文 章=================== 看板上討論.或找很多範例,都是用DBGrid1DrawColumnCell來顯示顏色 不過都是一整行顯示的 有沒有辦法,我説查詢值,將全部資料有符合的值用顏色表現出來! 但不要整行變色!!
------
初學、初學、學了很久...還是在初學階段..Orz |
kevin2004
資深會員 發表:18 回覆:463 積分:416 註冊:2005-05-29 發送簡訊給我 |
===================引 用 james2mac 文 章===================
看板上討論.或找很多範例,都是用DBGrid1DrawColumnCell來顯示顏色 不過都是一整行顯示的 ....符合的值用顏色表現出來! 但不要整行變色!! ===================引 用 james2mac 文 章=================== 此為常用技巧,參考以下例 procedure TForm1.DBGridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin // 另一寫法==> // if TDBGrid(Sender).DataSource.DataSet.FieldByName('Printed').AsString // <> '是' then // if Column.Field.DisplayText = '是' then // if (Column.FieldName = 'aborted')..請注意:需開頭小寫,'aborted'是無效的 if ( AnsiCompareText ( Column.FieldName , 'PrintYes' ) = 0 ) and ( Column.Field.DisplayText = '否' ) then begin // TDBGrid(Sender).Canvas.Brush.Color := clNavy ; // 將此record此欄字變為clNavy底 TDBGrid(Sender).Canvas.Font.Color := clRed ; // 將此record此欄字Color變為clRed TDBGrid(Sender).Canvas.FillRect ( Rect ) ; TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State ) ; exit ; end ; if ( AnsiCompareText ( Column.FieldName , 'Noticed' ) = 0 ) and ( Column.Field.DisplayText = '否' ) then begin // TDBGrid(Sender).Canvas.Brush.Color := clNavy ; // 將此record此欄字變為clNavy底 TDBGrid(Sender).Canvas.Font.Color := clRed ; // 將此record此欄字Color變為clRed TDBGrid(Sender).Canvas.FillRect ( Rect ) ; TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State ) ; exit ; end ; end;
------
Kevin |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |