Drag&Drop, перетаскивание строк в компоненте DBGrid

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

Открываем Delphi и создаем новый проект. На форме нам понадобиться один компонент Memo с закладки Standard (именно в него мы будем перетаскивать строки), а также непосредсвенно сам компонент DbGrid с закладки DataControl.

Delphi Drag&Drop

Ну что я надеюсь, вы уже справились и кинули 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.
Теги:
Drag&Drop, DBGrid
Добавлено: 31 Июля 2018 08:01:42 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...