gpt4 book ai didi

delphi - 动态访问 Delphi 组件中的属性

转载 作者:行者123 更新时间:2023-12-03 14:55:36 28 4
gpt4 key购买 nike

我使用的是 Delphi 5,我们有一种方法可以根据数据库表的内容动态创建某些控件(我们主要创建 TButton),并在单击这些控件时采取操作。这使我们能够向表单添加简单的控件,而无需重新编译应用程序。

我想知道是否可以根据字符串中包含的属性名称来设置组件的属性,以便我们可以设置更多选项。

伪代码:

Comp := TButton.Create(Self);

// Something like this:
Comp.GetProperty('Left').AsInteger := 100;
// Or this:
Comp.SetProperty('Left', 100);

这可能吗?

最佳答案

您必须使用 Delphi 的运行时类型信息功能来执行此操作:

此博客准确描述了您正在尝试执行的操作:Run-Time Type Information In Delphi - Can It Do Anything For You?

基本上,您必须使用 GetPropInfo 获取属性信息,然后使用 SetOrdProp 设置值。

uses TypInfo;

var
PropInfo: PPropInfo;
begin
PropInfo := GetPropInfo(Comp.ClassInfo, 'Left');
if Assigned(PropInfo) then
SetOrdProp(Comp, PropInfo, 100);
end;

这不像您的伪代码那么简洁,但它仍然可以完成工作。此外,它会因其他内容而变得更加复杂,例如数组属性。

关于delphi - 动态访问 Delphi 组件中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2071247/

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