gpt4 book ai didi

delphi - Delphi:如何复制表格

转载 作者:行者123 更新时间:2023-12-03 18:43:58 24 4
gpt4 key购买 nike

我正在尝试复制或“交换” TListBox引用的两种形式。

这是我要尝试执行的操作,但出现错误(如下所示):

      cf1 := TCustomform(lstPackages.Items.Objects[origNdx]);
cf2 := TCustomform(lstPackages.Items.Objects[origNdx - 1]);

cfTmp.Assign(cf1); //error here: cannot assign TfPackage to a TfPackage
cf1.Assign(cf2);
cf2.Assign(cfTmp);

lstPackages.Items.Exchange(origNdx, origNdx - 1);
lstPackages.ItemIndex := origNdx - 1;


因此,我正在尝试交换列表项,并且我需要对表单进行类似的操作,但是却收到了无法分配正在使用的表单类型的错误。 TfPackage是TCustomForm的后代。

我该如何完成同一件事?

最佳答案

您不必这样做。 TStrings.Exchange交换对象和字符串,因此已经为您解决了。相同的表单对象将与相同的字符串保持关联。

编辑:作为对评论的回应,如果您需要交换表单在另一个列表中的位置,那么这并不困难。您说的是正确的基本概念:

cfTmp.Assign(cf1);
cf1.Assign(cf2);
cf2.Assign(cfTmp);


但是,您并不是要复制对象,而是要交换对它们的引用。对象不是记录。在Delphi中,所有对象变量(包括表单容器中的变量)都是对象的引用(隐藏的隐式指针)。因此,您需要做的是:

cfTmp := list[cf1Position];
list[cf1Position] := list[cf2Position];
list[cf2Position] := cfTmp;

关于delphi - Delphi:如何复制表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3205662/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com