Не мало статей уже написано про то как перетаскивать различные объекты, по
форме используя функцию Drag&Drop, но все-таки в очередной раз
хочу вернуться к этой теме и рассказать вам как можно используя
Drag&Drop легко организовать перетаскивание строк в
компоненте DBGrid. Не буду вас долго томить с введением, и
поэтому давайте начинать...
Открываем Delphi и создаем новый проект. На форме нам
понадобиться один компонент Memo с закладки Standard (именно в него мы будем
перетаскивать строки), а также непосредсвенно сам компонент DbGrid с закладки
DataControl.

Ну что я надеюсь, вы уже справились и кинули Memo и DbGrid на форму, да вот
еще, в этом уроке я не буду рассказывать вам о том как подключиться к базе
данных и как вывести таблицу из БД в компонент DBgrid, я предполагаю что вы это
умеете делать.
Что теперь, выделяем DbGrid и в Object Inspector'e на вкладке
Events создаем событие OnCellClick (кликаем 2 раза)
Теперь, когда Delphi создал для нас заготовку под будующую процедуру напишем
между begin и end вот такой код:
DBGrid1.BeginDrag(True);
Далее, нам нужно сказать компоненту Memo откуда ему можно
принимать данные. Поэтому создаем обработчик событий OnDragOver на компоненте
Memo и опять же между begin .. end прописываем вот такой код:
Accept:= Source IS TDBGrid;
Ну и последние что нам нужно сделать это создать еще один
обработчик событий OnDragDrop опять же на компоненте Memo. Ниже я привожу полный
код процедуры DragDrop ну а вы уже смотрите на то что получилось у меня и
добавляйте к себе в код недостающие строки.
procedure TForm1.Memo1DragDrop(Sender, Source: TObject; X, Y: Integer);
var i : integer;
begin
Memo1.Clear;
for i:= 0 to -1 + DBGrid1.FieldCount do
begin
Memo1.Lines.Add(DBGrid1.Fields[i].AsString);
end;
end;
Вот и все как видите ничего сложного, запускаем проект и переносим строчку из
DbGrid в Memo.
|