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