2016-10-26 2 views
1

Я создаю свой собственный DBGRid, и он отлично работает, за исключением списка выбора. любой стиль кнопки установлен для сетки, он всегда показывает редактор inplace, ни список выбора, ни кнопку эллипса! .Заданный вопрос dbgrid и Picklist

я не могу понять ошибку, которую я делаю :(вот соответствующий код:

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; 

И конструктор и деструктор просто вызовите унаследовали с конструктором просто установив некоторые цвета для сетки.

ответ

3

причины нет списка выбора или кнопок, которые вы используете TInplaceEdit как редактор клетка, который не поддерживает функцию, необходимую.

TDBGrid использует TDBGridInplaceEdit, который наследует от TInplaceEditList как редактор своего места, который объединяет в своем выпадающем списке TCustomListbox и рисует и управляет кнопкой редактирования.

+0

но есть проблема: я попытался использовать TDBGridInplaceEdit, но объявлен в части реализации блока DBgrids. есть ли способ использовать его помимо изменения источника Delphi? – DrWael

+0

@DrW - Это действительно проблема. Вы можете попытаться получить ваш редактор inplace из TInplaceEditList, который находится ближе к TGridInplaceEdit, а затем добавить недостающую функциональность, посмотрев источник VCL для TGridInplaceEdit. Но я не уверен, что это тоже сработает. В источнике dbgrid есть жесткие роли, которые превращают редактор в TGridInplaceEdit. –

+0

Рассмотрите вопрос о проблеме, которую вы пытаетесь решить. Тогда могут быть другие способы замены редактора. –

Смежные вопросы