2

編集可能なアイテムを含むTreeViewがあります。F2キーを押すか、選択後に任意の項目をクリックすると、インプレースエディタが表示されます。

そのエディターに表示されるテキストを表示する前に変更するにはどうすればよいですか?たとえば、ツリーアイテムのテキストはPoint 1 (300, 450)ですが、インプレースエディタに。のみを表示したいとしますPoint 1

OnEditing私はそのようなイベントをキャッチしようとしました:

procedure TForm1.TreeViewEditing(Sender: TObject; Node: TTreeNode; 
  var AllowEdit: Boolean);
begin
  AllowEdit := True;
  Node.Text := 'text to edit';
end;

ただし、インプレースエディタのテキストは変更されません。ツリーアイテムのテキストは、編集をキャンセルした後にのみ更新されます。これを正しく行う方法は?

4

2 に答える 2

7

以下が当てはまるかどうか試してください。

uses
  Winapi.CommCtrl;

procedure TForm1.TreeView1Editing(Sender: TObject; Node: TTreeNode; var AllowEdit: Boolean);
var
  EditHandle: THandle;
  S: string;
begin
  AllowEdit := True;
  S := 'text to edit';
  EditHandle := TreeView_GetEditControl((Sender as TTreeView).Handle);
  SendMessage(EditHandle, WM_SETTEXT, 0, LParam(PChar(S)));
end;
于 2012-11-08T08:20:56.853 に答える