DBGRIDにチェックボックス

解決


たこ  2015-02-26 19:55:12  No: 47072

またXE7と旧バージョンの違いについてお尋ねします。
DBGRIDのBoolean型のフィールドをチェックボックスで表示したいのですが
DELPHI5では下記コードで表示できるのですがXE7だと
「E2003 未定義の識別子:'ftBoolean'」とエラーになります。
対応策をご存じであればご教示下さい。

procedure TMainForm.DBGrid1CellClick(Column: TColumn);
begin
  if Column.Field.DataType = ftBoolean then
  begin
    Column.Field.DataSet.Edit;
    Column.Field.AsBoolean := not Column.Field.AsBoolean;
  end;
end;

procedure TMainForm.DBGrid1ColEnter(Sender: TObject);
begin
  if TDBGrid(Sender).SelectedField.DataType = ftBoolean then
    TDBGrid(Sender).Options := TDBGrid(Sender).Options - [dgEditing]
  else
    TDBGrid(Sender).Options := TDBGrid(Sender).Options + [dgEditing];
end;

procedure TMainForm.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
var
  R: TRect;
begin
  if Column.Field.DataType = ftBoolean then
  begin
    TDBGrid(Sender).Canvas.FillRect(Rect);
    R := Rect;
    InflateRect(R, -3, -5);
    if Column.Field.AsBoolean then
      DrawFrameControl(TDBGrid(Sender).Canvas.Handle, R, DFC_BUTTON,
        DFCS_BUTTONCHECK + DFCS_CHECKED)
    else
      DrawFrameControl(TDBGrid(Sender).Canvas.Handle, R, DFC_BUTTON,
        DFCS_BUTTONCHECK);
  end;
end;


take  URL  2015-02-26 20:50:10  No: 47073

やっている事は下記サイトと同じ事なので

http://whityx.blogspot.jp/2012/10/delphidbgrid.html

それでエラーが出ると言うことは外部宣言の
「uses」の書き方が間違っているかと思います。

ues部分も書き出すと何かわかるかと


たこ  2015-02-26 21:43:25  No: 47074

ありがとうございました。
改めて記述しなおしたらチェックボックス表示出来ました。何が悪かったのかわかりませんが(^^;
ただ1点、アクティブなセルだけチェックボックスと同時にTrueあるいはFalseと文字が表示されます。
このままでも動作に支障はないので構わないといえば構わないのですが文字表示させない方法をご存じであればお教え下さい。


take  URL  2015-02-26 22:08:27  No: 47075

描画処理以外の文字が表示されるということであれば
元の描画処理が有効なのでは?

  DBGrid1.DefaultDrawing := false;

こちらを参考に
http://delfusa.main.jp/delfusafloor/archive/www.nifty.ne.jp_forum_fdelphi/samples/00194.html


たこ  2015-02-27 02:10:52  No: 47076

takeさん、ありがとうございました。解決です。
また最初に「未定義の識別子:'ftBoolean'」とエラーになったのは
usesに「Db」がなかったためでした。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加