2016-10-26 16 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は、をその場所のエディタとして継承し、ドロップダウンリストにTCustomListboxを組み込み、編集ボタンをペイントして管理するTDBGridInplaceEditを使用します。

+0

問題があります:私はTDBGridInplaceEditを使用しようとしましたが、DBgridsユニットの実装部分で宣言されています。 Delphiのソースを変更する以外にも、それを使用する方法はありますか? – DrWael

+0

@DrW - それは本当に問題です。 TGridInplaceEditに近いTInplaceEditListからインプレースエディタを派生させ、TGridInplaceEditのVCLソースを見て欠けている機能を追加してみてください。しかし、私はどちらかが動作するかどうかは分かりません。エディタをTGridInplaceEditにキャストするdbgridソースにハードキャストがあります。 –

+0

実際に解決しようとしている問題について質問することを検討してください。エディタを置き換える方法は他にもあります。 –

関連する問題