自定义 dbgrid 和 Picklist 问题

Custom dbgrid and Picklist issue

我正在创建自己的 DBGRid,它工作正常,除了选择列表。无论为网格设置什么按钮样式,它总是显示就地编辑器,既不是选择列表也不是椭圆按钮!

我想不出我犯的错误:( 。这是相关代码:

function TMyDBGrid.CreateEditor: TInplaceEdit;

begin
result:=TInplaceEdit.Create(self);

end;

function TMyDBGrid.GetEditStyle(ACol, ARow: integer): TEditStyle;
begin
 case Columns[ACol].ButtonStyle of
  cbsAuto : Result:=esPickList;
  cbsNone : result:=esSimple;
  cbsEllipsis : result:=esEllipsis;
end;
end;

并且构造函数和析构函数只是调用 inherited ,构造函数只是为网格设置一些颜色。

没有选择列表或按钮的原因是您使用 TInplaceEdit 作为单元格编辑器,它不支持您需要的功能。

TDBGrid 使用继承自 TInplaceEditListTDBGridInplaceEdit 作为其就地编辑器,该编辑器集成了 TCustomListbox 用于其下拉列表并绘制和管理编辑按钮。