2015-02-09 54 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