控制DBGird某一列的顏色,,那邊錯了?? |
答題得分者是:frappe
|
lovemari
中階會員 ![]() ![]() ![]() 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
小弟想藉由某一欄位的值來控制該列的顏色
譬如說 欄位7 的值只有 0 跟 1 如果值=0 那該列呈現白色 如果值=1 那該列呈現紅色 希望呈現的是該列 而不是整各Grid 這是之前StringGrid的寫法 那我想改寫成DBGrid 該怎麼改呢? 我想AnsiReplaceStr(Cells[13, ARow] 改成 TDBGrid(Sender).Columns.Items[7] 卻不行 [code delphi] procedure TForm1.AdvStringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var iRate: Integer; begin if gdFixed in State then Exit; with Sender as TAdvStringGrid do begin iRate := StrToIntDef(AnsiReplaceStr(Cells[13, ARow], '%', ''), -1); if iRate < 56 then begin case iRate of 1..56: Canvas.Font.Color := clRed; //控制數值rage 來寫顏色 //96..100: Canvas.Brush.Color := clWhite; end; Canvas.TextRect(Rect, Rect.Left, Rect.Top, Cells[ACol, ARow]); end; end; end; [/code]
------
Program : Delphi 7 DataBase : Oracle 9i Client : ClientDataSet 編輯記錄
lovemari 重新編輯於 2008-12-26 17:06:51, 註解 無‧
|
herbert2
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
|
frappe
中階會員 ![]() ![]() ![]() 發表:88 回覆:114 積分:95 註冊:2008-10-21 發送簡訊給我 |
你只要在DBGrid的OnDrawColumnCell的Event寫幾行程式就OK哩
[code delphi] procedure XXX.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if DMS.xxxxxxx.AsInteger =1 then begin DBGrid1.Canvas.Brush.Color:=clRed; DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State); end; end; [/code] |
lovemari
中階會員 ![]() ![]() ![]() 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
DEAR
想請問我那裡下錯了?? [code delphi] procedure TForm1.DBGrid9DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin IF StrToInt(DBGrid9.Columns.Items[7]) > 1 then // 這行顯示錯誤 begin DBGrid9.Canvas.Brush.Color:=clRed; DBGrid9.DefaultDrawColumnCell(Rect,DataCol,Column,State); end; end; [/code]
------
Program : Delphi 7 DataBase : Oracle 9i Client : ClientDataSet |
frappe
中階會員 ![]() ![]() ![]() 發表:88 回覆:114 積分:95 註冊:2008-10-21 發送簡訊給我 |
IF StrToInt(DBGrid9.Columns.Items[7]) > 1 then
改成這樣試試看 if StrtoInt(DBGrid9.Fields[7].value)>1 then ===================引 用 lovemari 文 章=================== DEAR 想請問我那裡下錯了?? [code delphi] procedure TForm1.DBGrid9DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin IF StrToInt(DBGrid9.Columns.Items[7]) > 1 then // 這行顯示錯誤 begin DBGrid9.Canvas.Brush.Color:=clRed; DBGrid9.DefaultDrawColumnCell(Rect,DataCol,Column,State); end; end; [/code] |
lovemari
中階會員 ![]() ![]() ![]() 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |