对应的编辑控件为ComboBoxEx1
procedure TForm13.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var Im1: TBitmap; begin if (gdFocused in State) then begin //====================ComboBoxEx1 coloer======================== if (Column.Field.FieldName = 'aBitmap') then with ComboBoxEx1 do begin Left := Rect.Left + DBGrid1.Left + 1; Top := Rect.Top + DBGrid1.Top + 1; Width := Rect.Right - Rect.Left + 2; Width := Rect.Right - Rect.Left + 2; Height := Rect.Bottom - Rect.Top + 2; ComboBoxEx1.ItemIndex := ComboBoxEx1.Items.IndexOf(Column.Field.Value); // 从 数据库 中读 并 设置 ComboBoxEx1 Visible := True; end; end; //====================================================================== if (Column.Field.FieldName = 'aBitmap') then begin Im1 := TBitmap.Create; with DBGrid1.Canvas do begin Brush.Color := clinfoBk; FillRect(Rect); if (Column.Field.AsInteger = 0) then ImageList1.GetBitmap(0, Im1); if (Column.Field.AsInteger = 1) then ImageList1.GetBitmap(1, Im1); if (Column.Field.AsInteger = 2) then ImageList1.GetBitmap(2, Im1); Draw(round((Rect.Left + Rect.Right - Im1.Width) / 2), Rect.Top, Im1); end; ComboBoxEx1.ItemIndex := ComboBoxEx1.Items.IndexOf(Column.Field.Value); end; //===================================================================== end;
procedure TForm13.DBGrid1ColExit(Sender: TObject); // 退出 时,不显示 编辑 控件 begin if DBGrid1.SelectedField.FieldName = 'aBitmap' then ComboBoxEx1.Visible := False; end;
procedure TForm13.ComboBoxEx1Change(Sender: TObject); begin //将修改值写回数据库里 DBGrid1.DataSource.Edit; DBGrid1.Columns[5].Field.asinteger:= ComboBoxEx1.ItemIndex; //5 为 'aBitmap'ComboBoxEx1所在的列序号 FDQuery1.Post; end;
分类:
Delphi2010
, Delphi原生DBGrid学习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2021-01-21 UniGUI学习之UniHTMLFrame1中HTML书写原则(44)