為何在設計時期所設的值,在啟始執行時期時會遺失掉? |
答題得分者是:Justmade
|
firefall
一般會員 發表:22 回覆:36 積分:11 註冊:2002-05-14 發送簡訊給我 |
小弟做了一個新的元件,包含了Table 與DataSource,小弟在設計時期時期,將各個屬性設定好(TableName、DataBaseName、Active),但執行時卻無反應,
小弟在測試時把DbGrid的DaTaSource指向元件時發現,元件的TableName、DataBaseName,名稱皆存在,但將元件裡的Table設為Active時出現"missing
TableName Property "?? why,請知道的大大指點。 TTableModify = class(Tcomponent)
private
FMainDataSource: TDataSource;
FMainData: TTable;
...
public
Procedure SetMainData(Value:TTable);
Procedure SetMainDataSource(Value:TDataSource);
constructor Create(AOwner: TComponent);Override;
destructor Destroy;Override;
{ Public declarations }
published
Property MainData:TTable Read FMainData write SetMainData;
Property MainDataSource:TDataSource Read FMainDataSource write SetMainDataSource;
{ Published declarations }
end; procedure TTableModify.SetDataBaseName(Value: String);
begin
FDataBaseName:=Value;
end; procedure TTableModify.SetMainData(Value: TTable);
begin
FMainData.Assign(Value);
end;
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
你的設計好像有點怪... 1. FMainData.Assign(Value); 是從 Value 複制一個 Instance 到你的 FMainData 之後與原 Table 沒有關係而且若你沒有設定 SubComponent 的話這個內置 TTable 的資料是不會被儲存的
一般來說若你想將這個元件的 MainData 連結至選定的 TTable 直接用
FMainData := Value; 就好 2. SetDataBaseName 時不是應也設定 FMainData 的 DatabaseName 嗎 ? 3. TTableModify 是 TComponent 又不是 DataSources 的後代 甚可以指級 DBGrid 的 DataSources? 不過你沒說清楚你的用途及看不到其他程式碼所以比較難下定論。
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |