全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1411
推到 Plurk!
推到 Facebook!

Dbgrid 值 < 0 標示紅色

尚未結案
miguel
一般會員


發表:26
回覆:20
積分:9
註冊:2002-03-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-01-19 17:12:27 IP:61.221.xxx.xxx 未訂閱
如下圖所示,Dbgrid 值 < 0 標示紅色而且如何 每格兩列畫粗線!! 麻煩各位先進解惑 THANKS!!    
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-01-19 17:34:03 IP:63.84.xxx.xxx 未訂閱
您好﹗    兩個問題應可利用DBGrid元件的OnDrawColumnCell重繪事件來控制﹕ 答一﹕
begin
  if ADOTable1.FieldByName('W1').AsInteger < 0 then
    begin
      DBGrid1.Canvan.Font.Color := clRed;
    end;
  if ADOTable1.FieldByName('W2').AsInteger < 0 then
    begin
      DBGrid1.Canvas.Font.Color := clRed;
    end;
  if ADOTable1.FieldByName('W3').AsInteger < 0 then
    begin
      DBGrid1.Canvas.Font.Color := clRed;
    end;
  DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
答二﹕ 正在測試DBGrid元件相關屬性﹒ <><>===================== 努力,相信會獲得美麗! 忻晟 發表人 -
------
忻晟
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-01-19 17:37:37 IP:210.61.xxx.xxx 未訂閱
提供給您參考
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
begin
  if Field.FieldName='CustNo' then
  begin
    if field.Value>2100 then
    begin
      DBGrid1.canvas.Brush.Color:=clRed;
      DBGrid1.Canvas.FrameRect(Rect);
    end;
  end;
  if (DbGrid1.DataSource.DataSet.RecNo mod 2)=0 then
  begin
    DBGrid1.Canvas.Brush.Color:=clGreen;
    DBGrid1.Canvas.MoveTo(Rect.Left,Rect.Top);
    DBGrid1.Canvas.LineTo(Rect.Right,Rect.Top);
  end;
end;
miguel
一般會員


發表:26
回覆:20
積分:9
註冊:2002-03-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-01-20 09:03:10 IP:61.221.xxx.xxx 未訂閱
引言: 您好﹗ 兩個問題應可利用DBGrid元件的OnDrawColumnCell重繪事件來控制﹕ 答一﹕
begin
  if ADOTable1.FieldByName('W1').AsInteger < 0 then
    begin
      DBGrid1.Canvan.Font.Color := clRed;
    end;
    DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
sorry 可能是我表達的 不清楚 因為 上面程式 會變成整列 都成紅色,會變成不知道那邊開始出現紅色 只需要 是 負值 出現 紅色即可,其他值顏色不變!! 因使用 bde 所以 RecNo 值都是 -1耶!! 發表人 - miguel 於 2004/01/20 09:08:51
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-01-20 10:54:50 IP:210.61.xxx.xxx 未訂閱
miguel您好 不知道您不了解的地方在哪裡 我再po完整的example給您    以下是您要的結果 BDE->Table->DataSource->DBGride
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
begin
  if field is TIntegerField         then
  begin
    if field.Value<0 then
    begin
      DBGrid1.canvas.Font.Color:=clRed;
      DBGrid1.DefaultDrawDataCell(Rect,field,State);
    end;
  end;
  if (DbGrid1.DataSource.DataSet.RecNo mod 2)=0 then
  begin
    DBGrid1.Canvas.Brush.Color:=clGreen;
    DBGrid1.Canvas.MoveTo(Rect.Left,Rect.Top);
    DBGrid1.Canvas.LineTo(Rect.Right,Rect.Top);
  end;
end;
miguel
一般會員


發表:26
回覆:20
積分:9
註冊:2002-03-30

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-01-20 11:20:24 IP:61.221.xxx.xxx 未訂閱
感謝 pedro 的回覆 可是 會出現 以下問題耶!!  麻煩 再次解惑 THANKS!!
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-01-20 12:01:13 IP:210.61.xxx.xxx 未訂閱
單元模組需引用db uses db
系統時間:2024-06-29 16:28:02
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!