帧上的TMultiView会导致AV

时间:2014-11-17 08:19:09

标签: delphi delphi-xe7

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

这是一个已知问题,并向EMB报告。此问题已在此处向新质量门户网站报告:https://quality.embarcadero.com/browse/RSP-9621。请注意,您需要登录才能查看此报告。对于那些没有帐户的人,以下是截至编写本报告时的情况:

enter image description here

是否有人知道某种解决方法,或者可以提出解决方法?

2 个答案:

答案 0 :(得分:3)

有一种解决方法可以让您查看和编辑该框架,但它涉及对.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文件类声明

中用TForm替换TFrame
  TFrame3 = class(TForm)

然后从.fmx文件中删除TFrame特定属性(并将其存储在某处,因为在完成编辑后需要将它们复制回来)

  Size.Width = 561.000000000000000000
  Size.Height = 408.000000000000000000
  Size.PlatformDefault = False
  TabOrder = 0

现在,您可以在IDE中自由打开Frame(Form),并随心所欲地执行任何操作。完成后,保存文件,在IDE中关闭它们,然后再次在记事本中编辑.pas和.fmx文件。

  TFrame3 = class(TFrame)

并替换IDE插入的TForm特定属性与原始TFrame

  Left = 0
  Top = 0
  ClientHeight = 480
  ClientWidth = 640
  FormFactor.Width = 320
  FormFactor.Height = 480
  FormFactor.Devices = [Desktop, iPhone, iPad]
  DesignerMasterStyle = 0

答案 1 :(得分:0)

我已经处理了这个问题大约一个星期了,直到今天我的XE7安装可能已经损坏。与此同时,我解决这个问题的方法是切割 TMultiView及其.FMX文件中的所有子项,在IDE中打开框架,以及。唯一的缺点是你必须再次链接事件。