2016-10-26 32 views
1

我創建自己的DBGRid,並且它工作正常,除了選擇列表。無論爲網格設置了哪種按鈕樣式,它總是顯示就地編輯器,無論是選擇列表還是橢圓按鈕! 。自定義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; 

而且構造函數和析構函數只是調用繼承,用構造函數只是設置一些顏色供格。

回答

3

之所以沒有選擇列表或按鈕是您使用的是TInplaceEdit作爲不支持你所需要的功能單元格編輯器。

TDBGrid使用從TInplaceEditList繼承的TDBGridInplaceEdit作爲其就地編輯器,該編輯器爲其下拉列表集成了TCustomListbox,並繪製和管理編輯按鈕。

+0

但有一個問題:我試圖使用TDBGridInplaceEdit,但它是在DBgrids單元的實現部分中聲明的。除了改變Delphi源代碼之外,還有什麼方法可以使用它嗎? – DrWael

+0

@DWW - 確實是一個問題。您可以嘗試從TInplaceEditList(它更接近TGridInplaceEdit)派生自定義編輯器,並通過查看TGridInplaceEdit的VCL源添加缺少的功能。但我不確定這是否會奏效,在dbgrid源代碼中有強制轉換將編輯器轉換爲TGridInplaceEdit。 –

+0

考慮問一個關於你實際試圖解決的問題的問題。接下來可能還有其他方法來替換編輯器。 –

相關問題