線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1424
推到 Plurk!
推到 Facebook!

如何讓bit型態在DBGrid內顯示成打勾記號?

尚未結案
way888
初階會員


發表:32
回覆:76
積分:36
註冊:2005-05-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-09 14:41:58 IP:220.136.xxx.xxx 未訂閱
如何讓bit型態在DBGrid內顯示成打勾記號或是 Y or N? 不要讓資料欄位顯示TRUE或FALSE 拜託高手指點迷津......不才感激不盡
supman
尊榮會員


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-09 14:51:35 IP:61.70.xxx.xxx 未訂閱
您好: 1.放兩個Image,一個放您想要的打勾圖形,一個放您想要的打X圖形 2.在DBGrid的OnDrawColumnCell事件中寫下: if (Query.FieldByName('xxx').Boolean) and (DataCol=0) then//看你的圖要在哪一格 DBGrid1.Canvas.Draw(Rect.Left,Rect.Top,Image1.Picture.Graphic);//打勾 else DBGrid1.Canvas.Draw(Rect.Left,Rect.Top,Image2.Picture.Graphic);//打X
cashxin2002
版主


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-09 14:54:11 IP:202.62.xxx.xxx 未訂閱
您好﹗    在DBGrid元件的OnDrawColumnCell事件中重繪試試﹕
Var
  Str: String;
begin
  if SameText(Column.FieldName, '欄位名稱') then
    begin
      Str := ''
      if Column.Field.Value = True then
        Str := 'Y'
      else
      if Column.Field.Value = False then
        Str := 'N';
    end;
  if Str <> '' then
    DBGrid1.Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2, Str);
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
way888
初階會員


發表:32
回覆:76
積分:36
註冊:2005-05-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-09 18:51:32 IP:220.136.xxx.xxx 未訂閱
謝謝兩位大哥提供的方法 我都有測試,一切OK........"真是太神奇了" 認識你們真好....... 不才還有一個問題請教 如何讓他按一下是TRUE,按一下又變FALSE? 就像是DBCheckBox一樣
cashxin2002
版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-10 10:05:21 IP:202.62.xxx.xxx 未訂閱
您好﹗    True值和False值是從資料表中擷取到的資料﹐如您所述的需要﹐應不是從DBGrid重繪內容解決問題﹐而是從資料集元件處處理﹒
將以下程式碼寫在DBGrid元件的OnDblCheck事件中﹒
begin
  if DBGrid1.SelectedField.FieldName = 'Bit欄位名稱' then
    begin
      ADOTable1.Edit;
      ADOTable1.FieldByName('Bit欄位名稱').Value := Not (ADOTable1.FieldByName('Bit欄位名稱').Value);
      ADOTable1.Post;
    end;
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
supman
尊榮會員


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-10 14:40:48 IP:61.70.xxx.xxx 未訂閱
您好: 站內有這樣的範例,抓回去參考參考 http://delphi.ktop.com.tw/topic.php?topic_id=4699 下面是我自己修改的您也可以參考參考. http://hk.geocities.com/supman1supman5/griddemo.zip
way888
初階會員


發表:32
回覆:76
積分:36
註冊:2005-05-31

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-06-10 23:13:50 IP:220.136.xxx.xxx 未訂閱
已經可以了 真是謝謝.....
kindle
一般會員


發表:3
回覆:9
積分:2
註冊:2005-06-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-06-12 10:45:47 IP:152.104.xxx.xxx 未訂閱
確實感覺不錯 這網站上回答的問題也很好 我馬上就喜歡她了!
kindle
一般會員


發表:3
回覆:9
積分:2
註冊:2005-06-12

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-06-12 10:52:28 IP:152.104.xxx.xxx 未訂閱
不過我倒是覺得可能這樣會更方便,但對於多個bit型態在DBGIRD內顯示成Y或N如何更簡單?以下我用了兩個bit型態在DBGIRD內顯示成Y或N procedure TForm1.DBGrid1CellClick(Column: TColumn); begin if DBGrid1.SelectedField.FieldName = 'ky' then begin ADOTable1.Edit; ADOTable1.FieldByName('ky').Value := Not (ADOTable1.FieldByName('ky').Value); //ADOTable1.FieldByName('xz').Value := Not (ADOTable1.FieldByName('xz').Value); ADOTable1.Post; end; if (DBGrid1.SelectedField.FieldName = 'xz') then begin ADOTable1.Edit; //ADOTable1.FieldByName('ky').Value := Not (ADOTable1.FieldByName('ky').Value); ADOTable1.FieldByName('xz').Value := Not (ADOTable1.FieldByName('xz').Value); ADOTable1.Post; end; end;
系統時間:2024-07-02 1:46:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!