Delphi - база знаний

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


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



Пользователь может перемещать строки и колонки 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;

Взято с Исходников.ru

Примечание от Vit: код можно написать значительно компактнее:

 type TFake = class(TStringGrid);
...
 
  procedure TForm1.Button1Click(Sender: TObject); 
  begin 
    TFake(StringGrid1).MoveColumn(1, 3); 
  end;





Содержание раздела