Рассмотрим теперь перенос ячеек в StringGrid1. Поскольку, как и в случае с Memo, простое нажатие левой кнопки занято под другие действия, установим DragMode = dmManual и будем запускать Drag при нажатии левой кнопки, удерживая клавиши Alt или Ctrl. Запишем в OnMouseDown:
Code: |
var Acol, ARow: Integer; begin with StringGrid1 do if (ssAlt in Shift) or (ssCtrl in Shift) then begin MouseToCell(X, Y, Acol, Arow); if (Acol >= FixedCols) and (Arow >= FixedRows) then // не будем перетаскивать из фиксированных ячеек begin if ssAlt in Shift then Tag := 1 else if ssCtrl in Shift then Tag := 2; // запомним что нажато - Alt или Ctrl - в Tag StringGrid1 BeginDrag(True) end else Tag := 0; end; end; |
Код OnDragOver учитывает также возможность перетаскивания из StringGrid2 (описание ниже)
Code: |
var Acol, ARow: Integer; begin with StringGrid1 do begin MouseToCell(X, Y, Acol, Arow); Accept := (Acol >= FixedCols) and (Arow >= FixedRows) and (((Source = StringGrid1) and (Tag > 0)) or (Source = StringGrid2)); end; |
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!