Delphi 首次使用TListView和TTreeView不会显示数据

Delphi 首次使用TListView和TTreeView不会显示数据,delphi,firemonkey,delphi-xe6,Delphi,Firemonkey,Delphi Xe6,我的应用程序中只有一个表单,我在其中插入了一个框架,以相应地执行用户操作 此表单插入到TScrollBox中,因为它的宽度有时大于屏幕/窗口 我在框架上有一个或多个tListView,还有许多TEDIT 运行应用程序并打开任何帧时,一个或多个TListView未填充。通过调试,我看到数据是从SQL中提取的。TEDIT已填写完毕。移动SQL游标会相应地更新所有TEDIT 关闭此帧并再次打开(或任何其他),然后开始在TListView上显示数据 我没有发现任何有意义的关联。显然缺少某种初始化。并非所

我的应用程序中只有一个表单,我在其中插入了一个框架,以相应地执行用户操作

此表单插入到TScrollBox中,因为它的宽度有时大于屏幕/窗口

我在框架上有一个或多个tListView,还有许多TEDIT

运行应用程序并打开任何帧时,一个或多个TListView未填充。通过调试,我看到数据是从SQL中提取的。TEDIT已填写完毕。移动SQL游标会相应地更新所有TEDIT

关闭此帧并再次打开(或任何其他),然后开始在TListView上显示数据

我没有发现任何有意义的关联。显然缺少某种初始化。并非所有的TListView都是空的,在一些帧中,我有4或5个,其中2个显示数据,其他的是空的

编辑:我已经更改了这个问题的标题,因为我注意到这个问题似乎与LiveBindings没有主要关系,但似乎与其他列表上TListView的某种初始化有关

我做了一个新的测试,发现TTreeView也有同样的问题,只在第一次显示完全无序的数据。如果我之前打开了其他东西,它工作正常,如果我用TTreeview关闭并打开框架,第二次就可以了

在这张图中,我显示了TreeView混乱:


它不应该有所有的空间和一些节点重叠

我的应用程序只有一个表单,所有内容都是作为TScrollBox父级创建的帧

使用Delphi XE5时,TScrollBox的问题很多,我不得不升级到XE6

很多东西都是从XE6开始工作的,但是TScrollBox仍然有一个小问题:

在插入帧并将其作为滚动的父对象后,需要调用ApplyStyleLookup进行初始化。这使得TListView和TTreeView从第一次开始就可以正常工作

constructor TFrameBase.Create(AOwner: TComponent);
begin
  inherited;

  Align := TAlignLayout.Left;

  Parent := AOwner as TFmxObject;

  if (AOwner is TScrollBox) then
    (AOwner as TScrollBox).ApplyStyleLookup;
end;

这是我的框架构造器。这解决了所有问题。

为了获得帮助,我们需要能够诊断问题。这需要你提供更多的信息。“MCVE怎么样?”大卫·费弗南我无法成功地为自己创建MCVE。我希望有人有同样的经验,并找到了解决方案,并希望与大家分享。有许多控件、表和livebinding。我还不能孤立。但由于Firemonkey过去充满了这些讨厌的虫子,我想问一下。没有什么比一天开始时投反对票更重要的了:)