DBGrid顏色調整問題 |
尚未結案
|
zxy666666
中階會員 ![]() ![]() ![]() 發表:108 回覆:150 積分:86 註冊:2005-01-14 發送簡訊給我 |
各位大大好!又來麻煩您們了.
我搜尋到Ktop的文章試做出DBGrid單,雙行顏色不同(如下代碼).
當不能多選記錄時,即dgMultiSelect:=false時沒有問題,
但是如果dgMultiSelect:=true時,我想請問是否可以做到,
所有被選擇的記錄是否可略過單,雙行顏色不同的那段代碼
如: if gdSelected in State then Exit;一樣呢?
感謝各位解答!
procedure TfmMain.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var Canvas: TCanvas; i : Integer ; begin if gdSelected in State then Exit; Canvas := (Sender as TDBGrid).Canvas; if ((Column.Field.DataSet.RecNo mod 2) = 0) then Canvas.Brush.Color := clMenu else Canvas.Brush.Color := clWindow; Canvas.Font.Color := clMaroon; Canvas.FillRect(Rect); DBGrid1.DefaultDrawDataCell(Rect, Column.Field, State); end; |
wameng
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
做一點小修改就可以了。(建議應為 VCL 區)
procedure TfmMain.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var Canvas: TCanvas; i,Index : Integer ; begin if gdSelected in State then Exit; if DBGrid1.SelectedRows.Find(DBGrid1.Datasource.Dataset.Bookmark,Index) then Exit; Canvas := (Sender as TDBGrid).Canvas; if ((Column.Field.DataSet.RecNo mod 2) = 0) then Canvas.Brush.Color := clMenu else Canvas.Brush.Color := clWindow; Canvas.Font.Color := clMaroon; Canvas.FillRect(Rect); DBGrid1.DefaultDrawDataCell(Rect, Column.Field, State); end;~~~~~~~~~~~ 難得聰明,常常糊塗。 ~~~~~~~~~~~ 發表人 - wameng 於 2005/05/24 10:14:42 |
zxy666666
中階會員 ![]() ![]() ![]() 發表:108 回覆:150 積分:86 註冊:2005-01-14 發送簡訊給我 |
|
wameng
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |