2

所有者の TreeView を作成したいので、AdvancedCustomDrawItem メソッドをオーバーライドしようとしています。これは私の試みです:

type TTreeView=class (Vcl.ComCtrls.TTreeView )
  protected
  procedure AdvancedCustomDrawItem(
  Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage;
  var PaintImages, DefaultDraw: Boolean);override;

 end;

しかし、私はこのエラーを受け取りました:[dcc32エラー] Unit1.pas(10): E2137 Method 'AdvancedCustomDrawItem' not found in base class

4

1 に答える 1

2

そのメソッドは存在しないため、オーバーライドできません。OnAdvancedCustomDrawItemイベントが発生し、そこからオーバーライドCustomDrawItemできます。これは次のように宣言されていTCustomTreeViewます:

function CustomDrawItem(Node: TTreeNode; State: TCustomDrawState;
  Stage: TCustomDrawStage; var PaintImages: Boolean): Boolean; virtual;

基本実装はOnCustomDrawItemOnAdvancedCustomDrawItemイベントの両方を起動します。

この取り組みでどこにでも行きたい場合は、このコントロールのソースコードを参照する必要があります。

于 2012-10-04T15:58:03.307 に答える