2017-04-17 155 views
-2

我們可以擴展任何類,所以:從另一個單元擴展類

TColumn = class(FMX.Grid.TColumn) 
private 
    FId: Integer; 
public 
    property Id: Integer read FId write FId; 
end; 

而且這是工作在我們自己的單位不錯,但是如果我們試試這個(Grid: TGrid表格上):

procedure ChangeId; 
var 
    Col: TColumn; 
begin 
    Col := Grid.Columns[0]; 
    Col.Id := 0; 
end; 

我們得到了錯誤:

[dcc32 Error] uHelpers.pas(136): E2010 Incompatible types:
'uHelpers.TColumn' and 'FMX.Grid.TColumn'

任何方式擴大FMX.Grid.TColumn類,使程序ChangeId是否正確?

+0

你的問題是作用域之一。爲什麼在已經有FMX.Grid.TColumn的情況下調用你的類TColumn?你期望編譯器能夠區分它嗎?叫你類TMyColumn。現在Grid在什麼時候獲得了TMyColumns的集合?它從來沒有。這是一個完全不同的問題! – nolaspeaker

+0

我明白這個問題和我關於這個問題的問題。這完全不可能? –

+1

這是可能的。只是以不同的方式做。 [添加一個TCombobox列到Firemonkey TGrid](http://stackoverflow.com/questions/32920219) – nolaspeaker

回答

-1

這是可能的,但我們應該手動在運行時添加列:

TIdColumn = class(FMX.Grid.TColumn) 
private 
    FId: Integer; 
public 
    property Id: Integer read FId write FId; 
end; 

Grid.AddObject(TIdColumn.Create(Grid)); 

procedure ChangeId; 
var 
    Col: TIdColumn; 
begin 
    Col := Grid.Columns[0] as TIdColumn; 
    Col.Id := 0; 
end; 
相關問題