2009-02-20 36 views
1

是否可以在運行時在對象內創建和使用TClientDataSet?是否可以在非可視化單元或類對象內創建一個使用TClientDataSet?

我喜歡在我的表中進行一些更改,並將所有應用程序同時以緩存方式存儲,而TClientDataSet則允許我這樣做。知道我什麼時候想做這個,我必須建立一個TForm。

可能嗎?

UPDATE

是否可以使用,怎麼樣,沒有的TDataSetProvider,沒有TSQLQuery? 因爲我試過了,它給了我一個錯誤沒有提供者!

回答

5

組件都只是類,你同樣可以使用它們:

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應該沒有這樣的要求。

1

是的,你可以做,TClientDataSet是非可視化組件,而不是隻用於表單內部。

您可以創建一個單元(.pas沒有.dfm),它的類和方法可以使用TClientDataSet並將其作爲參數返回。

2

當然,你可以做到這一點。但是你也可以使用數據模塊進行考慮。您可以將不可見的組件拖放到數據模塊,並使用對象檢查器設置值。

3

您可以在運行時創建TClientDataset。 (請參閱Vegar的答案。)關於提供者問題,解決方案是爲其定義字段,然後使用CreateDataset方法(而不是Open方法!)打開數據集,然後它將工作。

相關問題