gpt4 book ai didi

delphi - 克隆 TStringGrid 组件

转载 作者:行者123 更新时间:2023-12-03 19:45:25 25 4
gpt4 key购买 nike

我开始学习德尔福。所以我决定从头开始编写一个像 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)

最佳答案

我会使用 tabcontrol 而不是 pagecontrol。这样,您最终会得到多个选项卡,但只有一个页面和网格。然后我会制作某种数据结构来保存我所有的单元格信息,并将这个结构呈现到网格中。这样,我可以拥有多个结构,并让事件选项卡决定要呈现哪个结构。你最终也会在你的 gui 和你的逻辑之间获得更松散的耦合,使以后更容易改变事情。例如。如果您需要将其他电子表格中的某些值引入当前电子表格的单元格中,您可以加载一个结构并挑选出想要的值。根本不需要为第二个电子表格制作任何 gui。

对于 3.party 组件,我会推荐 TMS FlexCell 和 TAdvSpreadGrid .这会给你大部分你需要的东西。

关于delphi - 克隆 TStringGrid 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1525429/

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