在框架上放置TMultiview控件并尝试在IDE中重新打开该框架时,会导致AV无法查看。

这是一个已知问题,已报告给EMB。该问题已报告到此处的新质量门户:https://quality.embarcadero.com/browse/RSP-9621。请注意,您需要登录才能查看此报告。对于那些没有账户的人,截至撰写本文时,报告如下所示:

有谁知道解决方法,或者可以提出解决方法?

最佳答案

有一些解决方法可以使您查看和编辑该框架,但是它涉及对.pas和.fmx文件的一些手动处理

假设您创建了带有TMultiView组件的框架。

您的.pas文件如下所示:

unit Unit3;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls, FMX.MultiView;

type
  TFrame3 = class(TFrame)
    MultiView1: TMultiView;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

implementation

{$R *.fmx}

end.

您的.fmx文件如下所示:
object Frame3: TFrame3
  Size.Width = 561.000000000000000000
  Size.Height = 408.000000000000000000
  Size.PlatformDefault = False
  TabOrder = 0
  object MultiView1: TMultiView
    Size.Width = 250.000000000000000000
    Size.Height = 408.000000000000000000
    Size.PlatformDefault = False
    TabOrder = 0
  end
end

为了成功打开框架,您必须在某些编辑器(如记事本)中打开两个文件。
在您的.pas文件类声明中,将TFrame替换为TForm,
  TFrame3 = class(TForm)

然后从.fmx文件中剪切出TFrame特定的属性(并将其存储在某个位置,因为完成编辑后需要将它们复制回去)
  Size.Width = 561.000000000000000000
  Size.Height = 408.000000000000000000
  Size.PlatformDefault = False
  TabOrder = 0

现在,您可以在IDE中自由打开框架(窗体),并使用它进行所需的操作。完成后,保存文件,在IDE中将其关闭,然后再次在记事本中编辑.pas和.fmx文件。
  TFrame3 = class(TFrame)

并用原始TFrame替换IDE插入的TForm特定属性
  Left = 0
  Top = 0
  ClientHeight = 480
  ClientWidth = 640
  FormFactor.Width = 320
  FormFactor.Height = 480
  FormFactor.Devices = [Desktop, iPhone, iPad]
  DesignerMasterStyle = 0

关于delphi - TMultiView on Frame导致AV,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26968283/

10-10 23:58