3

VirtualTreeView の IVTEditLink エディターに複数のコンポーネントを追加する方法はありますか?

4

2 に答える 2

7

エディター コンテナーとしてスタンドアロン フォームを使用し、IVTEditLinkこの目的のためにコンセプトを残します。

  • たとえば、エディター コンポーネント コンテナーとして使用する場合は、その権利をTPanel選択することを検討する必要があります。多くのフィールドを持つエディターは、仮想ツリーの境界矩形またはフォームの境界と重なる場合がありますParentTPanel
  • コンポーネントOnDeactivateよりもフォームにイベントを実装する方がはるかに簡単ですTPanel
  • IVTEditLinkここではその意味が失われるため、概念をそのままにしておくことができます。これIVTEditLinkは、ノード全体ではなく、特定のノードおよび列エディター向けに設計されています。OnEditingイベントが到着したとき、またはダブルクリックイベントなどで、フォームエディターを開くだけです。

IVTEditLinkしかし、複数の列のノード編集の概念を残すことに納得できなかった場合は、インターフェースthis exampleのエディターとしてのフォームの実装を確認できIVTEditLinkます。

于 2012-01-08T14:32:25.170 に答える
0

OnCreateEditorイベントでカスタム エディターを作成するだけです。このイベントはColumnパラメーターを提供するため、異なる列に対して異なるエディターを作成できます。例えば:

procedure TForm1.OnCreateEditor(Sender: TBaseVirtualTree; Node: PVirtualNode;
  Column: TColumnIndex; out EditLink: IVTEditLink);
begin
  case Column of
    0: EditLink := TColorEditLink.Create;
    1: EditLink := TFontEditLink.Create;
  //etc..
  end;
end;
于 2012-01-08T12:39:30.160 に答える