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

請問DBGrid如何做出光棒的效果呢?/

尚未結案
odyaho
初階會員


發表:60
回覆:104
積分:42
註冊:2005-02-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-02 14:29:35 IP:202.181.xxx.xxx 未訂閱
請問各位先進 我已爬過文章  好像只有提到用StringGrid做光棒顯示 沒有DBGrid 大概知道要在DBGrid1DrawColumnCell事件下達成 利用
DBGrid1->Canvas->Brush->Color=clSkyBlue;
DBGrid1->Canvas->Font->Color=clYellow;
可以設定顏色 可是要如何做判斷呢??
另外我知道 在DBGrid->Properties->Options->dgRowSelect可以選為true 再利用DBNavigator1做上一筆下一筆動作時 也可以有光棒效果(藍底白字) 可以改變底色及字的顏色嗎?? 可是我用自己寫的上一筆 下一筆時 此光棒效果就沒有了 這是出了什麼問題呢 程式碼:下一筆
Form1->Table1->MoveBy(1);
期待各位的回覆 發表人 -
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-02 14:42:05 IP:61.70.xxx.xxx 未訂閱
您好: 我測試我的程式使用moveby是沒有問題的,會不會是您程式哪地方有錯,把程式碼貼上來看看, 我的做法您參考看看:
procedure TzManagement.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
with DBGrid1.Canvas do
 begin
  // 先預設顏色
  if GDSelected in State then // Select光棒停在此Cell
   begin
    Font.Color:=clHighLightText; // 正常的DBGrid顏色
    Brush.Color:=$007D3F00; // 正常的DBGrid顏色
   end
   else begin // Select光棒未停在此Cell
    Font.Color:=clBlack; // 正常的DBGrid顏色
    Brush.color:=clWhite; // 正常的DBGrid顏色
   end;
  // 設定指定Cell的顏色
//  if DataCol=1 then // 第二個欄位
  if (GDSelected in State) then // Select光棒停在此Cell
   begin
    if ((Sender as TDBGrid).DataSource.DataSet.FieldByName('Payed').AsInteger>=10)
     then Brush.Color:=$007D3F00;// 字變紅色加一點白色調(這樣反白效果才會好)
   end
   else begin // Select光棒未停在此Cell
    if ((Sender as TDBGrid).DataSource.DataSet.FieldByName('Payed').AsInteger>=10)
      then Brush.Color:=$00A4A4FF; // 字變紅色
   end;
      // 一定要執行繪圖的動作
  DbGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,[]);
 end;
end;
odyaho
初階會員


發表:60
回覆:104
積分:42
註冊:2005-02-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-02 15:39:57 IP:202.181.xxx.xxx 未訂閱
Dear supman: 謝謝您的回覆.. 我已參考過您的程式了 是delphi寫的 有試著去修改 可是有些地方還是不懂    
procedure TzManagement.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
with DBGrid1.Canvas do
 begin
  // 先預設顏色
  if GDSelected in State then // Select光棒停在此Cell
    ^^^^^^^^^^^^^^^^^^^^^^^這裡在BCB怎麼判定呢??
   begin
    Font.Color:=clHighLightText; // 正常的DBGrid顏色
    Brush.Color:=$007D3F00; // 正常的DBGrid顏色
   end
   else begin // Select光棒未停在此Cell
    Font.Color:=clBlack; // 正常的DBGrid顏色
    Brush.color:=clWhite; // 正常的DBGrid顏色
   end;
  // 設定指定Cell的顏色
//  if DataCol=1 then // 第二個欄位
  if (GDSelected in State) then // Select光棒停在此Cell
     ^^^^^^^^^^^^^^^^^^^^^^^
   begin
    if ((Sender as TDBGrid).DataSource.DataSet.FieldByName('Payed').AsInteger>=10)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^??
     then Brush.Color:=$007D3F00;// 字變紅色加一點白色調(這樣反白效果才會好)
   end
   else begin // Select光棒未停在此Cell
    if ((Sender as TDBGrid).DataSource.DataSet.FieldByName('Payed').AsInteger>=10)
      then Brush.Color:=$00A4A4FF; // 字變紅色
   end;
      // 一定要執行繪圖的動作
  DbGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,[]);
 end;
end;
我有想大概要如何做 要先判斷下一筆button按下時 假設按下 就換顏色 判斷式寫在DBGrid1DrawColumnCell事件裡 可是如何判斷button按下呢?? 應該還可以用 [red]Column->Field->DataSet->RecNo;來判斷 如何判斷呢?? 以上是小弟淺見....
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-02 19:56:19 IP:203.204.xxx.xxx 未訂閱
您好: 上面那段不是我寫的,是偷某位大大的程式= =",忘了是哪位大大,真的很抱歉. 我另外開了一各新的程式測試,發現問題應該不在那邊而是在您DBGrid的Option設定,您要把dbAlwaysShowSelection設定為true,這樣應該就可以了. 另外抱歉,忘了這裡是C++Builder區..@@" 我簡化了程式碼,只要這些程式就可以改變光棒與字型的顏色了,您在試看看
  if (State.Contains(gdSelected))
   {
    DBGrid1->Canvas->Font->Color=clWhite;
    DBGrid1->Canvas->Brush->Color=clBlue;
   }
   else
   {
    DBGrid1->Canvas->Font->Color=clBlack;
    DBGrid1->Canvas->Brush->Color=clWhite;
   }
  DBGrid1->DefaultDrawColumnCell(Rect,DataCol,Column,State);
發表人 - supman 於 2005/06/02 20:01:19
odyaho
初階會員


發表:60
回覆:104
積分:42
註冊:2005-02-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-03 09:42:43 IP:202.181.xxx.xxx 未訂閱
Dear supman:    ok了 多謝您的幫忙
系統時間:2024-05-04 9:43:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!