Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.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 像TPageControl那样编辑属性_Delphi_Properties_Design Time_Property Editor - Fatal编程技术网

Delphi 像TPageControl那样编辑属性

Delphi 像TPageControl那样编辑属性,delphi,properties,design-time,property-editor,Delphi,Properties,Design Time,Property Editor,我尝试了各种Delphi属性编辑器,甚至制作了一个编辑器作为单独的窗口 现在,我想开发一个视觉控件,其中包含多种复杂的显示项,如下所示: ┌─────────────────────────┐ │ Parent control │ │ ┌─────────────────────┐ │ │ │ Display Item 1 │ │ │ ├─────────────────────┤ │ │ │ Display Item 2 │ │ │ ├──────────

我尝试了各种Delphi属性编辑器,甚至制作了一个编辑器作为单独的窗口

现在,我想开发一个视觉控件,其中包含多种复杂的显示项,如下所示:

┌─────────────────────────┐
│    Parent control       │
│ ┌─────────────────────┐ │
│ │   Display Item 1    │ │
│ ├─────────────────────┤ │
│ │   Display Item 2    │ │
│ ├─────────────────────┤ │
│ │   Display Item 3    │ │
│ ├─────────────────────┤ │
│ │   Display Item 4    │ │
│ └─────────────────────┘ │
└─────────────────────────┘
并希望在对象检查器中编辑每个显示项的属性,就像TPageControl及其TTabSheets所做的那样

这意味着我单击了一些显示项,其属性显示在对象检查器中,准备编辑。我单击父控件,可以在对象检查器中编辑它的属性

如何做到这一点?请给我一个线索


另外,我考虑过TDBGrid属性编辑器,但它的行为不同:当我在“对象检查器列编辑器”窗口中单击“列”属性时,当我在其中选择某个项目时,我可以编辑它的属性。我希望在没有中间窗口的情况下执行此操作。

您可以查看TDBGrid控件的源代码:它的列基本上是网格控件本身拥有的集合中的项。Tabsheet是一个单独的对象,具有自己的属性-只是页面控件管理子对象及其属性的添加和删除显而易见。当您单击选项卡工作表时,仅因为您单击了该对象,就将其激活。在控件的上下文中,每个显示行都将是一个具有自己属性的对象。我认为,不知何故,您会想象选项卡页的属性是TPageControl的子属性,但事实并非如此。它在哪些方面“表现不同”?IDE显示OI中的列,可以在其中对它们进行单独编辑,那么您想要做的事情有何不同呢?我认为这里没有问题。只要您使用默认设置保持控件,并且不让它成为子组件(通过
SetSubComponent
),您就应该实现您想要的。所以,谢谢各位。您的建议非常有用,但我将在周一继续,并将查看SetSubComponent:)