|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Drag&Drop ListBox and DBGrid
Воообщем, здарасте!
Ну, что то типо того... Группа предприятий, отображаются в ListBox В таблице (ну отображается в DBGrid) есть поле код группы... так вот как организовать такую штукенцию.. чтобы удерживая кнопку мыши можно было какбы перенести запись в другую группу.. ну впринцыпе надо чтоб, при переносе мышки ... получить имя группы в которую перенесли запись из таблицы, а там проблем не будет.. с базой работь мало мальски умеем ... как осуществить перетаскивание? |
#2
|
|||
|
|||
У DBGrid установить свойства: DragKind = dkDrag (установлено по умолчанию), DragMode = dkManual.
На DBGrid.OnMouseMove пишем обработчик: Код:
procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if (ssLeft in Shift) then DBGrid1.BeginDrag(False); end; У ListBox пишем обработчики событий OnDragOver и OnDragDrop. Параметр Source указывает на компонент-источник: Код:
procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer); var i: Integer; S: String; begin // Узнаем на какой строке ListBox была отпущена мышка i := ListBox1.ItemAtPos(Point(X, Y), True); if i <> -1 then begin // И чего-нибудь делаем. В данном случае выводим информацию // о том, что куда перетащили S := (Source as TDBGrid).DataSource.DataSet.FieldByName('Name').AsString; ShowMessage(S + ' -> ' + ListBox1.Items[i]); end; end; procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin // Принимаем Drag&Drop только от DBGrid1 Accept := Source = DBGrid1; end; |
#3
|
|||
|
|||
Спасибо!!!!
Не думал что всё настолько просто!!!! Ещё раз спасибо!
|