2015-02-09 31 views
1

我需要左移TreeViewItem.Text。我的代码导致运行时错误。Delphi XE 6 FMX TreeListVew文本margin.left导致运行时错误

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

我该如何正确编码?

+1

在运行时得到什么错误? – 2015-02-09 23:10:57

回答

0

在创建时间TextObject字段TTreeItem(和您的TVppTreeItem)是nil并访问它会导致AV错误。您应该将修改TextObject的代码移动到ApplyStyle方法,其中TextObject将从Style初始化。由于无法保证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; 
+0

谢谢Dalija Prasnikar。 – vppavlov 2015-02-13 08:58:15