【问题标题】:Delphi XE 6 FMX TreeListVew text margin.left causes an runtime errorDelphi XE 6 FMX TreeListVew text margin.left 导致运行时错误
【发布时间】:2015-02-09 23:05:56
【问题描述】:

我需要将 TreeViewItem.Text 移到左边。我的代码导致运行时错误。

constructor TVppTreeViewItem.Create(AOwner: TComponent);
 var
 c:TTextControl;
begin
  inherited;
  self.Text:='test';
  self.TextObject.Align:=TAlignLayout.Left;
  self.TextObject.Margins.Left:=50;
end;

如何正确编码?

【问题讨论】:

  • 您在运行时遇到什么错误?

标签: delphi firemonkey delphi-xe6


【解决方案1】:

在创建时TTreeItem(和您的TVppTreeItem)的TextObject 字段是nil,访问它会导致 AV 错误。您应该将修改TextObject 的代码移动到ApplyStyle 方法,其中TextObject 将从样式初始化。由于无法保证 TextObject 即使在应用样式后仍然有效,所以在尝试对它进行任何操作之前,您应该检查它的 nil。

  TVppTreeViewItem = class(TTreeViewItem)
  protected
    procedure ApplyStyle; override;
  public
    constructor Create(AOwner: TComponent); override;
  end;

constructor TVppTreeViewItem.Create(AOwner: TComponent);
begin
  inherited;
  self.Text := 'test';
end;

procedure TVppTreeViewItem.ApplyStyle;
begin
  inherited;
  if Assigned(TextObject) then
    begin
      TextObject.Align := TAlignLayout.Left;
      TextObject.Margins.Left := 50;
    end;
end;

【讨论】:

  • 谢谢 Dalija Prasnikar。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-25
  • 2011-10-02
  • 1970-01-01
  • 1970-01-01
  • 2022-06-30
  • 2021-12-20
  • 1970-01-01
相关资源
最近更新 更多