266______________________________________________Глава 4

ные действия. Имеется также связанное с перетаскиванием событие OnStartDrag,
которое позволяет произвести какие-то операции в начала перетаскивания. Это со-
бытие полезно при автоматическом начале перетаскивания, когда иным способом
этот момент нельзя зафиксировать.

Теперь, объединив приведенные выше фрагменты обработки перетаскивания,
просуммируем, что надо сделать, если вы имеете в приложении несколько списков
ListBox и хотите обеспечить возможность копирования строк каждого из этих спи-
сков в любой другой.

Это потребует двух операций:

• Выделите мышью все списки приложения как одну группу, перейдите в Инс-
пекторе Объектов на страницу событий, сделайте двойной щелчок около стро-
ки события OnDragOver и напишите в Редакторе Кода приведенный выше об-
работчик события OnDragOver.

• Аналогичным образом напишите общий для всех списков приведенный выше

обработчик события OnDragDrop.

И это все! Для обеспечения возможности перетаскивания вам потребовалось
написать всего два оператора. Если вы хотите начинать перетаскивание только
при выполнении какого-то дополнительного условия, например, при нажатии кла-
виши Alt, то вам потребуется сделать еще один шаг:

• Задайте для всех списков значение свойства DragMode, равное dmManual. На-
пишите для этих списков приведенный выше общий обработчик события Оп-

MouseDown.

Теперь вы можете создать форму с несколькими списками, занести в них ин-
формацию, написать эти обработчики и проверить все это на практике. На
рис. 4.13 приведен пример, демонстрирующий различные аспекты перетаскива-
ния. Этот и другие примеры имеются на диске, прилагаемом к книге. Можете по-
пробовать для тренировки сами создать аналогичный пример, позволяющий пере-
таскивать строки и метки из одного списка в другой и из списков в окно редакти-
рования Memo. В примере демонстрируются разные способы перетаскивания: ав-
томатическое, ручное, только при определенной нажатой клавише, перетаскива-
ние строк без удаления из списка-источника (т.е. копирование) и с удалением (пе-
ремещение). Думаю, что изложенного выше достаточно, чтоб вы сами смогли со-
здать подобный пример.

Пример приложения, использующего        j^^^^^F^^^""'""    '^TlSiiii»li««iiiiiiiiiiu« i

р.     о Пг                                                          'll^^^^^^^^ill0^01^ ^спмска 2            :?^ liujb'j иШциадяшиаДД^Ях ('

uniAutuilldill;          ,.. ————————i —••—•••"•••• ••• •" •" i

КИЯДИЖ^ИГ^ЧЙЩ^- • •• ; ; ::   строка 1 списка 2
[строка 2 списка 1    I^S'"1 f строка 2 списка 2    ....,..:

! строка 3 списка 1 •           строка 3 списка 2   vn:s
' строка 4 списка 1   ш^ШЩ^^ КЯН^ИЯЯВВНа^И^^

diRManueL перетаскивание sum нажатой Alt ;^|й||жй|

.    8«i|lnDtii]W>e)           -^gBiiBiOtiiKtuBl'S^^

''•;.'. строка 2 списка 3    ^sssyasi ^"P0^ 2 списка 4
:?: : строка 3 списка 4                строка 3 списка 3
'.:;::: :: строка 4 списка 4                строка 4 списка 3