是否可以在運行時在對象內創建和使用TClientDataSet?是否可以在非可視化單元或類對象內創建一個使用TClientDataSet?
我喜歡在我的表中進行一些更改,並將所有應用程序同時以緩存方式存儲,而TClientDataSet則允許我這樣做。知道我什麼時候想做這個,我必須建立一個TForm。
可能嗎?
UPDATE
是否可以使用,怎麼樣,沒有的TDataSetProvider,沒有TSQLQuery? 因爲我試過了,它給了我一個錯誤沒有提供者!
是否可以在運行時在對象內創建和使用TClientDataSet?是否可以在非可視化單元或類對象內創建一個使用TClientDataSet?
我喜歡在我的表中進行一些更改,並將所有應用程序同時以緩存方式存儲,而TClientDataSet則允許我這樣做。知道我什麼時候想做這個,我必須建立一個TForm。
可能嗎?
UPDATE
是否可以使用,怎麼樣,沒有的TDataSetProvider,沒有TSQLQuery? 因爲我試過了,它給了我一個錯誤沒有提供者!
組件都只是類,你同樣可以使用它們:
procedure TMyObject.DoSomeDBStuff;
var
localClientDataset: TClientDataset;
begin
localClientDataset := TClientDataset.Create();
try
finally
localClientDataset.Free;
end;
end;
你也可以做一個ClientDataSet的屬性,如果你喜歡:
type
TMyObject = class
private
FClientDB: TClientDataset;
published
property Dataset: TClientDataset read FClientDB;
end;
一些可視組件可能需要一個視覺父儘管如此,但對於TClientDataset應該沒有這樣的要求。
是的,你可以做,TClientDataSet是非可視化組件,而不是隻用於表單內部。
您可以創建一個單元(.pas沒有.dfm),它的類和方法可以使用TClientDataSet並將其作爲參數返回。
當然,你可以做到這一點。但是你也可以使用數據模塊進行考慮。您可以將不可見的組件拖放到數據模塊,並使用對象檢查器設置值。
您可以在運行時創建TClientDataset。 (請參閱Vegar的答案。)關於提供者問題,解決方案是爲其定義字段,然後使用CreateDataset方法(而不是Open方法!)打開數據集,然後它將工作。