DBCtrlGrid+DBCheckBox的問題? |
尚未結案
|
Sanyuan
一般會員 發表:24 回覆:32 積分:11 註冊:2002-06-23 發送簡訊給我 |
小弟在一個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 發送簡訊給我 |
您好﹗ 應該是﹕
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 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 小弟剛才測試了一下您描述的情形﹐您的'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 發送簡訊給我 |
|
Sanyuan
一般會員 發表:24 回覆:32 積分:11 註冊:2002-06-23 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
Sanyuan
一般會員 發表:24 回覆:32 積分:11 註冊:2002-06-23 發送簡訊給我 |
|
danajn
一般會員 發表:14 回覆:29 積分:8 註冊:2002-08-01 發送簡訊給我 |
以下程式為在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;
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |