Drag and Drop в Delphi

Всем привет, появилась необходимость перетаскивать элементы с Form1 на Form2 к примеру перенести мышью текст с 1-й формы в Edit1 другой формы, возможно ли такое реализовать? И в какую сторону искать информацию? Я слышала про Drag and Drop, в инете полно примеров, но там перетаскивание файлов, а мне нужно из одного окна в другое и в нужный компонент, помогите с решением это проблемы!


Ответы (1 шт):

Автор решения: Alex R.

Вот статья с небольшим описанием механизма Drag and Drop.

Основные участи кода для элемента-источника TFormFrom.EditFrom (события OnEndDrag, OnMouseDown) и элемента-приемника TFormTo.EditTo (события OnDragDrop, OnDragOver)

procedure TFormFrom.EditFromEndDrag(Sender, Target: TObject; X, Y: Integer);
begin
  if Assigned(Target) then
    TEdit(Sender).Text := 'Текст перенесен в ' + TEdit(Target).Name;
end;

procedure TFormFrom.EditFromMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,
  Y: Integer);
begin
  if Button = mbLeft then
    TEdit(Sender).BeginDrag(True);
end;

procedure TFormTo.EditToDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  TEdit(Sender).Text := TEdit(Source).Text;
  TEdit(Sender).SetFocus;
  TEdit(Sender).SelectAll;
end;

procedure TFormTo.EditToDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState;
  var Accept: Boolean);
begin
  if Source is TEdit then
    Accept := True
  else
    Accept := False;
end;
→ Ссылка