Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.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
Arrays Delphi处理大量运行时创建的组件_Arrays_Delphi_Components - Fatal编程技术网

Arrays Delphi处理大量运行时创建的组件

Arrays Delphi处理大量运行时创建的组件,arrays,delphi,components,Arrays,Delphi,Components,现在,我使用两个数组,一个是TImage,另一个是TMemo,在滚动框中的文本数据行旁边绘制一个图像 我希望用一个面板上的几个组件替换TMemo。所以可能是一些静态文本、按钮和一些标签。但我现在的做法似乎会变得一团糟 有没有更好的方法不用编写组件或类就可以做到这一点。我应该使用某种多维数组,还是可以使用记录结构来声明组件并拥有一个这样的数组?记录至少可以减轻您管理大量并行数组的负担,但您可以做得比记录更好,也比数组更好 首先,您可以设计一个框架来表示表单的一行。给它一个图像,按钮,标签,以及任何

现在,我使用两个数组,一个是TImage,另一个是TMemo,在滚动框中的文本数据行旁边绘制一个图像

我希望用一个面板上的几个组件替换TMemo。所以可能是一些静态文本、按钮和一些标签。但我现在的做法似乎会变得一团糟


有没有更好的方法不用编写组件或类就可以做到这一点。我应该使用某种多维数组,还是可以使用记录结构来声明组件并拥有一个这样的数组?

记录至少可以减轻您管理大量并行数组的负担,但您可以做得比记录更好,也比数组更好

首先,您可以设计一个框架来表示表单的一行。给它一个图像,按钮,标签,以及任何你需要的东西。然后在每次需要时创建该框架类的实例。它将自动为您创建组件。你说过你不想要一个自定义组件,这就是框架的本质,但是通过把它设计成一个窗体,创建一个复合控件的负担就减轻了,所以你只需要从一组相关控件中获益,这些控件可以作为一个单元相互交互


使用不同的集合对象(尤其是
TComponentList
)而不是数组,可能会获得更好的成功,因为它比数组更容易增长和收缩,还有助于管理其内容的所有权。

所有面板是否都包含相同的子组件?您应该编写一个组件,该组件是包含其他控件和图像的面板。Delphi使这变得非常简单,因为您总是同时使用控件和映像,这意味着您只需要保留一个数组(并实例化一个类并设置其属性)。肯,我只是不太确定我现在是否想这么做。我正在编写的应用程序实际上是一种学习体验。如果目前还没有中间方法,我将采用我将要采用的糟糕的草率方法。如果我作为类/组件进行命名/寻址,会有任何复杂之处吗?我现在正在工作,正在考虑这件事。这似乎并不太难,如果我能做到这一点,那么这样做唯一的好处就是。没有。:-)除了需要将图像引用为
MyPanel.image
而不是
Image1
,这应该不是问题。只需记住在面板的构造函数中创建面板的所有子组件,并使面板成为
所有者
(以及它所包含的任何可视组件的
父级
)。这真的不难;这是Delphi最强大的功能之一。你建议的好地方是Brian可以在设计时制作框架,这使得它易于构建和维护+1(当然,您可以使用任何组件组合来实现这一点,但TFrame似乎特别适合这样做)感谢您的建议。我不是100%确定这次我会尝试,但我肯定会在将来记住它。很高兴看到你和其他专业人士仍然在帮助各个级别的人。即使是像我这样的人。