15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Как перемещать строки и колонки в StringGrid.

Компилятор: Delphi

Пользователь может перемещать строки и колонки StringGrid при помощи мышки. Можно ли это сделать программно? В описании TCustomGrid можно увидеть методы MoveColumn и MoveRow, однако они скрыты в TStringGrid. Но нам ничего не мешает просабклассить TStringGrid и объявить эти методы как public:

  type
    TStringGridX = class(TStringGrid)
    public
      procedure MoveColumn(FromIndex, ToIndex: Longint);
      procedure MoveRow(FromIndex, ToIndex: Longint);
    end;

Чтобы воспользоваться этими методами, достаточно вызвать соответствующий метод предка:

  procedure TStringGridX.MoveColumn(FromIndex, ToIndex: Integer);
  begin
    inherited;
  end;

  procedure TStringGridX.MoveRow(FromIndex, ToIndex: Integer);
  begin
    inherited;
  end;

Этот компонент не нужно регистрировать в палитре компонентов. Просто используйте потомка TStringGrid или любого TCustomGrid, и вызывайте его методы:

  procedure TForm1.Button1Click(Sender: TObject);
  begin
    TStringGridX(StringGrid1).MoveColumn(1, 3);
  end;