将列插入字符串网格,delphi

时间:2014-09-23 10:33:58

标签: delphi tstringgrid

我有一个字符串网格,我可以从中删除列。我定义了一个CustomStringGrid类型,允许我使用DeleteColumn方法。

它的外观如下:

TCustomStringGrid = class(TStringGrid)

[...]
With tCustomStringGrid(mygrid) do
DeleteColumn(col)
end;

是否有类似添加列的内容?我尝试过InsertColumn但它似乎并不存在。我想在特定位置添加一列。事实上,如果用户删除了一个列,我有一个撤消按钮,我想重新插入已删除的列(我将数据保存在一个数组中,这样我可以重新创建列,但我不知道如何在特定位置插入一个。)

谢谢!

2 个答案:

答案 0 :(得分:1)

它不是内置的,但很容易模仿,来自HackClass的ColCount = ColCount + 1MoveColumn

type
  THackGrid=Class(Grids.TCustomGrid)
  End;

Procedure InsertColumn(G:TStringGrid;Position:Integer);
begin
  if Position<G.ColCount then
    begin
      G.ColCount := G.ColCount + 1;
      THackGrid(g).MoveColumn(G.ColCount - 1,Position);
    end;
end;

procedure TMyForm.Button1Click(Sender: TObject);
begin
    InsertColumn(StringGrid1,1);
end;

答案 1 :(得分:0)

当网格无法正常工作时,两个col都可见时可能没问题,但总是有效:

Procedure MoveColumn(G:TStringGrid;OldPosition : integer;NewPosition:Integer);
var
  i : integer;
  temp : string;
  begin
  for i := 0 to g.rowcount - 1 do
    begin
    temp := g.cells[OldPosition,i];
    g.cells[OldPosition,i] := g.cells[NewPosition,i];
    g.cells[NewPosition,i] := temp;
    end;
  end;