我有一个字符串网格,我可以从中删除列。我定义了一个CustomStringGrid类型,允许我使用DeleteColumn方法。
它的外观如下:
TCustomStringGrid = class(TStringGrid)
[...]
With tCustomStringGrid(mygrid) do
DeleteColumn(col)
end;
是否有类似添加列的内容?我尝试过InsertColumn但它似乎并不存在。我想在特定位置添加一列。事实上,如果用户删除了一个列,我有一个撤消按钮,我想重新插入已删除的列(我将数据保存在一个数组中,这样我可以重新创建列,但我不知道如何在特定位置插入一个。)
谢谢!
答案 0 :(得分:1)
它不是内置的,但很容易模仿,来自HackClass的ColCount = ColCount + 1
和MoveColumn
。
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;