FMX-TFrame已注册为组件错误

时间:2018-08-28 14:33:16

标签: listview delphi firemonkey

我有一个注册为组件的框架:

RegisterComponents('Page', [TMyFrame]);

在这个帧上,我有:

  • 一个按钮;
  • 一个ListView;
  • ClientDataSet。

使用实时绑定将列表视图项绑定到ClientDataSet字段。

如果我将此框架从工具选项板放到表单上,则一切正常。 一些错误发生的原因:

  1. 如果我从dfm中删除帧,则会发生访问冲突。 (析构函数仅调用继承的Destroy)。
  2. 如果我将属性“ ClientDSActive”设置为true(它链接到ClientDataSet的Active属性):
      设计时,ListView显示与   ClientDataSet记录;
      运行时,ClientDataSet和ListView都有记录,但是ListView看起来为空。
  3. 单击按钮时,按钮的onClick事件处理程序不会触发。
    如果我创建框架运行时,则一切正常。

构造函数和析构函数代码为:

constructor TmyFrame.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  ClientDSActive := False;
end;

destructor TmyFrame.Destroy;
begin  
  inherited Destroy;
end;

框架所在的表单的.dfm为:

  object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 480
  ClientWidth = 640
  FormFactor.Width = 320
  FormFactor.Height = 480
  FormFactor.Devices = [Desktop]
  DesignerMasterStyle = 0
  object TabControl1: TTabControl
    Align = Client
    Size.Width = 640.000000000000000000
    Size.Height = 480.000000000000000000
    Size.PlatformDefault = False
    TabIndex = 0
    TabOrder = 0
    TabPosition = PlatformDefault
    Sizes = (
      640s
      454s)
    object tsFrame: TTabItem
      CustomIcon = <
        item
        end>
      IsSelected = True
      Size.Width = 62.000000000000000000
      Size.Height = 26.000000000000000000
      Size.PlatformDefault = False
      StyleLookup = ''
      TabOrder = 0
      Text = 'tsFrame'
      ExplicitSize.cx = 62.000000000000000000
      ExplicitSize.cy = 26.000000000000000000
      object MyFrame1: TMyFrame
        Align = Client
        Size.Width = 640.000000000000000000
        Size.Height = 454.000000000000000000
        Size.PlatformDefault = False
        ClientDSActive = False
        object pnlProdOrder: TPanel
          Align = Client
          Margins.Right = 2.000000000000000000
          Size.Width = 638.000000000000000000
          Size.Height = 454.000000000000000000
          Size.PlatformDefault = False
          TabOrder = 0
          object lvProdOrders: TListView
            ItemAppearanceClassName = 'TDynamicAppearance'
            ItemEditAppearanceClassName = 'TDynamicAppearance'
            HeaderAppearanceClassName = 'TListHeaderObjects'
            FooterAppearanceClassName = 'TListHeaderObjects'
            AlternatingColors = True
            ItemSpaces.Left = 3.000000000000000000
            ItemSpaces.Right = 6.000000000000000000
            Align = Client
            CanFocus = False
            Margins.Left = 5.000000000000000000
            Margins.Top = 5.000000000000000000
            Margins.Right = 5.000000000000000000
            Margins.Bottom = 5.000000000000000000
            Size.Width = 628.000000000000000000
            Size.Height = 396.000000000000000000
            Size.PlatformDefault = False
            TabOrder = 0
            ItemAppearance.ItemHeight = 70
            ItemAppearance.ItemEditHeight = 60
            ItemAppearanceObjects.ItemObjects.ObjectsCollection = <
              item
                AppearanceObjectName = 'ID_PROD_ORDER'
                AppearanceClassName = 'TTextObjectAppearance'
                Appearance.TextAlign = Leading
                Appearance.TextVertAlign = Trailing
                Appearance.Width = 119.000000000000000000
                Appearance.Height = 15.000000000000000000
                Appearance.PlaceOffset.Y = 16.000000000000000000
              end
              item
                AppearanceObjectName = 'ProdDescr'
                AppearanceClassName = 'TTextObjectAppearance'
                Appearance.TextAlign = Leading
                Appearance.TextVertAlign = Leading
                Appearance.WordWrap = True
                Appearance.Trimming = Character
                Appearance.Width = 190.000000000000000000
                Appearance.Height = 54.000000000000000000
                Appearance.PlaceOffset.X = 124.000000000000000000
                Appearance.PlaceOffset.Y = 16.000000000000000000
              end
              item
                AppearanceObjectName = 'Quantity'
                AppearanceClassName = 'TTextObjectAppearance'
                Appearance.TextAlign = Leading
                Appearance.TextVertAlign = Trailing
                Appearance.Width = 120.000000000000000000
                Appearance.Height = 17.000000000000000000
                Appearance.PlaceOffset.Y = 51.000000000000000000
              end
              item
                AppearanceObjectName = 'lblID'
                AppearanceClassName = 'TTextObjectAppearance'
                Appearance.Font.StyleExt = {00070000000000000004000000}
                Appearance.TextAlign = Leading
                Appearance.TextVertAlign = Trailing
                Appearance.Width = 119.000000000000000000
                Appearance.Height = 17.000000000000000000
              end
              item
                AppearanceObjectName = 'lblqty'
                AppearanceClassName = 'TTextObjectAppearance'
                Appearance.Font.StyleExt = {00070000000000000004000000}
                Appearance.TextAlign = Leading
                Appearance.TextVertAlign = Trailing
                Appearance.Width = 120.000000000000000000
                Appearance.Height = 18.000000000000000000
                Appearance.PlaceOffset.Y = 34.000000000000000000
              end
              item
                AppearanceObjectName = 'lblDescr'
                AppearanceClassName = 'TTextObjectAppearance'
                Appearance.Font.StyleExt = {00070000000000000004000000}
                Appearance.TextAlign = Leading
                Appearance.TextVertAlign = Trailing
                Appearance.Width = 190.000000000000000000
                Appearance.Height = 17.000000000000000000
                Appearance.PlaceOffset.X = 124.000000000000000000
              end>
            ItemAppearanceObjects.ItemEditObjects.ObjectsCollection = <
              item
                AppearanceObjectName = 'Text1'
                AppearanceClassName = 'TTextObjectAppearance'
              end>
            CanSwipeDelete = False
            NativeOptions = [Styled]
          end
          object pnlProdOrderTitle: TPanel
            Align = Top
            Size.Width = 638.000000000000000000
            Size.Height = 48.000000000000000000
            Size.PlatformDefault = False
            TabOrder = 1
            object lblProdOrders: TLabel
              Align = Client
              StyledSettings = [Family, Style, FontColor]
              Size.Width = 638.000000000000000000
              Size.Height = 48.000000000000000000
              Size.PlatformDefault = False
              TextSettings.Font.Size = 20.000000000000000000
              TextSettings.Font.StyleExt = {00070000000000000004000000}
              TextSettings.HorzAlign = Center
              Text = 'Production orders'
              TabOrder = 0
              object Rectangle1: TRectangle
                Align = Right
                Fill.Color = claAliceblue
                Margins.Left = 3.000000000000000000
                Margins.Top = 3.000000000000000000
                Margins.Right = 3.000000000000000000
                Position.X = 590.000000000000000000
                Position.Y = 3.000000000000000000
                Size.Width = 45.000000000000000000
                Size.Height = 45.000000000000000000
                Size.PlatformDefault = False
                Stroke.Color = claSlategray
                Stroke.Thickness = 2.000000000000000000
                Stroke.Join = Bevel
                XRadius = 10.000000000000000000
                YRadius = 10.000000000000000000
                object btnRefreshProdOrders: TSpeedButton
                  Align = Client
                  IconTintColor = claOrangered
                  Size.Width = 45.000000000000000000
                  Size.Height = 45.000000000000000000
                  Size.PlatformDefault = False
                  Text = 'btnRefreshProdOrders'
                end
              end
            end
          end
        end
      end
    end
  end
end

我该如何解决这些问题?

0 个答案:

没有答案