GVKun编程网logo

delphi – 在IDE Object Inspector中动态显示/隐藏属性?(delphi隐藏窗口)

9

针对delphi–在IDEObjectInspector中动态显示/隐藏属性?和delphi隐藏窗口这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展c–delete(Object)等效于调用

针对delphi – 在IDE Object Inspector中动态显示/隐藏属性?delphi隐藏窗口这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展c – delete(Object)等效于调用Object .~Object()、Delphi 2009 泛型容器单元(Generics.Collections)[5]: TObject... 系列、delphi – TObject包含哪些数据?、delphi – 为什么TObject.AfterConstruction和BeforeConstruction具有公共可见性?等相关知识,希望可以帮助到你。

本文目录一览:

delphi – 在IDE Object Inspector中动态显示/隐藏属性?(delphi隐藏窗口)

delphi – 在IDE Object Inspector中动态显示/隐藏属性?(delphi隐藏窗口)

我在使用Delhpi 10 Seattle时遇到了一个有趣的功能.在Firedac中,特别是TFDConnection组件,Params属性具有一些巫术魔法,它可以动态显示和隐藏IDE中的属性,具体取决于另一个特定属性的值. (我不知道自从我刚开始使用Firedac以来已经有多长时间了).在TFDConnection.Params中更改DriverID属性时,Params中的其余属性将显示在IDE Object Inspector中,以便能够指定特定于驱动程序的属性.

现在我已经研究了它是如何工作的,它是一堆接口定义,来自IFDStanDeFinition.我无法弄清楚它是如何在IDE中实际执行的,除了有一个TStringList涉及利用名称/值对功能.

我希望在我自己的组件中实现相同的东西,特别是TCollectionItem有一个属性ActionType,它是一个Enum类型.我想动态显示/隐藏属性,具体取决于为该属性选择的值.

如何在我自己的组件集合项中的IDE Object Inspector中实现显示/隐藏属性的相同功能?

另外,我担心答案的一部分是它需要所有的字符串值,根据你如何通过代码与这个Params属性进行交互来判断.

解决方法

编写属性编辑器,并在 GetAttributes返回时包含 paVolatileSubProperties属性.其余的是关于释放旧的子属性实例,并替换为新的子属性实例(但它们可以是任何 TPersistent类的后代,因此它不依赖于字符串列表类).

c – delete(Object)等效于调用Object .~Object()

c – delete(Object)等效于调用Object .~Object()

我有几个类,我连接到 AngelScript引擎.这个引擎使用有趣的方式来分配对象:它分配所需的内存量(可能使用malloc()),当作者建议使用这样的结构在这个内存中创建对象时:
static void Constructor(ObjectType *thisPointer)
{
    new(thisPointer) ObjectType();
}

和这样的代码来销毁对象:

static void Destructor(ObjectType *thisPointer)
{
     thisPointer->~ObjectType();
}

我有几个问题:

>这种方式使用析构函数是否正确? (Eclipse判断这是一个错误)据我所知,这段代码应该调用析构函数而不释放内存(调用free())
>是否可以使用delete(thisPointer)(或类似的东西)而不是这种结构,它是否相同? (至少这段代码在编译和运行时没有错误)
>还有其他方法可以在不释放内存的情况下调用析构函数吗?

先感谢您.

解决方法

Is it correct way to use destructor this way?

是.您使用placement-new就地构造了对象,因此必须使用显式析构函数调用来销毁它(假设它具有非平凡的析构函数).

Is it possible to use delete(thisPointer) (or something like it) instead of this construction and is it will be equivalent?

删除号将尝试使用operator delete()将内存释放到免费存储区;这只有在使用普通的新表达式(或者可能是显式使用operator new())时才有效.

Is there other ways to call destructor without deallocating memory?

并不是的.调用析构函数当然是调用析构函数的最清晰,最简单的方法.

Delphi 2009 泛型容器单元(Generics.Collections)[5]: TObject...<T> 系列

Delphi 2009 泛型容器单元(Generics.Collections)[5]: TObject... 系列

总结

以上是小编为你收集整理的 系列">Delphi 2009 泛型容器单元(Generics.Collections)[5]: TObject...<T> 系列全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

delphi – TObject包含哪些数据?

delphi – TObject包含哪些数据?

TObject.InstanceSize返回8,但TObject没有声明任何数据成员.根据TObject.Classtype的实现,前4个字节可以解释为指向对象的TClass元数据的指针.任何人都知道其他4个字节的开销是什么?

编辑:显然这是D2009特有的.在旧版本中,它只有4个字节.

解决方法

在Delphi 2009中,有 the ability to have a reference to a synchronization monitor.请参阅:
class function TMonitor.GetFieldAddress(AObject: TObject): PPMonitor;
class function TMonitor.GetMonitor(AObject: TObject): PMonitor;

…在System.pas中

此外,仍然有一个指向VMT的指针. (虚拟方法表.)From Delphi in a Nutshell:

The TObject class declares several methods and one special,hidden field to store a reference to the object’s class. This hidden field points to the class’s virtual method table (VMT). Every class has a unique VMT and all objects of that class share the class’s VMT.

delphi – 为什么TObject.AfterConstruction和BeforeConstruction具有公共可见性?

delphi – 为什么TObject.AfterConstruction和BeforeConstruction具有公共可见性?

今天,当我不得不重写TObject的BeforeConstruction方法时,我想到了一个非常简单的问题:

为什么TObject方法AfterConstruction和BeforeConstruction具有公共可见性?

我希望他们受到保护.
他们不是的原因是什么?

我无法想象在没有调用该类的构造函数或析构函数的情况下调用AfterConstruction或BeforeConstruction的有效目的.你呢?

解决方法

之前的一个问题是为什么其他一些方法是公开的而不是受保护的,the answer就是它们在某些时候需要被没有附加到类的实用函数调用.

TObject.AfterConstruction只由这样的实用函数System._AfterConstruction调用.如果它(严格)受到保护,那么该独立函数将无法访问该方法.

TObject的所有方法都是公开的.*我们可能找到理由解释为什么每个方法都是公开的,但在某个时刻,我怀疑任何给定方法公开的根本原因是所有其他方法也是公开的.

一旦Delphi与这些方法公开发布,其可见性的任何降低都有可能破坏现有代码.

*由于某些原因,Getdisposed和Checkdisposed除外.与TObject的大部分相比,它们相对较新.

今天关于delphi – 在IDE Object Inspector中动态显示/隐藏属性?delphi隐藏窗口的分享就到这里,希望大家有所收获,若想了解更多关于c – delete(Object)等效于调用Object .~Object()、Delphi 2009 泛型容器单元(Generics.Collections)[5]: TObject... 系列、delphi – TObject包含哪些数据?、delphi – 为什么TObject.AfterConstruction和BeforeConstruction具有公共可见性?等相关知识,可以在本站进行查询。

本文标签: