如何在DBGrid中的一個欄位 用 DBCheckBox來表示 |
答題得分者是:danny
|
懸崖邊的舞者
一般會員 發表:14 回覆:0 積分:2 註冊:2007-10-11 發送簡訊給我 |
|
danny
版主 發表:100 回覆:522 積分:595 註冊:2002-03-11 發送簡訊給我 |
[code delphi] private OriginalOptions: TDBGridOptions; procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); const CtrlState : array[Boolean] of Integer = (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED); begin with TDBGrid(Sender) do begin if Column.FieldName = 'FieldName' then begin Canvas.FillRect(Rect); DrawFrameControl(Canvas.Handle, Rect, DFC_BUTTON, CtrlState[(Column.Field.AsBoolean)]); end; end; end; procedure TForm1.DBGrid1CellClick(Column: TColumn); var FDataSet: TDataSet; begin FDataSet := DBGrid1.DataSource.DataSet; if (DBGrid1.SelectedField.FieldName = 'FieldName') then begin if not (FDataSet.State in dsEditModes) then FDataSet.Edit; if (FDataSet.FieldByName('FieldName').AsBoolean) then FDataSet.FieldValues['FieldName'] := False else FDataSet.FieldValues['FieldName'] := True; end; end; procedure TForm1.DBGrid1ColEnter(Sender: TObject); var FDBGrid: TDBGrid; begin FDBGrid := TDBGrid(Sender); if (DBGrid1.SelectedField.FieldName = 'FieldName') then begin OriginalOptions := FDBGrid.Options; FDBGrid.Options := FDBGrid.Options - [dgEditing]; end; end; procedure TForm1.DBGrid1ColExit(Sender: TObject); var FDBGrid: TDBGrid; begin FDBGrid := TDBGrid(Sender); if (DBGrid1.SelectedField.FieldName = 'FieldName') then FDBGrid.Options := OriginalOptions; end; [/code] ===================引 用 懸崖邊的舞者 文 章=================== 如何在DBGrid中的一個欄位 用 DBCheckBox來表示 就是說在DBGrid中插入 DBCheckBox
------
將問題盡快結案也是一種禮貌! |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |