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

 

Рассмотрим теперь перенос ячеек в 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;

 

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

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

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

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


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