我开始学习德尔福。所以我决定从头开始编写一个像 MS Excel 这样的应用程序。在一个新的 Form1 中,我确实放置了一个仅包含 1 页的 TPageControl 组件。在那个页面中,我确实放置了一个 TAdvStringGrid 和一个带有一些按钮(button1、button2)的 TPanel 和一个 Popup1 菜单,用于定义网格上的一些操作,如复制单元格、复制行、删除行等。对于那个 StringGrid,还有,我已经定义了一些属性,比如颜色、字体等。我在主窗体中添加了一个带有按钮的工具栏,以便向 PageControl 添加更多页面。该按钮的 OnClick 方法定义了两个操作:
1) 将新的 Page2 添加到 PageControl,以及 2) 在新创建的 Page2 中添加新的 StringGrid。
在 Tpagecontrol 的新页面中创建的新的(运行时定义的)StringGrid 应该继承(获取、复制、克隆、复制)在设计时已经在第一页中定义的 StringGrid 父级的属性和方法,并且应该能够调用PopUp1 菜单就像 StringGrid 父级一样。我们如何做到这一点?
一开始,我以为我应该使用 assing() 复制 StringGrid 属性,但是当使用这种方法时,当鼠标右键单击新的 StringGrid 时不会弹出弹出菜单...和按钮(button1 和 button2) Form1 仅适用于第一个 StringGrid,但不适用于新添加的 StringGrid。我确实在某处读到,为了解决这个问题,我可以通过使用写入和读取 TMemoryStream 来复制 StringGrid 组件(将父字符串网格保存到内存流中,创建一个新的字符串网格,然后将该内存流读入新创建的字符串网格),所以我做了,但是当程序执行这个组件克隆方法时,我得到一个运行时错误。:-(
我确实仔细检查了帮助。没有找到关于该主题的内容。似乎没有任何 Delphi 组件库或第三方组件可以处理此类任务。有人可以帮忙吗?:o)