自定义dbgrid和Picklist问题

时间:2016-10-26 22:05:13

标签: delphi subclassing dbgrid picklist

我正在创建自己的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;

构造函数和析构函数只调用继承,构造函数只是为网格设置了一些颜色。

1 个答案:

答案 0 :(得分:4)

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

TDBGrid使用从TDBGridInplaceEdit继承的TInplaceEditList作为其原位编辑器,该编辑器为其下拉列表集成TCustomListbox并绘制和管理编辑按钮。