Самоучитель по Delphi 7 для профессионалов



              

Интерфейс переноса Drag-and-Drop - часть 4


 begin

 if Source is TEdit

then Accept := True

else Accept :<= False; 

end;

procedure TMainForm.Edit2DragDrop(Sender, Source: TObject; X, Y:

Integer);

begin

TEdit(Sender).Text := TEdit(Source).Text;

TEdit(Sender).SetFocus;

TEdit(Sender).SelectAll;

 end;

procedure TMainForm.EditlEndDrag(Sender, Target: TObject; X, Y: Integer); 

begin if Assigned(Target)

then TEdit(Sender).Text := 'Текст перенесен в ' + TEdit(Target).Name; 

end;

procedure TMainForm.FormDragOver(Sender, Source: TObject; X, Y: Integer;

State: TDragState; var Accept: Boolean); begin if Source.ClassName = 'TPanel'

then Accept := True

else Accept := False; 

end;

procedure TMainForm.FormDragDrop(Sender, Source: TObject; X, Y: Integer); 

begin

TPanel(Source).Left := X;

TPanel(Source).Top := Y;

 end;

end.

Для однострочного редактора Edit1 определены методы-обработчики источника. В методе EditiMouseDown обрабатывается нажатие левой кнопки мыши

и включается механизм переноса. Так как свойство DragMode для Edit1 имеет значение dmManual, то компонент без проблем обеспечивает получение фокуса и редактирование текста.

Метод EditiEndDrag обеспечивает отображение информации о выполнении переноса в источнике.

Для компонента Edit2 определены методы-обработчики приемника. Метод Edit2DragOver проверяет класс источника и разрешает или запрещает прием.

Метод Edit2DragDrop осуществляет перенос текста из источника в приемник.

Примечание

Обратите внимание, что оба компонента TEdit одновременно являются источниками и приемниками. Для этого каждый из них использует методы-обработчики другого. А исходный код методов настроен на обработку владельца как экземпляра класса TEdit.

Форма, как приемник Drag-and-Drop, обеспечивает перемещение панели Panel2, которая выступает в роли источника. Метод FormDragOver запрещает прием любых компонентов, кроме панелей. Метод FormDragDrop осуществляет перемещение компонента.

Панель не имеет своих методов-обработчиков, т. к. работает в режиме dmAutomatic и не нуждается в дополнительной обработке завершения переноса.

 




Содержание  Назад  Вперед