Lazarus Pascal:如何调试 Widget Set(多行 Caption/Hint 问题)

Lazarus Pascal: How to debug a Widget Set (multiline Caption/Hint issue)

我不是最高级的程序员,但喜欢与 Lazarus 一起工作。

不幸的是,时不时会出现问题或错误(例如 this one, bugreport),我想帮忙解决一下,看看我是否可以尝试自己调试并提供一个可能 "fix".

我的问题是:如何调试小部件集或 Object Inspector?

简短原因: 当我在 Windows 或 Linux 下输入多行标题或提示时,一切正常。然而,在 MacOS X (Carbon) 下,换行符被 Object Inspector 或 widget set 删除,我不知道去哪里尝试修复这个问题。

凭什么我能弄清楚自己; 我已将问题缩小到 Object Inspector 或 Carbon 小部件集。手动编辑表单 (lfm) 有效,在运行时在代码中执行此操作,并且 multi-line 标题或提示在 Windows 和 Linux 下工作正常。 所以我怀疑 Object Inspector 使用的 Carbon widget-set 做错了什么。

非常感谢任何帮助我入门的人。

如果这个问题不合适或不够具体,我深表歉意 - 我只是想寻求调试此问题的帮助。

IDE 对象检查器实际上是 TTIPropertyGrid 的高级版本。 如果你想调试它,你可以处理包并在一个简单的项目中测试它:

然后添加一个简单的处理程序来测试项目表单上的检查器:

procedure TForm1.FormCreate(Sender: TObject);
begin
  TIPropertyGrid1.TIObject := self;
end;

当您修改包 RunTimeTypeInfoControls 中的源代码时,更改不会在 IDE 中可见,而是在 运行-时间,在您的示例项目中(包将自动重新编译)。

如果错误来自 属性 编辑器本身(可能是 TStringsPropertyEditor )。

为了避免任何费力的操作,您可以在匹配编辑器的副本上测试您的更改 class 并将其注册到测试项目的初始化部分以替换默认值,也许 有问题,版本。