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

DBCtrlGrid+DBCheckBox的問題?

尚未結案
Sanyuan
一般會員


發表:24
回覆:32
積分:11
註冊:2002-06-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-23 14:01:47 IP:202.39.xxx.xxx 未訂閱
小弟在一個DBCtrlGrid上放了DBCheckBox 利用Query元件select dataset ,資料庫為oracle SELECT A,B,'false' CHK FROM TABLENAME 第三個欄位是小弟自己加上去的,table並沒有,只是為了在DBCtrlGrid上放了DBCheckBox才做的 然後在DBCtrlGrid的 procedure TPACSListFrm.DBCtrlGrid1Click(Sender: TObject); begin if Query1.FieldByName('chk').Value = 'false' then Query1.FieldByName('chk').Value := 'true'; end; ㄟ....沒反映耶... DBCheckBox不是這樣用嗎? 請各位前輩指教.
cashxin2002
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-23 14:24:12 IP:63.84.xxx.xxx 未訂閱
您好﹗    應該是﹕
procedure TPACSListFrm.DBCtrlGrid1Click(Sender: TObject);
begin
  if Query1.FieldByName('chk').ValueChecked = 'false' then
  Query1.FieldByName('chk').ValueChecked := 'true';
end;
ValueChecked屬性是指呈勾選狀態時的傳回值﹒ ValueUnChecked屬性是指呈未勾選狀態時的傳回值﹒ 參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟 發表人 - cashxin2002 於 2003/09/23 14:28:21
------
忻晟
Sanyuan
一般會員


發表:24
回覆:32
積分:11
註冊:2002-06-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-23 14:36:08 IP:202.39.xxx.xxx 未訂閱
不好意思 好程式告訴我沒有ValueChecked 的屬性耶 小弟使用的是Delphi5
cashxin2002
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-23 14:55:55 IP:63.84.xxx.xxx 未訂閱
引言: 不好意思 好程式告訴我沒有ValueChecked 的屬性耶 小弟使用的是Delphi5
您好﹗ 有些看錯了您的問題﹐ValueChecked和ValueUnChecked這兩個屬性是屬于DBCheckBox元件的﹒ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
cashxin2002
版主


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-09-23 15:32:26 IP:63.84.xxx.xxx 未訂閱
您好﹗    小弟剛才測試了一下您描述的情形﹐您的'CHK'欄位是自己手動加上的﹐在資料庫中并無此真正的欄位﹐据小弟所知﹐DBCheckBox等感知元件是必須有對應資料才可以對資料庫進行顯示和輸入的功能﹐針對此虛擬的欄位﹐可能無法做到您所敘述的部分﹒    比如說您的資料庫中有一個名位[已婚]欄位﹐就可利用DBCheckBox來對應顯示和異動﹐只需要設定DBCheckBox的DataSource屬性和DataField屬性(屬性值即為[已婚])﹐即可利用此元件對資料庫對應欄位進行操控﹐其ValueChecked屬性值代表勾選狀態﹐ValueUnCheckd的屬性值則代表未勾選狀態﹒    此處有篇SQL中使用DBCheckBox的提問﹕ http://delphi.ktop.com.tw/topic.php?TOPIC_ID=37341    參考看看﹗    ===================== 努力,相信會獲得美麗! 忻晟 發表人 - cashxin2002 於 2003/09/23 17:30:20
------
忻晟
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-09-23 17:40:51 IP:202.39.xxx.xxx 未訂閱
第三個欄位改以 calculated field 的方式試試    --- 歡迎光臨 KTop 研究院
Sanyuan
一般會員


發表:24
回覆:32
積分:11
註冊:2002-06-23

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-09-23 18:13:26 IP:211.75.xxx.xxx 未訂閱
感謝熱心的回覆 calculated field 已經試過,還是不行 資料庫原本就沒有第三個欄位 不太可能因為這需求而加上 其實小弟是想在grid上加入個checkbox來選擇而已 所以用DBCtrlGrid來試試 沒想到...困難重重....
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-09-23 18:41:44 IP:202.39.xxx.xxx 未訂閱
可以用 InfoPower 的 TwwDBGrid 它可以輕鬆實現這樣的功能, 且不使用 TDBCheckBox    --- 歡迎光臨 KTop 研究院
Sanyuan
一般會員


發表:24
回覆:32
積分:11
註冊:2002-06-23

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-09-23 20:27:16 IP:211.75.xxx.xxx 未訂閱
謝謝hagar兄的建議,不過這麼做會被同事跟老闆扁死 小弟參考了一些文章,有些前輩提到可以用dbgrid 的 dgMultiSelect 來更改字體的顏色,這樣好像也不賴,不過... dgMultiSelect要按住ctrl鍵,若自動幫user按要怎麼做呢,請各位前輩提示一下吧(找不到相關的文件)
danajn
一般會員


發表:14
回覆:29
積分:8
註冊:2002-08-01

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-09-26 01:36:30 IP:218.162.xxx.xxx 未訂閱
以下程式為在dbgrid上劃上一個checkbox..不知是否符合需求 ^^ procedure TFrmFile.DBGridCellClick(Column: TColumn); begin if Self.DBGrid.SelectedField.DataType = ftBoolean then SaveBoolean(); end; procedure TFrmFile.SaveBoolean; begin Self.DBGrid.SelectedField.Dataset.Edit Self.DBGrid.SelectedField.AsBoolean := not Self.DBGrid.SelectedField.AsBoolean; Self.DBGrid.SelectedField.Dataset.Post end; procedure TFrmFile.DBGridDrawColumnCell(const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); const CtrlState : array[Boolean] of Integer = (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED); varCheckBoxRectangle : TRect; begin if Column.Field.DataType = ftBoolean then begin Canvas.FillRect(Rect); DrawFrameControl(Canvas.Handle, Rect, DFC_BUTTON, CtrlState[IColumn.Field.AsBoolean ]); end; end; procedure TFrmFile.DBGridKeyDown(var Key: Word; Shift: TShiftState); begin if ( Key = VK_SPACE ) and (SelectedIndex=0) then SaveBoolean(); end; procedure TFrmFile.DBGridColExit; begin if SelectedIndex=0 then Options := OriginalOptions end; procedure TFrmFile.DBGridColEnter; begin if SelectedIndex=0 then begin OriginalOptions := Options; Options := Options - [dgEditing]; end; end;
系統時間:2024-11-23 5:34:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!