procedure TForm13.DBGrid1CellClick(Column: TColumn); begin if (Column.Field.FieldName = 'aboolean') then begin DBGrid1.SelectedField.DataSet.Edit; if DBGrid1.SelectedField.AsInteger = 0 then DBGrid1.SelectedField.AsInteger := 1 else if DBGrid1.SelectedField.AsInteger = 1 then DBGrid1.SelectedField.AsInteger := 0; DBGrid1.SelectedField.DataSet.Post; end; end; //========================================================================= procedure TForm13.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); // CheckBox1 列 要用到的 begin if (Column.Field.FieldName = 'aboolean') then with CheckBox1 do begin DBGrid1.Canvas.FillRect(Rect); if Column.Field.AsInteger = 0 then drawframecontrol(DBGrid1.Canvas.Handle, Rect, dfc_button, CtrlState[False]) else drawframecontrol(DBGrid1.Canvas.Handle, Rect, dfc_button, CtrlState[True]); end; end; //============================================================================== procedure TForm13.FormCreate(Sender: TObject); DBGrid1.Options:= DBGrid1.Options-[ dgEditing]; //CheckBox1 不要 双击后,出现 0的Edit显示 end; //============================================================================== procedure TForm13.DBGrid1TitleClick(Column: TColumn); //CheckBox1专用 var i: Integer; begin if (Column.Field.FieldName = 'aboolean') then begin FDQuery1.First; // 游标回滚 DBGrid1.SelectedRows.CurrentRowSelected := True; // 第一行被选中 if trim(Column.Title.Caption) = '全选' then begin for i := 0 to DBGrid1.DataSource.DataSet.RecordCount - 1 do begin DBGrid1.Fields[3].DataSet.Edit; //3为 ChechBox1所在的列序号 DBGrid1.Fields[3].AsInteger := 1; DBGrid1.Fields[3].DataSet.Post; DBGrid1.DataSource.DataSet.next; end; Column.Title.Caption := '全消'; end else begin for i := 0 to DBGrid1.DataSource.DataSet.RecordCount - 1 do begin DBGrid1.Fields[3].DataSet.Edit; DBGrid1.Fields[3].AsInteger := 0; DBGrid1.Fields[3].DataSet.Post; DBGrid1.DataSource.DataSet.next; end; Column.Title.Caption := '全选'; end; FDQuery1.First; // 游标回滚 DBGrid1.SelectedRows.CurrentRowSelected := True; // 选中第一行 end; end;
分类:
Delphi原生DBGrid学习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律