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

Опубиковано: 21.02.2009 г., автор: , просмотров: 34391

    Delphi уроки - Drag&Drop в компоненте DBGrid

    Не мало статей уже написано про то как перетаскивать различные объекты, по форме используя функцию 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. Согласитесь что пользователю будет намного удобнее работать в таком режиме, да что там удобнее, намного быстрее трансферы дешево в любую точку.)

    P.S. Хотите вперед всех остальных посетителей сайта получать свежие Видео уроки, Аудио подкасты, статьи по Delphi.
    Учавствовать в конкурсах и постепенно вливаться в нашу команду ?!
    Тогда прямо сейчас подписывайтесь на бесплатную мультимедийную рассылку сайта delphiexpert.ru
    Нас уже больше чем 1500 человек !



    Похожие материалы

    Последние из рубрики

    Егорка 24 May 2012 в 00:00 #
    пасибо!
    ALE 28 Jun 2011 в 00:00 #
    D7
    то-то и плохо. А как реализовать перенос из гриды действиями
    1. нажал на кнопку мыши,
    2. перетащил,
    3. отпустил мыши?
    Впрочем. Пока писал нашел ответ. OnMouseMove и параметры отвечающий за статус кнопок мыши State. Ну а дальше сами додумайте
    Serios 31 Oct 2010 в 00:00 #
    а нет, все получилось :) я думала перетаскиванием надо, а тут просто нажал, отпустил, перенес.. Спасибо большое!!!
    Serios 30 Oct 2010 в 00:00 #
    :( а у меня не срабатывает...
    Va-Bank 03 Jun 2009 в 00:00 #
    Чтобы оперировать данными в таблице все таки удобнее юзать запросы SQL мне кажется. И местами поменять например две строки это не в ДБГриде, а в сортировке самой таблицы. Во каламбур :)

    ОтменитьДобавить комментарий