Arrastando um SubItem de um TreeView para um RichEdit

Delphi

28/08/2017

Boa tarde,

Estou criando uma aplicação em que o usuário irá arrastar (drag-drop) um SubItem de um TreeView e o caption do SubItem arrastado poderá ser adicionado em um RichEdit (para o local do texto onde ele quiser - cursor).

Como eu poderia fazer isso?
Há algum artigo onde explique melhor como fazer Drag-Drop?


Desde já agradeço.
Lucas Bernieri

Lucas Bernieri

Curtidas 0

Melhor post

Natanael Ferreira

Natanael Ferreira

28/08/2017

Veja se este exemplo ajuda:

Altere a propriedade do Treeview e RichEdit chamada DragMode para dmAutomatic:

function RECharIndexByPos(RichEdit: TRichEdit; X, Y: Integer): Integer;
var
  P: TPoint;
begin
  P := Point(X, Y);
  Result := SendMessage(RichEdit.Handle, EM_CHARFROMPOS, 0, Longint(@P));
end;


procedure Tform1.RichEdit1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
var
  P: TPoint;
begin
  // verifica se a origem é um Treeview
  Accept := Source = TTreeView(Source);
  if GetCursorPos(P) then
    with RichEdit1 do
    begin
      // Pega o índice da posição do mouse non RichEdit
      P := ScreenToClient(P);
      SelStart := RECharIndexByPos(RichEdit1, P.X, P.Y);
      SetFocus;
    end;
end;


procedure Tform1.RichEdit1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  // Finalmente insere o texto na posição do mouse
  RichEdit1.SelText := TTreeView(Source).Selected.Text;
end;
GOSTEI 1

Mais Respostas

Lucas Bernieri

Lucas Bernieri

28/08/2017

Muito obrigado Natanael, funcionou perfeitamente. :)
GOSTEI 0
POSTAR