Ist es möglich, eine Verwendung TClientDataSet in nicht visuellen Einheit oder innerhalb einer Klasse-Objekt zu erstellen?
-
05-09-2019 - |
Frage
Ist es möglich, eine TClientDataSet innerhalb eines Objekts zur Laufzeit zu erstellen und verwenden?
Ich mag auf einige Veränderungen in meinem Tisch machen und die habe alle zur gleichen Zeit im Cache wie Art und Weise angewandt und TClientDataSet läßt mich das tun. Wissen Sie, wenn ich dies tun, möchte ich eine TForm zu bauen.
Ist es möglich?
UPDATE
Kann es verwendet werden, und wie, ohne TDataSetProvider und kein TSQLQuery? Weil ich es versuchte, und es gab mir einen Fehler keinen Provider !!
Lösung
Komponenten sind nur Klassen, und Sie können sie verwenden ebenfalls:
procedure TMyObject.DoSomeDBStuff;
var
localClientDataset: TClientDataset;
begin
localClientDataset := TClientDataset.Create( );
try
finally
localClientDataset.Free;
end;
end;
Sie können auch eine ClientDataSet-Eigenschaft, wenn Sie mögen:
type
TMyObject = class
private
FClientDB: TClientDataset;
published
property Dataset: TClientDataset read FClientDB;
end;
Einige visuellen Komponenten ein visuell Eltern erfordern zwar, aber für TClientDataset sollte es keine solche Anforderung sein.
Andere Tipps
Sie können eine TClientDataset zur Laufzeit erstellen. (Siehe Vegar Antwort.) Was die Anbieter Problem, die Lösung Felder ist für sie zu definieren, öffnen Sie dann den Datensatz mit der CreateDataSet Methode (nicht die Open-Methode!) Und dann wird es funktionieren.
Natürlich können Sie das tun. Aber Sie können auch prüfen, ein Datenmodul. Sie können nicht sichtbare Komponenten zu einem Datenmodul ziehen und den Objektinspektor die Werte setzen.
Ja, Sie tun können, TClientDataSet ist nicht visuelle Komponente, und zwar nicht nur innerhalb Formen verwendet werden, entworfen.
Sie können eine Einheit (.pas ohne .dfm) bauen, als Klassen und Methoden, die TClientDataSet verwendet und zurückgeben kann es auch als Parameter.