Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Delphi中选择并删除TStringGrid中的单元格?_Delphi - Fatal编程技术网

如何在Delphi中选择并删除TStringGrid中的单元格?

如何在Delphi中选择并删除TStringGrid中的单元格?,delphi,Delphi,我知道如何将数据输入到网格中,但我还需要为所选行设置“删除”按钮。我一直在网上找,几乎什么也没找到。如何删除东西,我就是找不到任何东西,比如如何选择特定的单元格,然后,如何编辑/删除,或者对她做任何事情。 以下是我所指的示例: 我用鼠标或任何东西选择一个单元格,然后它选择(例如)该单元格所在的整行。之后,我点击按钮删除。如何告诉删除函数选择了哪一行。找到一个anwser: 创建过程: procedure StringGridDeleteRow( AStringGrid:TStringGrid;

我知道如何将数据输入到网格中,但我还需要为所选行设置“删除”按钮。我一直在网上找,几乎什么也没找到。如何删除东西,我就是找不到任何东西,比如如何选择特定的单元格,然后,如何编辑/删除,或者对她做任何事情。 以下是我所指的示例:

我用鼠标或任何东西选择一个单元格,然后它选择(例如)该单元格所在的整行。之后,我点击按钮删除。如何告诉删除函数选择了哪一行。

找到一个anwser:

创建过程:

procedure StringGridDeleteRow( AStringGrid:TStringGrid; ARow:integer );
var
  nRow:integer;
begin
  with AStringGrid do
    begin
      for nRow := ARow to RowCount - 2 do
        Rows[nRow].Assign(Rows[nRow+1]);
      Rows[RowCount-1].Clear;
      RowCount := RowCount - 1
    end;
end;
然后将此行添加到按钮:

StringGridDeleteRow(StringGrid1, StringGrid1.Row);

这比我想象的要容易

您不能删除单个单元格,但可以使用
TStringGrid.cells
属性编辑/清除其内容,例如:
StringGrid1.cells[Col,Row]:=''@RemyLebeau谢谢你的回复。我知道我可以删除行/列。我所需要的只是如何在代码中选择的信息。如何对所选单元格/行执行任何操作。例如,您单击单元格[1,2],然后想要删除她。单击“删除”按钮并完成。delete命令如何知道要删除的单元格。我希望我能说得更清楚些。“如何删除命令知道我要删除哪个单元格”-使用
TStringGrid.Col
TStringGrid.Row
属性来获取/设置当前选定的单元格,例如:
StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row]:=''
还可以查看用于选择单元格范围的
TStringGrid.Selection
属性。您不需要调用Clear,可以删除该行。使用
BeginUpdate/EndUpdate
如何?您可以为StringGrid创建类帮助器。然后您将能够执行
StringGrid1.DeleteRow(i)
,并将这部分代码从表单移动到单独的单元中