StringGrid的上色問題 |
答題得分者是:P.D.
|
lovemari
中階會員 ![]() ![]() ![]() 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
我想指定某欄位若數值小於多少就顯示紅色
那我就寫以下的SQL,可是程式告訴我找不到這各"組裝直通率" WHY ??? 我搜尋貴站很多上色問題都沒我要的解答耶 csTemp5~7 是 ClientDataSet [code delphi] procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin if (csTemp5.FieldByName('組裝直通率').AsString < '96%') then StringGrid1.Font.Color := clRed else if (csTemp6.FieldByName('測試直通率').AsString < '96%') then StringGrid1.Font.Color := clRed else if (csTemp7.FieldByName('包裝直通率').AsString < '96%' ) then StringGrid1.Font.Color := clRed end; [/code]
------
Program : Delphi 7 DataBase : Oracle 9i Client : ClientDataSet 編輯記錄
lovemari 重新編輯於 2008-03-05 13:13:25, 註解 無‧
|
cobraliu
中階會員 ![]() ![]() ![]() 發表:15 回覆:75 積分:83 註冊:2007-11-22 發送簡訊給我 |
如果你要那一行變顏你可以試試
而如果你要的是某一個Cell那你要多一些判定 下面的例子,那是雙行變色,變紅色 [code delphi] if (ARow mod 2) = 0 then //要改成你自已要的! (Sender as Tstringgrid).Canvas.Brush.Color := clInfoBk else (Sender as Tstringgrid).Canvas.Brush.Color := clred; (Sender as Tstringgrid).Canvas.FillRect(Rect); [/code]
------
初學、初學、學了很久...還是在初學階段..Orz
編輯記錄
cobraliu 重新編輯於 2008-03-05 15:13:41, 註解 無‧
|
P.D.
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
給你一個方向, 你所要的是針對每一個CELL上色, 非整組(StringGrid.Color)
1. private 下引用一組二維陣列與StringGrid 同大小 arygrid: array)10,10) of TColor; 2.在你的SQL判斷式下, 取出直通率的結果, 同時一個重點, 你必須知道要上色的直通率CELL值 例如 StringGrid1.Cell[3,5], 則設定 arygrid[3,5]:= clRed 3.最重要的是你必須在 StringGrid 的 onDrawCell事件上來上色 begin for c:= 0 to 9 do begin for r:= 0 to 9 do begin Canvas.Brush.Color:= arygrid[c,r]; // 這是要cell上色 Canvas.Font.Color:= arygrid[c,r]; // 這是要字體上色 (與上兩者選一) next; next; .Canvas.FillRect(Rect); Canvas.TextOut(Rect.Left,Rect.Top,Cells[ACol,ARow]); //output text end; 大致是如此, 不過我沒有實作過, 你自己run |
lovemari
中階會員 ![]() ![]() ![]() 發表:134 回覆:224 積分:76 註冊:2005-08-18 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |