Содержание материала

  

Кроме того, в Memo2 можно переносить выбранную запись из DBGrid1, у которого установлено в Options dgRowSelect = True. В сетке отображается таблица из стандартной поставки Delphi DBDEMOS - Animals.dbf. Перетаскивание осуществляется аналогично StringGrid2, правой кнопкой мыши, только по событию OnMouseMove

 

 

if ssRight in Shift then

   DBGrid1.BeginDrag(true);

 

Код в Memo2DragDrop, относящийся к переносу из DBGrid1:

 

else

   with DBGrid1.DataSource.DataSet do

   begin

     s := '';

     for c := 0 to FieldCount - 1 do

       s := s + Fields[c].AsString + ' | ';

     memo2.lines.add(s);

   end;

// в случае dgRowSelect = False для переноса одного поля достаточно сделать

// memo2.lines.add(DbGrid1.SelectedField.AsString);

 

Drag из DBGrid1 принимается также на Panel3, условие приема очевидно, а OnDragDrop выглядит так:

 

 

Panel3.Height := 300// раскрываем панель

Image1.visible := True;

OleContainer1.Visible := false;

Image1.Picture.Assign(DBGrid1.DataSource.DataSet.FieldByName('BMP'));

// показываем графическое поле текущей записи таблицы

 

Теперь покажу, как можно передвигать мышью визуальные компоненты в Run-Time. Для Panel1 установим DragMode = dmAutomatic, в OnDragOver формы пишем:

 

 

var

Ct: TControl;

begin

Ct := ControlAtPos(Point(X + Panel1.Width, Y + Panel1.Height), True, True);

// для упрощения проверяем перекрытие с другими контролами только правого нижнего угла

Accept := (Source = Panel1) and ((Ct = nil) or (Ct = Panel1));

 

и в OnDragDrop формы очень просто

 

 

Panel1.Left := X;

Panel1.Top := Y;

 

Другой метод перетаскивания можно встретить в каждом FAQ по Delphi:

 

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

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить